J'entends toujours dire que Postgres est supérieur à MySQL. Si c'est vrai, pourquoi dit-on toujours du trio Apache/PHP/MySQL qu'il est si génial ? Pourquoi pas le trio Apache/PHP/Postgres ?
Il y a plusieurs raisons à la popularité de MySQL :
- il a commencé comme un moteur tout simple et a été adopté très tôt par des sites Web pour rajouter du dynamique
- il y a une société derrière, qui aide à le promouvoir, ça compte (dès qu'il y a une nouvelle version, c'est repris sur pas mal de sites Web)
- dans le temps, MySQL était beaucoup plus rapide pour des requêtes simples comme celles d'un site Web. Je ne sais pas si ce surcroît de rapidité est toujours nécessaire (comme pour une carte graphique, atteindre 220 fps c'est pas vraiment utile).
J'utilise Apache/PHP/Postgres depuis 2 ans, et ça marche très bien. Je pense que si on veut une base de données pour stocker des choses vraiment importantes, Postgres est indispensable car il gère parfaitement les transactions et la cohérence (avec les clefs étrangères), ce que ne fait pas encore MySQL. Historiquement, Postgres se comporte très bien avec un grand nombre de connexions simultanées.
J'ai tout récemment voulu tester les différentes version de Postgres (par exemple la dernière 7.3 par rapport à la 7.0), j'ai utilisé pgbench qui est livré avec et qui simule plus ou moins un TCP-B (c'est ce qui est écrit). C'est un benchmark assez basique, qui ne remplace pas votre test pour votre besoin. A première vue, il n'y a pas de différence très significative, mais il faudrait que je refasse les tests plus rigoureusement (j'ai déjà utilisé une partition formatée avant chaque test). pgbench simule plusieurs clients en parallèle.
J'ai aussi voulu faire la comparaison Postgres 7.3.1 contre MySQL 3.23.54 (dernières versions), en portant pgbench sur MySQL. Effectivement, en utilisant des tables simples (MyISAM) et sans transactions (pgbench fait "begin; select; update; [...] ; end"), MySQL est 2 à 3 fois plus rapide. Par contre, dès que j'utilise des tables InnoDB, les performances baissent très nettement. En fait, je n'ai pas réussi à reproduire le test de pgbench car MySQL bloque lors de 2 updates simultanés sur la même rangée (deadlock).
J'ai aussi testé les procédures stockées de Postgres (toujours avec pgbench) et ça accélère énormément : selon les paramètres, entre 2 et 4 fois.
[^] # Re: Question stupide
Posté par Olivier Jeannet . En réponse à la dépêche MySQL 4.1 disponible!. Évalué à 3.
Il y a plusieurs raisons à la popularité de MySQL :
- il a commencé comme un moteur tout simple et a été adopté très tôt par des sites Web pour rajouter du dynamique
- il y a une société derrière, qui aide à le promouvoir, ça compte (dès qu'il y a une nouvelle version, c'est repris sur pas mal de sites Web)
- dans le temps, MySQL était beaucoup plus rapide pour des requêtes simples comme celles d'un site Web. Je ne sais pas si ce surcroît de rapidité est toujours nécessaire (comme pour une carte graphique, atteindre 220 fps c'est pas vraiment utile).
J'utilise Apache/PHP/Postgres depuis 2 ans, et ça marche très bien. Je pense que si on veut une base de données pour stocker des choses vraiment importantes, Postgres est indispensable car il gère parfaitement les transactions et la cohérence (avec les clefs étrangères), ce que ne fait pas encore MySQL. Historiquement, Postgres se comporte très bien avec un grand nombre de connexions simultanées.
J'ai tout récemment voulu tester les différentes version de Postgres (par exemple la dernière 7.3 par rapport à la 7.0), j'ai utilisé pgbench qui est livré avec et qui simule plus ou moins un TCP-B (c'est ce qui est écrit). C'est un benchmark assez basique, qui ne remplace pas votre test pour votre besoin. A première vue, il n'y a pas de différence très significative, mais il faudrait que je refasse les tests plus rigoureusement (j'ai déjà utilisé une partition formatée avant chaque test). pgbench simule plusieurs clients en parallèle.
J'ai aussi voulu faire la comparaison Postgres 7.3.1 contre MySQL 3.23.54 (dernières versions), en portant pgbench sur MySQL. Effectivement, en utilisant des tables simples (MyISAM) et sans transactions (pgbench fait "begin; select; update; [...] ; end"), MySQL est 2 à 3 fois plus rapide. Par contre, dès que j'utilise des tables InnoDB, les performances baissent très nettement. En fait, je n'ai pas réussi à reproduire le test de pgbench car MySQL bloque lors de 2 updates simultanés sur la même rangée (deadlock).
J'ai aussi testé les procédures stockées de Postgres (toujours avec pgbench) et ça accélère énormément : selon les paramètres, entre 2 et 4 fois.