2009-06-30 10 views
2

Ich habe einen Windows Server 2003-Computer, den ich als Postgres-Datenbankserver verwenden werde, der Rechner ist ein Dual Core 3.0Ghz Xeon mit 4 GB ECC-Speicher und 4 x 120 GB 10K RPM SAS-Laufwerken. alles abgestreift.Konfigurationsempfehlungen für eine PostgreSQL-Installation

Ich habe gelesen, dass die Standardinstallation von Postgres auf einem 486 mit 32MB RAM läuft, und ich habe mehrere Webseiten über Konfigurationsoptimierungen gelesen - aber ich hoffte auf etwas konkreteres von meinem Stackoverflow.

Im Allgemeinen sein Gehen nur 1 Datenbank dienen (potenziell ein oder zwei mehr), aber der Haken ist, dass die Datenbank 1 Tabelle hat vor allem die massiv ist (Hunderte von Millionen von Datensätzen mit nur wenigen coloumn). Derzeit, mit der Standardkonfiguration, ist es nicht langsam, aber ich denke, es könnte möglicherweise noch schneller sein.

Können Leute bitte geben Sie mir einige Hinweise und Empfehlungen für Konfigurationseinstellungen, die Sie für einen Server wie diese verwenden würde.

+0

Sie (wahrscheinlich) hier die falschen Leute zu fragen, sollten Sie http://serverfault.com/ über Kopf und fragen Sie dort, und Sie‘ Ich bekomme eine viel bessere Antwort. –

+0

Ich habe ähnliche Frage im Stapelüberlauf zuvor mit großem Erfolg gestellt - vor allem wegen seiner einen Sache, einen Server zu konfigurieren - und eine andere Sache, völlig zu brechen Konfigurationen, die Client-Code auswirken wird. – Ash

Antwort

5
  • 4 * gestrippt Fahrt war eine schlechte Idee —, wenn eines dieser Laufwerke wird fehlschlagen dann werden Sie alle Daten verlieren, und selbst SAS-Laufwerke scheitern manchmal — mit 4 Treibern ist es 4 mal wahrscheinlicher als mit 1 Laufwerk; Sie sollten für RAID 1+0 gehen.

  • Verwenden Sie die neueste Version von Postgres, 8.3.7 jetzt; Es gibt viele Leistungsverbesserungen in jeder Hauptversion.

  • Setzen Sie shared_buffers Parameter in postgresql.conf auf etwa 1/4 Ihres Speichers.

  • Stellen Sie effective_cache_size auf etwa die Hälfte Ihres Speichers ein.

  • Setzen Sie checkpoint_segments auf etwa 32 (Checkpoint alle 512 MB) und checkpoint_completion_target auf etwa 0,8.

  • Set default_statistics_target bis etwa 100.

  • Migration auf Enterprise Linux oder FreeBSD: Postgres funktioniert viel besser auf Unix-artigen Systemen — Windows-Unterstützung ein neuer Zusatz ist nicht sehr ausgereift.

Sie mehr auf dieser Seite lesen: Tuning Your PostgreSQL Server — PostgreSQL Wiki

+0

Das ist genau die Art von was ich suchte - danke. – Ash

0

Meine Erfahrung legt nahe, dass (in Grenzen) die Hardware in der Regel der unwichtigste Faktor für die Datenbankleistung ist.

Angenommen, Sie haben genug Speicher, um häufig verwendete Daten im Cache zu speichern, dann kann die CPU-Geschwindigkeit zwischen einem Top-of-the-Line-Gerät und einer normalen oder Gartenbox um 10-50% variieren.

Ein fehlender Index in einer wichtigen Suche oder ein schlecht geschriebener rekursiver Trigger kann jedoch leicht zu einer Erhöhung der Antwortzeiten um 1.000% oder 10.000% oder mehr führen.

Ohne genau zu wissen, Ihre Tabelle Struktur und Zeile zählt, ich denke, jemand würde vorschlagen, dass Ihre Hardware ausreichend ausreichend aussieht. Es ist nur Ihre Datenbankstruktur, die Sie töten wird. :)

UPDATE:

Ohne die spezifischen Anfragen und Ihre Index Details zu kennen, gibt es nicht viel mehr wir tun können. Und selbst wenn man die Abfragen kennt, ist es oft sehr schwierig, sie zu optimieren, ohne die Abfragen tatsächlich mit realistischen Datensätzen zu installieren und auszuführen.

Angesichts der Kosten des Servers und der Kosten Ihrer Zeit, denke ich, dass Sie dreißig Dollar in ein Buch investieren müssen. Dann installieren Sie Ihre Datenbank mit Testdaten, führen Sie die Abfragen aus und sehen Sie, was gut läuft und was schlecht läuft. Fixieren, spülen und wiederholen.

Beide Bücher sind spezifisch für SQL Server und beide haben hohe Einschaltquoten:

http://www.amazon.com/Inside-Microsoft%C2%AE-SQL-Server-2005/dp/0735621969/ref=sr_1_1

http://www.amazon.com/Server-Performance-Tuning-Distilled-Second/dp/B001GAQ53E/ref=sr_1_5

+0

Ja, der Server ist ein Biest, kein Zweifel ... Auch hier geht es mehr um Konfigurationsverbesserungen, nicht speziell um "Hardware". Meine Argumentation bei stackoverflow ist, weil ich sehr bewusst bin, dass die Einstellungen zum Speichern von Zwischenspeicher und Abfrageleistung direkt an Max-Verbindungen gebunden sind und ich nicht eine Einstellung ändern möchte, die die Anzahl der Datenbankverbindungen einschränkt oder zu viel Speicher. – Ash