Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que o PostgreSQL é tão lento no Windows?


Há casos em que o PostgreSQL no Windows paga uma sobrecarga adicional em comparação com outras soluções, devido às compensações feitas quando o portamos.

Por exemplo, o PostgreSQL usa um processo por conexão, o MySQL usa um thread. No Unix, isso geralmente não é uma diferença de desempenho perceptível, mas no Windows criar novos processos é muito caro (devido à falta da chamada de sistema fork()). Por esse motivo, usar conexões persistentes ou um pool de conexões é muito mais importante no Windows ao usar o PostgreSQL.

Outro problema que vi é que o PostgreSQL inicial no Windows, por padrão, garante que suas gravações estejam passando pelo cache de gravação - mesmo que seja com bateria. AFAIK, o MySQL não faz isso e afetará muito o desempenho de gravação. Agora, isso é realmente necessário se você tiver um hardware não seguro, como uma unidade barata. Mas se você tiver um cache de gravação com bateria, você deseja alterá-lo para fsync regular. Versões modernas do PostgreSQL (certamente 8.3) terão como padrão open_datasync, o que deve remover essa diferença.

Você também não menciona nada sobre como você ajustou a configuração do banco de dados. Por padrão, o arquivo de configuração enviado com o PostgreSQL é muito conservador. Se você não mudou nada lá, você definitivamente precisa dar uma olhada. Há alguns conselhos de ajuste disponíveis no wiki PostgreSQL .

Para fornecer mais detalhes, você terá que fornecer muito mais detalhes sobre exatamente o que está lento e como você ajustou seu banco de dados. Eu sugiro um e-mail para a lista de discussão pgsql-general.