Auto Vacuum Parameter Postgresql


Wie oft wird Auto - Vakuum betrieben? Der Autovacuum Launcher führt automatische Vakuumprozesse ein. Anzahl der Datensätze, um den automatischen Vakuumprozess auszulösen. So können wir das Auto-Vakuum optimieren, indem wir häufige Fahrten vermeiden. Wenn ein automatischer Staubsauger entsteht, überprüft er jede Tabelle in seiner Datenbank.

Die Leistung nimmt vor dem Auto deutlich ab - Vakuum saugt und analysiert Vorkommnisse. Postgres, die von uns verlangten, aggressive Auto - und Auto - Einstellungen zu analysieren. Im Allgemeinen sind Standardwerte, die das Auto-Vakuum steuern, zu konservativ. Manchmal höre ich Leute, die raten, den automatischen Staubsauger auszuschalten und manuell zu saugen. Wenn er auf 0,2 gesetzt ist, passiert ein automatisches Vakuum, wenn 20% der Tabelle tote Tupel enthält.

Es ist jedoch besser, Auto-Vakuum zu verwenden, wenn Sie den manuellen Staubsaugprozess nicht vollständig verstehen. Hoffentlich bekommen Sie eine bessere Idee, wann und wie Sie das automatische Vakuum in PostgreSQL verwenden können. Der Skalenfaktor sollte sowohl für Vakuum als auch für die Analyse von Auto-Vakuum-Einstellungen auf Null gesetzt werden. Während der Betrieb von Auto-Vakuum, selbst wenn die Indexierung durchgeführt wird, dann wird der Auto-Vakuum-Prozess von selbst abgebrochen. Die Faustregel lautet also, das automatische Staubsaugen nicht auszuschalten, wenn man sich nicht sicher ist, ob man selbst Staubsaugen kann.

Autovacuum _ vacuum _ scale _ factor bestimmt den Prozentsatz der toten Tupel in den Tabellen, bevor ein automatisches Vakuum stattfindet. Stellen Sie sicher, dass Ihre größten Datenbanktabellen regelmäßig gesaugt und analysiert werden, indem Sie strengere Tabellen-Level-Auto-Vakuum-Einstellungen setzen. Der Autovakuum-Prozess (VACUUM + ANALYZE) beginnt, den toten Raum zurückzugewinnen, wenn er die Schwelle erreicht, die auf der unten stehenden Formel beruht. Bei anderen Auto-Vakuum-Tuning-Parametern können Sie autovacuum _ cost _ limit signifikant erhöhen und autovacuum _ vacuum _ cost _ delay signifikant reduzieren. Durch Erhöhung der Frequenz des Auto-Vakuum-Prozesses durch Erhöhung der Schwelle des autovacuum _ vacuum _ scale _ factor, werden autovacuum _ vacuum _ analyze _ factor Parameter die Ausführungszeit des Auto-Vakuum-Prozesses verkürzen.

Aber das Auto-Vakuum übernimmt normalerweise auch den Betrieb von ANALYZE, das die Statistiken aktualisiert, die der Abfrageplaner verwendet, um effiziente Abfrageausführungspläne zu erstellen. Die voreingestellten Auto-Vakuum-Analyse- und Vakuum-Einstellungen reichen für einen kleinen Einsatz aus, aber die prozentualen Schwellen brauchen länger, um auszulösen, da die Tabellen größer werden. Ich habe eine Reihe von Indizes losgeworden (vor allem solche mit niedriger Kardinalität - das habe ich ungefähr zur gleichen Zeit wie das Deaktivieren von Auto gemacht -, so dass das auf die versehentliche Beschleunigung angerechnet werden konnte). In der jüngeren Vergangenheit haben wir in einer unserer Umgebungen beobachtet, dass der Auto-Vakuum-Prozess während der Produktionsstunden lange läuft, was sich stark ausgewirkt hat. Es gibt Parameter in postgresql.conf, die so konfiguriert / abgestimmt werden können, dass sie das Checkpoint-Verhalten steuern, und diese Parameter sind max _ wal _ size, min _ wal _ size, checkpoint _ timeout und checkpoint _ completion _ target. In diesem Blog-Post werden wir über den Auto-Vakuum-Prozess diskutieren, seine Arten, wie er funktioniert, wie man die Zeit, die der Auto-Vakuum-Prozess in Anspruch nimmt, verringert und welche Parameter damit verbunden sind.

Die folgenden PostgreSQL-Anweisungen stellen sicher, dass alle 1000 Aktualisierungen (Einfügen, Modifizieren oder Löschen) auf Tabellen durchgeführt werden, die normalerweise die größten in der Cloud Manager Application Server-Installation sind. Kontrolliert, ob der Server den Autovacuum Launcher Daemon ausführen soll. Dies ist standardmäßig aktiviert; allerdings muss track _ counts auch aktiviert sein, damit das Autovakuum funktioniert. Dieser Parameter kann nur in der postgresql.conf-Datei oder auf der Server-Kommandozeile gesetzt werden. Beachten Sie, dass selbst wenn dieser Parameter deaktiviert ist, das System ggf. Autovakuumprozesse auslöst, um das Umwickeln der Transaktions-ID zu verhindern. Jede Aktion, die durch Autovakuum ausgeführt wird, wird protokolliert, wenn sie mindestens die angegebene Anzahl von Millisekunden dauert.

Wird dies auf Null gesetzt, werden alle Autovakuumaktionen protokolliert. Wenn Sie dies beispielsweise auf 250ms einstellen, werden alle automatischen Staubsauger und Analysen, die 250ms oder länger laufen, protokolliert. Wenn dieser Parameter auf einen anderen Wert als -1 gesetzt ist, wird zudem eine Meldung protokolliert, wenn eine Autovakuumaktion aufgrund des Vorhandenseins einer widersprüchlichen Sperre übersprungen wird. Die Aktivierung dieses Parameters kann bei der Verfolgung der Autovakuumaktivität hilfreich sein. Diese Einstellung kann nur in der postgresql.conf-Datei oder auf der Server-Kommandozeile eingestellt werden. Gibt die maximale Anzahl von Autovakuumprozessen (außer dem Autovakuum-Trägerraketen) an, die zu einem beliebigen Zeitpunkt ausgeführt werden können.

Dieser Parameter kann nur beim Serverstart gesetzt werden. Spezifiziert die minimale Verzögerung zwischen Autovakuumläufen auf einer Datenbank. In jeder Runde untersucht der Daemon die Datenbank und gibt VACUM- und ANALYZE-Befehle aus, wie sie für Tabellen in dieser Datenbank erforderlich sind. Die Verzögerung wird in Sekunden gemessen, die Standardeinstellung ist eine Minute (1min). Diese Einstellung kann für einzelne Tabellen durch Änderung der Speicherparameter aufgehoben werden. Gibt die minimale Anzahl eingefügter, aktualisierter oder gelöschter Tupel an, die benötigt werden, um eine ANALYZE in einer Tabelle auszulösen. Die Voreinstellung beträgt 0,2 (20% der Tischgröße).

Gibt einen Bruchteil der Tabellengröße an, die zu autovacuum _ analyze _ threshold hinzugefügt werden soll, wenn entschieden wird, ob ein ANALYZE ausgelöst werden soll. Die Voreinstellung ist 0.1 (10% der Tischgröße). Der VACUUM-Betrieb ist gezwungen, Transaktions-ID-Wrap-around innerhalb der Tabelle zu verhindern. Beachten Sie, dass das System Autovakuumprozesse auslöst, um das Umwickeln zu verhindern, auch wenn das Autovakuum andernfalls deaktiviert ist.

Vakuum ermöglicht auch das Entfernen alter Dateien aus dem Unterverzeichnis pg _ clog, weshalb die Standardeinstellung bei relativ niedrigen 200 Millionen Transaktionen liegt. Dieser Parameter kann nur beim Serverstart gesetzt werden, aber die Einstellung für einzelne Tabellen kann durch Änderung der Speicherparameter reduziert werden. Wird -1 angegeben, wird der reguläre vacuum _ cost _ delay-Wert verwendet. Der Standardwert beträgt 20 Millisekunden. PostgreSQL-Datenbanken erfordern eine regelmäßige Wartung, die als Staubsaugen bekannt ist. Möglicherweise müssen Sie die dort beschriebenen Autosaugparameter anpassen, um die besten Ergebnisse für Ihre Situation zu erzielen.

VACUUM-Befehle, die typischerweise nach einem Zeitplan durch Cron- oder Task-Scheduler-Skripte ausgeführt werden. Um das manuell gesteuerte Staubsaugen richtig einzurichten, ist es unerlässlich, die in den nächsten Unterabschnitten besprochenen Probleme zu verstehen. Administratoren, die sich auf das Autovakuum verlassen, möchten dieses Material vielleicht noch abschöpfen, um es zu verstehen und anzupassen. Wiederherstellung oder Wiederverwendung von Speicherplatz, der mit aktualisierten oder gelöschten Datensätzen belegt ist. Zur Aktualisierung der vom PostgreSQL-Abfrageplaner verwendeten Datenstatistiken.

Um die Sichtbarkeitskarte zu aktualisieren, die den Index beschleunigt - nur Scans. Zum Schutz vor dem Verlust sehr alter Daten durch Transaktions-ID-Wraparound oder Multixact-ID-Wraparound. VACUUM-Operationen unterschiedlicher Häufigkeit und Reichweite, wie in den folgenden Abschnitten erläutert. VACUUM FULL kann mehr Speicherplatz beanspruchen, läuft aber viel langsamer. VACUUM kann parallel zum Betrieb der Produktionsdatenbank laufen. VACUUM FULL erfordert ein exklusives Schloss auf dem Tisch, an dem es arbeitet, und kann daher nicht parallel zu anderen Anwendungen des Tisches durchgeführt werden. O-Verkehr, der bei anderen aktiven Sitzungen zu einer schlechten Performance führen kann.

DELETE einer Zeile entfernt nicht sofort die alte Version der Zeile. Kapitel 13): Die Zeilenversion darf nicht gelöscht werden, solange sie potenziell noch für andere Transaktionen verfügbar ist. Aber letztlich ist eine veraltete oder gelöschte Zeilenversion für keine Transaktion mehr von Interesse. Der Speicherplatz, den es beansprucht, muss dann für die Wiederverwendung durch neue Zeilen beansprucht werden, um ein unbegrenztes Wachstum des Plattenplatzbedarfs zu vermeiden. VACUUM entfernt Totreihenversionen in Tabellen und Indizes und markiert den verfügbaren Platz für eine zukünftige Wiederverwendung.

Allerdings wird der Speicherplatz nicht an das Betriebssystem zurückgegeben, außer in dem speziellen Fall, in dem eine oder mehrere Seiten am Ende eines Tisches völlig frei werden und ein exklusives Tischschloss leicht zu erhalten ist. VACUUM FULL komprimiert aktiv Tabellen, indem es eine völlig neue Version der Tabellendatei ohne toten Speicherplatz schreibt. Dies minimiert die Größe des Tisches, kann aber sehr lange dauern. Es erfordert auch zusätzlichen Speicherplatz für die neue Kopie der Tabelle, bis die Operation abgeschlossen ist.

Bei diesem Ansatz besteht die Idee nicht darin, Tabellen in ihrer Mindestgröße zu belassen, sondern die gleichmäßige Auslastung des Plattenspeichers aufrechtzuerhalten: Jede Tabelle belegt Platz, der ihrer Mindestgröße entspricht, plus wie viel Platz zwischen den Staubsaugungen verbraucht wird. FULL kann verwendet werden, um eine Tabelle wieder auf ihre Mindestgröße zu verkleinern und den Festplattenspeicher an das Betriebssystem zurückzugeben, es macht nicht viel Sinn, wenn die Tabelle in Zukunft einfach wieder wächst. Manche Administratoren ziehen es vor, das Staubsaugen selbst zu planen, indem sie beispielsweise die ganze Arbeit nachts erledigen, wenn die Belastung gering ist. Die Verwendung des Autovakuum-Daemons lindert dieses Problem, da der Daemon als Reaktion auf Aktualisierungsaktivitäten dynamisch saugt.

Es ist unklug, den Daemon komplett zu deaktivieren, es sei denn, man hat eine extrem vorhersehbare Arbeitsbelastung. Von Vakuumgeräten wird erwartet, dass sie den Großteil der Arbeit erledigen, wenn die Belastung typisch ist. VACUUM einmal täglich während einer Niedrignutzungszeit, ergänzt durch häufigeres Staubsaugen stark aktualisierter Tabellen bei Bedarf. VACUUM jeder einzelne; das Programm vacuumdb könnte hilfreich sein. VACUUM kann nicht zufrieden sein, wenn eine Tabelle infolge massiver Aktualisierungs- oder Löschaktivitäten eine große Anzahl toter Versionen enthält.

Diese Befehle schreiben eine komplette neue Kopie der Tabelle um und erstellen neue Indizes für sie. All diese Optionen erfordern ein exklusives Schloss. Beachten Sie, dass sie auch vorübergehend zusätzlichen Speicherplatz benötigen, der ungefähr der Größe der Tabelle entspricht, da die alten Kopien der Tabelle und der Indizes erst freigegeben werden können, wenn die neuen vollständig sind. Der Anfrageplaner PostgreSQL stützt sich auf statistische Informationen über den Inhalt von Tabellen, um gute Pläne für Abfragen zu generieren. Diese Statistiken werden durch den Befehl ANALYZE gesammelt, der selbst oder als optionaler Schritt in VACUUM eingedrungen werden kann. Es ist wichtig, einigermaßen genaue Statistiken zu haben, andernfalls könnten schlechte Pläne die Datenbankleistung beeinträchtigen. Wenn der Autovacuum Daemon aktiviert ist, gibt er automatisch ANALYZE-Befehle aus, wenn sich der Inhalt einer Tabelle ausreichend geändert hat.

Administratoren könnten es jedoch vorziehen, sich auf manuell geplante ANALYZE-Operationen zu verlassen, insbesondere wenn bekannt ist, dass die Aktualisierung der Aktivität auf einer Tabelle die Statistiken "interessanter" Spalten nicht beeinflusst.


Leave a Comment:
Search