Mysql
 sql >> Database >  >> RDS >> Mysql

Perché PostgreSQL è così lento su Windows?

Ci sono casi in cui PostgreSQL su Windows paga un sovraccarico aggiuntivo rispetto ad altre soluzioni, a causa di compromessi fatti durante il porting.

Ad esempio, PostgreSQL utilizza un processo per connessione, MySQL utilizza un thread. Su Unix, questa di solito non è una differenza di prestazioni evidente, ma su Windows la creazione di nuovi processi è molto costosa (a causa della mancanza della chiamata di sistema fork()). Per questo motivo, l'utilizzo di connessioni persistenti o di un pool di connessioni è molto più importante su Windows quando si utilizza PostgreSQL.

Un altro problema che ho riscontrato è che i primi PostgreSQL su Windows si assicureranno per impostazione predefinita che le sue scritture passino attraverso la cache di scrittura, anche se è dotato di batteria tampone. AFAIK, MySQL non lo fa e influenzerà notevolmente le prestazioni di scrittura. Ora, questo è effettivamente necessario se si dispone di un hardware non sicuro, come un'unità economica. Ma se hai una cache di scrittura con batteria tampone, vuoi cambiarla in normale fsync. Le versioni moderne di PostgreSQL (certamente 8.3) utilizzeranno invece open_datasync per impostazione predefinita, il che dovrebbe rimuovere questa differenza.

Inoltre non menzioni nulla su come hai ottimizzato la configurazione del database. Per impostazione predefinita, il file di configurazione fornito con PostgreSQL è molto conservatore. Se non hai cambiato nulla lì, devi assolutamente dargli un'occhiata. Sono disponibili alcuni consigli di ottimizzazione sul wiki PostgreSQL .

Per fornire ulteriori dettagli, dovrai fornire molti più dettagli su esattamente ciò che funziona lentamente e su come hai ottimizzato il tuo database. Suggerirei un'e-mail alla mailing list pgsql-general.