Je suis un DBA débutant, et j'ai de l'expérience dans Microsoft SQL Server mais je veux passer à FLOSS.
Je démarre une entreprise et nous développons une application (PHP) avec un backend Postgres, et nous avons également fait des tests en comparant avec MySQL. Nous observons que MySQL est deux fois plus rapide que PostgreSQL.
J'ai fait un test de performance tangible:
- Mêmes colonnes dans le tableau avec des types de données de colonne équivalents.
- Même nombre de lignes.
- Mêmes index dans les deux (clé primaire incluse).
- La charge CPU est inactive et la machine Postgres est nettement meilleure.
- Et la même requête (évidemment).
Qu'est-ce que je fais mal?
PS: J'ai lu de nombreux "howtos" sur le réglage des performances des moteurs de base de données.
PS (2): Nous utilisons InnoDB (un fichier par table) sur la base de données MySQL.
Salut Mat!
J'ai fait les trois requêtes de sélection les plus courantes (et les plus difficiles).
La question du disque n'est certainement pas la même; À Postgres, c'est un SSD (presque trois fois plus rapide).
Données de cache MySQL:
+------------------------------+----------------------+
| Variable_name | Value |
+------------------------------+----------------------+
| binlog_cache_size | 32768 |
| have_query_cache | YES |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 18446744073709547520 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| table_definition_cache | 256 |
| table_open_cache | 64 |
| thread_cache_size | 8 |
+------------------------------+----------------------+
Je ne sais pas comment afficher cela dans PostgreSQL.
Merci d'avance.
explain analyze
. Pour faciliter la lecture, vous pouvez télécharger le plan de explain.depesz.com
postgresql.conf