Sou um DBA iniciante e tenho experiência no Microsoft SQL Server, mas quero pular para o FLOSS.
Estou iniciando uma empresa e desenvolvemos um aplicativo (PHP) com um back-end do Postgres, e também fizemos alguns testes comparando com o MySQL. Observamos que o MySQL é duas vezes mais rápido que o PostgreSQL.
Fiz um teste de desempenho tangível:
- Mesmas colunas na tabela com tipos de dados de coluna equivalentes.
- Mesmo número de linhas.
- Mesmos índices em ambos (chave primária incluída).
- A carga da CPU está ociosa e a máquina do Postgres é significativamente melhor.
- E a mesma consulta (obviamente).
O que estou fazendo errado?
PS: Eu li muitos "howtos" sobre ajuste de desempenho para mecanismos de banco de dados.
PS (2): Estamos usando o InnoDB (um arquivo por tabela) no banco de dados MySQL.
Oi Mat!
Fiz as três consultas comuns de seleção (e as mais difíceis).
A questão sobre disco, certamente não é a mesma; No Postgres, é um SSD (quase três vezes mais rápido).
Dados de cache do 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 |
+------------------------------+----------------------+
Não sei como ver isso no PostgreSQL.
Desde já, obrigado.
explain analyze
. Para torná-lo mais fácil de ler, você pode enviar o plano para explain.depesz.com
postgresql.conf