Tengo dos servidores idénticos (en términos de hardware), ambos son instalaciones estándar de Windows Server 2008 R2, con un software mínimo instalado (básicamente mi código y cosas necesarias como jvm, etc.).
En un servidor, estoy ejecutando sql server 2005, en el segundo servidor postgresql 9.1. La diferencia en el rendimiento b / n de estos 2 servidores es asombrosa, es tan mala en postgresql que lamento mi discurso inicial "usemos postgresql en lugar de pagar la licencia del servidor sql" a mi jefe. Estamos hablando de diferencias de 30 segundos frente a 15 minutos para el mismo comando, y no es solo este comando, es cualquier consulta o comando que le arroje. Ambos tienen casi los mismos datos (los registros se insertaron en un orden diferente), y ambas bases de datos tienen exactamente la misma estructura / índices, etc.
Pero espero que sea solo una cuestión de ajuste de rendimiento. La cuestión es que el servidor sql está utilizando prácticamente los 32 gigas de ram en el servidor, mientras que postgresl no está usando nada, definitivamente menos que un concierto, aunque en realidad no lo he descubierto con todo detalle.
¿Cómo consigo postgresql para usar más de 20 gigas de ram? Estos servidores se construyeron específicamente para estas cosas de la base de datos, por lo que, en mi opinión, se desperdicia cualquier ram que no esté en uso por la base de datos y los procesos de soporte.
SET effective_cache_size=18G;
(la configuración predeterminada es extremadamente baja) Por cierto: suponiendo que se trata de una máquina de 64 bits (sin PTE)