Einer meiner PostgreSQL-Server hostet mehrere (1-3) Datenbanken, die einen konstanten Datenstrom erhalten. Die Daten sind nicht besonders strukturiert, sondern entsprechen der aktuellen Zeit und einer Vielzahl von beobachteten Daten für diesen bestimmten Zeitpunkt. Die Datenrate ist ziemlich hoch; Für eine Datenbank sind es ungefähr ein Gigabyte pro Tag, für eine andere etwa ein Zehntel. Ich erwarte keine Erhöhung dieser Rate. Die Leseleistung hat eine viel niedrigere Priorität und ist derzeit akzeptabel.
In den Protokollen habe ich diese Nachricht:
LOG: checkpoints are occurring too frequently (15 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
Dieser Wert ist derzeit auf 16 eingestellt, was mit freundlicher Genehmigung von ist pgtune
.
Welche Einstellungen sollte ich berücksichtigen, um die Schreibleistung zu verbessern? Ich würde es vorziehen, so viel Sicherheit wie möglich zu haben. In Anbetracht des eingehenden Datenvolumens könnte ich akzeptieren, dass bei einem Fehler einige aktuelle Daten verloren gehen, solange der Großteil der Daten intakt ist.
Bearbeiten: Ich verwende derzeit PostgreSQL 9.0, plane jedoch ein Upgrade auf 9.1. Ich gebe die Hardwaredetails nicht bekannt, da ich zwar deren Bedeutung anerkenne, diese Optimierung jedoch letztendlich auf mehreren Computern mit sehr unterschiedlicher Hardware durchführen muss. Wenn die Hardware für die Antwort wesentlich ist, geben Sie mir bitte die allgemeinen Informationen, damit ich die Antwort auf Maschinen mit unterschiedlichen Hardwarekonfigurationen anwenden kann.
checkpoint_segments
wie empfohlen erhöht ? Was ist passiert?