Ich habe zwei identische Server (in Bezug auf die Hardware), beide sind Standardinstallationen von Windows Server 2008 R2 mit minimal installierter Software (im Grunde genommen mein Code und benötigtes Material wie JVM usw.).
Auf dem einen Server verwende ich SQL Server 2005, auf dem zweiten Server postgresql 9.1. Der Leistungsunterschied zwischen diesen beiden Servern ist überwältigend. Es ist so schlecht für Postgresql, dass ich meine anfängliche Rede "Verwenden wir Postgresql, anstatt die SQL-Serverlizenz zu bezahlen" an meinen Chef bedauere. Wir sprechen von Unterschieden zwischen 30 Sekunden und 15 Minuten für denselben Befehl, und es ist nicht nur dieser eine Befehl, sondern jede Abfrage oder jeder Befehl, den ich darauf ausführe. Beide haben so ziemlich die gleichen Daten (Datensätze wurden in unterschiedlicher Reihenfolge eingefügt) und beide Datenbanken haben genau die gleiche Struktur / Indizes usw.
Aber ich hoffe, es ist nur eine Frage der Leistungsoptimierung. Die Sache ist, SQL Server verwendet so ziemlich alle 32 GB RAM auf dem Server, wohingegen Postgresl nichts verwendet, definitiv weniger als ein Gig, obwohl ich es nicht wirklich im Detail herausgefunden habe.
Wie bekomme ich postgresql, um mehr als 20 GB RAM zu verwenden? Diese Server wurden speziell für diese Datenbank erstellt, sodass jeder RAM, der nicht von der Datenbank und den unterstützenden Prozessen verwendet wird, meiner Meinung nach verschwendet wird.
SET effective_cache_size=18G;
(die Standardeinstellung ist extrem niedrig) Übrigens: Angenommen, dies ist eine 64-Bit-Maschine (keine PTE)