Ho due server identici (in termini di hardware), sono entrambe installazioni standard di Windows Server 2008 R2, con un software minimo installato (fondamentalmente il mio codice e cose richieste come jvm ecc.).
Su un server, sto eseguendo SQL Server 2005, sul secondo server Postgresql 9.1. La differenza nelle prestazioni di questi 2 server è sconcertante, è così grave su postgresql che mi pento del mio discorso iniziale "usiamo postgresql invece di pagare per la licenza del server sql" al mio capo. Stiamo parlando di differenze di 30 secondi contro 15 minuti per lo stesso comando, e non è solo questo comando, è qualsiasi domanda o comando che gli lancio. Entrambi hanno praticamente gli stessi dati (i record sono stati inseriti in un ordine diverso) ed entrambi i database hanno la stessa struttura / indici esatti, ecc.
Ma spero sia solo una questione di ottimizzazione delle prestazioni. Il fatto è che sql server utilizza praticamente tutti i 32 concerti di ram sul server, mentre postgresl non usa nulla, sicuramente meno di un concerto, anche se in realtà non l'ho capito nei minimi dettagli.
Come posso ottenere postgresql per usare più di 20 concerti di ram? Questi server sono stati creati appositamente per questa roba di database, quindi ogni ram non utilizzata dal database e dai processi di supporto è sprecato secondo me.
SET effective_cache_size=18G;
(l'impostazione predefinita è estremamente bassa) BTW: supponendo che si tratti di una macchina a 64 bit (no PTE)