Eu tenho dois servidores idênticos (em termos de hardware), ambos são instalações padrão do Windows Server 2008 R2, com o mínimo de software instalado (basicamente meu código e coisas necessárias, como jvm etc).
Em um servidor, estou executando o sql server 2005, no segundo servidor postgresql 9.1. A diferença no desempenho desses dois servidores é impressionante, é tão ruim no postgresql que lamento meu discurso inicial "vamos usar o postgresql em vez de pagar pela licença do servidor sql" para meu chefe. Estamos falando de diferenças de 30 segundos vs 15 minutos para o mesmo comando, e não é apenas este comando, é qualquer consulta ou comando que eu lance nele. Ambos têm praticamente os mesmos dados (os registros foram inseridos em ordem diferente) e os dois bancos de dados têm exatamente a mesma estrutura / índices, etc.
Mas espero que seja apenas uma questão de ajuste de desempenho. O problema é que o sql server está usando praticamente todos os 32 GB de RAM no servidor, enquanto o postgresl não está usando nada, definitivamente menos do que um gig, embora eu ainda não tenha descoberto isso com detalhes.
Como faço para o postgresql usar mais de 20 GB de RAM? Esses servidores foram criados especificamente para esse material de banco de dados, portanto, qualquer ram não usado pelo banco de dados e pelos processos de suporte é desperdiçado na minha opinião.
SET effective_cache_size=18G;
(a configuração padrão é extremamente baixo) BTW: assumindo que esta é uma máquina de 64 bits (sem PTE)