Jestem początkującym DBA i mam doświadczenie w Microsoft SQL Server, ale chcę przejść do FLOSS.
Zakładam firmę i tworzymy aplikację (PHP) z zapleczem Postgres, a także przeprowadziliśmy testy w porównaniu z MySQL. Zauważamy, że MySQL jest dwa razy szybszy niż PostgreSQL.
Zrobiłem namacalny test wydajności:
- Te same kolumny w tabeli z równoważnymi typami danych kolumn.
- Ta sama liczba rzędów.
- Te same indeksy w obu (zawiera klucz podstawowy).
- Obciążenie procesora jest bezczynne, a maszyna Postgres jest znacznie lepsza.
- I to samo zapytanie (oczywiście).
Co ja robię źle?
PS: Czytałem wiele „poradników” na temat dostrajania wydajności silników baz danych.
PS (2): Używamy InnoDB (jeden plik na tabelę) w bazie danych MySQL.
Cześć Mat!
Zrobiłem trzy najczęściej wybierane (i najtrudniejsze) zapytania.
Pytanie o dysk, z pewnością to nie to samo; W Postgres jest to dysk SSD (prawie trzykrotnie najszybszy).
Dane w pamięci podręcznej 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 |
+------------------------------+----------------------+
Nie wiem, jak to zobaczyć w PostgreSQL.
Z góry dziękuję.
explain analyze
. Aby łatwiej czytać, można przesłać plan explain.depesz.com
postgresql.conf