Ich bin ein DBA-Neuling und habe Erfahrung mit Microsoft SQL Server, möchte aber zu FLOSS wechseln.
Ich gründe ein Unternehmen und wir entwickeln eine App (PHP) mit einem Postgres-Backend. Außerdem haben wir einige Tests im Vergleich zu MySQL durchgeführt. Wir stellen fest, dass MySQL doppelt so schnell ist wie PostgreSQL.
Ich habe einen konkreten Leistungstest durchgeführt:
- Gleiche Spalten in der Tabelle mit entsprechenden Spaltendatentypen.
- Gleiche Anzahl von Zeilen.
- Gleiche Indizes in beiden (Primärschlüssel enthalten).
- Die CPU-Auslastung ist im Leerlauf und die Postgres-Maschine deutlich besser.
- Und die gleiche Abfrage (offensichtlich).
Was mache ich falsch?
PS: Ich habe viele Anleitungen zur Leistungsoptimierung für Datenbank-Engines gelesen.
PS (2): Wir verwenden InnoDB (eine Datei pro Tabelle) in der MySQL-Datenbank.
Hallo Mat!
Ich habe die drei häufigsten ausgewählten (und schwierigsten) Abfragen durchgeführt.
Die Frage nach der Festplatte ist sicherlich nicht die gleiche. In Postgres ist es eine SSD (fast dreimal so schnell).
MySQL-Cache-Daten:
+------------------------------+----------------------+
| 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 |
+------------------------------+----------------------+
Ich weiß nicht, wie ich das in PostgreSQL sehen soll.
Danke im Voraus.
explain analyze
. Um das Lesen zu vereinfachen, können Sie den Plan auf explain.depesz.com
postgresql.conf