Sono un DBA principiante e ho esperienza in Microsoft SQL Server ma voglio passare a FLOSS.
Sto avviando un'azienda e sviluppiamo un'app (PHP) con un backend Postgres e abbiamo fatto alcuni test anche a confronto con MySQL. Osserviamo che MySQL è due volte più veloce di PostgreSQL.
Ho fatto un test tangibile delle prestazioni:
- Stesse colonne nella tabella con tipi di dati di colonna equivalenti.
- Stesso numero di righe.
- Stessi indici in entrambi (chiave primaria inclusa).
- Il carico della CPU è inattivo e la macchina Postgres è decisamente migliore.
- E la stessa query (ovviamente).
Che cosa sto facendo di sbagliato?
PS: ho letto molti "howtos" sull'ottimizzazione delle prestazioni per i motori di database.
PS (2): stiamo usando InnoDB (un file per tabella) sul database MySQL.
Ciao Mat!
Ho fatto le tre query di selezione comuni (e più difficili).
La domanda sul disco, certamente non è la stessa; In Postgres è un SSD (quasi tre volte più veloce).
Dati 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 |
+------------------------------+----------------------+
Non so come visualizzarlo in PostgreSQL.
Grazie in anticipo.
explain analyze
. Per rendere più facile la lettura, è possibile caricare il piano per explain.depesz.com
postgresql.conf