Bonjour,
Envoyé par
RenardSpatial
Bonjour,
Merci pour cette analyse.
...
Enfin je me permet de signaler une erreur récurrente, la typographie nominale est « 
PostgreSQL » et non « PostGreSQL » (le g central n’est pas en majuscule).
J'assume parfaitement ce qui vous apparait comme une erreur typographique et qui est ma signature de tout temps au sujet de Post
GreSQL. Sachez que les noms n'ont pas d'orthographe précise et que PostGreSQL n'est visiblement pas une "trademark". On n'est donc pas obligé de respecter la typologie de la communauté (ou serait donc la liberté si on me l'imposait comme semble vouloir me le faire remarquer les intégristes de PG...). De plus PostGreSQL c'est la suite de InGreSQL (notez là aussi le G majuscule, que je n'utilise en principe jamais pour Ingres....) un simple jeu de mot ayant guidé le choix de PostGreSQL à l'origine PostGres (sans le SQL) qui signifie
après "gres" alors qu'avant c'était
dans "gres". C'est là sans doute mon aspect vieux con qui après 34 ans passé dans les SGBDR m'en a fait connaître l'histoire et les principaux (DB2, Oracle, Sybase SQL Server, Watcom, RDB, Gupta SQL, Informix, InterBase et bien d'autres....) pour ne plus me consacrer qu'à quelques uns (MS SQL Server, Oracle, PostGreSQL...).
Ne pas oublier le pourquoi du "Ingres"... C'est tout simplement lié à la naissance du free... En effet, Eugene Wong et Michael Stonebraker ont démarré le développement de
Ingres à temps perdu (perruque) et dont décidé de la baptisé du nom d'Ingres à cause de son
violon...
Envoyé par
RenardSpatial
Pour commencer, je n’ai pas réussi à télécharger les requêtes mentionnées au point IX : le premier lien en 1drv.ms me demande un mot de passe, le second interne à developper.com me demande d’être connecté alors que je le suis déjà.
Je viens de réinitialiser le lien OneDrive, mais je ne puis tester :
https://1drv.ms/u/s!AqvZfiQYoNpBihI4...hRZec?e=nwpcaM
Pour DVP je n'y suis pour rien, je vois avec les responsables...
Envoyé par
RenardSpatial
J’essaie de comprendre ce que je pourrais en déduire quant aux choix des futures bases de données de mes projets, et à cet effet j’aurais quelques questions. Je précise que je fais du devops mais ne suis pas DBA professionnel, ce qui pourrait expliquer quelques naïvetés dans mes questions.
Il me semble que PostgreSQL est plutôt utilisé sous Linux que sous Windows. Ne serait-il pas plus pertinent de comparer les deux SGBD sur leurs OS de prédilection ?
Cela n'aurait pas fait de remarquables différences l'écart étant déjà très important et SQL Server marchant un peu mieux (de l'ordre de 5 à 8 %) sous Linux.... Et il me semble qu'il y a pas mal de PG sous Windows...
Envoyé par
RenardSpatial
Qu’est-ce qui justifie d’avoir une configuration spécifique pour PostgreSQL mais pas pour SQL Server ?
PG est réglé lors de son installation avec des paramètres qui sous-utilisent les ressources. Les laisser tels quelle pour faire les tests aurait sévèrement handicapé PostGreSQL. SQL Server, est auto paramétré. D'une part lors de son installation avec les valeurs par défaut, d'autre part dynamiquement dans son exploitation. En particulier dans les toutes dernières versions, aucun réglage n'est strictement nécessaire pour les performances, sauf le paramétrage du "
optimize for adhoc workload" qu'il aurait été judicieux d'activer pour économiser du cache pour les requêtes unitaires. Mais avec 128 Go de RAM, c'était parfaitement inutile.
Envoyé par
RenardSpatial
Serait-il possible de savoir ce qui a guidé le choix des valeurs de configuration pour PostgreSQL (dans la logique plus que dans le détail)
Mon expérience et les documents de référence suivant :
https://wiki.postgresql.org/wiki/Tun...tgreSQL_Server
https://pgtune.leopard.in.ua/#/
...
Envoyé par
RenardSpatial
Je vois que PostgreSQL a un encodage en UTF8 mais une collation et un type de caractères qui me semble être liée à Windows (1252), ça ne pose pas de problèmes ?
Pour des requêtes de DBA, n'importe quel type de données et n'importe quel collation aurait permis la comparaison. Charge à vous de prouver le contraire, raison pour laquelle j'ai laissé les fichiers et les requêtes en libre disposition...
Envoyé par
RenardSpatial
Je ne comprends pas la pertinence de l’argument suivant :
« Nous avons dû créer une collation pour PostGreSQL pour la deuxième table, car PostGreSQL possède très peu de collations internes contrairement à SQL Server qui en a plus de 5500. », puisque PostgreSQL gère nativement à peu près toutes les collations possibles en utilisant les collations ICU
tel que défini aux chapitre 23.2.2.2 et 23.2.2.3 de la documentation – ce qui rends sa quantité de collations virtuellement infinie, ce qui est plus que les 5500 internes à SQL Server.
Oui, mais il faut les créer. Cette étape n'existe pas dans SQL Server qui les gèrent directement. De plus les collations ICU sont inexploitable comme le montre cet article car buguées...
Envoyé par
RenardSpatial
Vous donnez des moyennes mais aucune autre information, en particulier pas l’écart-type des mesures. Est-ce que les mesures sont stables ou est-ce que les temps trouvés peuvent varier d’un gros facteur (ce qui pourrait changer la conclusion) ?
Et surtout, je ne vois aucune tentative d’analyse de l’écart.
À part une seule requête pour laquelle il y a eut un écart important pour PostGreSQL, la variance est très ramassée. Je ne me souviens plus de laquelle, mais je pourrais la retrouver. Mais elle n'était pas significative dans la comparaison finale, raison pour laquelle je ne l'ai pas mentionnée dans l'article.
Envoyé par
RenardSpatial
Pourtant, ce que vous montrez là est intéressant : il semblerait que MS SQL soit sensiblement plus performant que PostgreSQL, mais sans que l’on sache quelle est la cause de cet écart. Pourtant un facteur 20 ou 30 est quelque chose d’assez énorme qui mériterait de s’y intéresser : est-ce dû aux SGBD eux-mêmes ? À un défaut de configuration ? Quels sont les facteurs limitants dans les deux cas (limitation par le CPU, mauvaise parallélisation par le SGBD, limitation par les I/O, par la bande passante mémoire, de la collation spécifique PostgreSQL…). En particulier on ne sait pas sur quel type de disques sont stockées les données, si ce sont des disques durs, l’écart est-il le même avec des SSD ? Etc.
Ces opérations sont à 95% des opérations logiques ayant très peu d'IO physiques. L'influence des disques est donc très peu significative et utiliser tel ou tel type de stockage n'aurait pas montré de différence.
Défaut de configuration, à moins que je n'ai fait une grossière erreur pour PG, je ne voit pas... (pour info j'ai mis parallel_workers à 48 mais aucune requête ne m'a montré un plan parallélisé)
Bande passante, c'est le même PC...
Ce qui est clair c'est que le parallélisme intervient pour la part la plus importante dans cette différence de performances. Depuis la version 7 datant de 1998 (22 ans donc), SQL Server fait du parallélisme massivement et de manière automatique dans toutes ses tâches, pas uniquement pour les requêtes (aucun réglage particulier à entreprendre). Les tris et donc les créations d'index sont parallélisés et peuvent utiliser tous les cœurs soit 48 dans notre test. Alors que PostGreSQL semble n'utiliser qu'un seul thread... De plus, même en paramétrant PG pour utiliser 48 cœurs, celui-ci m'a montré qu'il n'en utilisait jamais plus que 4 qui semble être actuellement une limite interne par conception...
Enfin, la R&D de Microsoft a réalisé des algorithmes internes qui semble plus efficace que ceux bien connus que l'on trouve dans la littérature des SGBDR. Ce qui explique d'autres différences... Ce sont les petits secrets jalousement gardé par les grand éditeurs de SGBDR ! Mais rassurez-vous, certains experts de MS en matière de développement de moteurs de bases de données travaillent aussi pour la version free de PostGreSQL ! (Core team : Andres Freund, Major contributor : David Rowley...)
Envoyé par
RenardSpatial
C’est dommage que votre article se soit arrêté aux chiffres bruts, sans aucune analyse ni aucune recherche de détail. En l’état, il est difficile d’en tirer quoi que ce soit de probant, et il me donne plutôt l’impression que vous vous êtes arrêté dès que vous avez obtenu des chiffres qui montrent que SQL Server est plus rapide que PostgreSQL. J’espère me tromper et que votre réponse me montrera que vous étiez de bonne foi en créant ce test.
La bonne fois, la mauvaise foi... Tout est question d’appréciation. Moi je me contente de faits. Je les rends reproductible à tout un chacun, qui peut les analyser plus en profondeur, les disséquer et en publier une analyse. mais une analyse vaut ce qu'elle vaut : c'est un point de vue d'après des faits !
Cependant ce forum est là pour effectivement compléter efficacement et intelligemment l'article que j'ai écrit... Et vos questions sont intéressantes !
A +
8 |
0 |