Autovacuum in PostgreSQL

Autovacuum in PostgreSQL
Vakuum? Ja, das Konzept existiert in Postgres -Datenbanken. Wenn ein Datensatz in Postgres gelöscht wird, wird ein toter Tupel gebildet, und mit Hilfe des Vakuumbefehls können diese toten Tupel entfernt werden. Nach dem Entfernen der toten Tupel wird die Analyseaktion von Postgres in der Tabelle durchgeführt, um die Statistiken zu aktualisieren. Um das Vakuum durchzuführen und Aktionen gemeinsam und automatisch zu analysieren, wird der Befehl autovacuum von postgres verwendet. Es führt sowohl die Löschung durch als auch die Statistik aktualisiert dann die Statistiken . Um dieses Postgres-Dienstprogramm eingehender zu verstehen.

Wie Postgres Auto Vacuum funktioniert

Das Autovacuum ist der Hintergrundprozess in Postgres und ist standardmäßig aktiviert. Sie können jedoch die Einstellungen von Autovacuum erhalten, indem Sie zum Navigieren zum Navigieren PostgreSQL.Conf Datei.

Wie bereits erwähnt, führt das Auto -Vakuum sowohl Staubsaugen als auch Analyse durch. Postgres -Analysen und Staubsaugen einer Tabelle basierend auf dem unten beschriebenen Schwellenwert:

Für die automatische Staubsaugung einer Tabelle wird die folgende Gleichung verwendet:

Autovacuum vakuumschwelle = autovacuum_vacuum_scale_factor * nein._of_tUples + autovacuum_vacuum_threshold

Um die automatische Analyseschwelle zu erhalten, erledigt die folgende Gleichung den Job:

Autovacuum analyze threshold = autovacuum_analyze_scale_factor

Die in den oben genannten Abschnitten verwendeten Terminologien werden im kommenden Abschnitt beschrieben.

So konfigurieren Sie Postgres Auto Vacuum

Die Auto -Vakuum -Funktionalität von Postgres hängt von den Einstellungen und Optionen im PostgreSQL ab.Conf -Datei. Mithilfe der unten angegebenen Beschreibung können Sie die Parameter ändern, um die automatische Vakuumfunktionalität zu stimmen.

Die folgenden Parameter spielen die Schlüsselrolle bei der Definition der Richtlinien für Postgres autovacuum.

  • Autovakuum: Zeigt den Standardstatus für das Auto-Vakuum-Aufruf an.
  • autovacuum_naptime: Der Standardwert des Parameters beträgt die 60er (1 Minute), die die Differenz zwischen jedem Auto -Vakuum -Wakeup angibt.
  • autovacuum_max_worker: Die Prozesse, die nach der Naptime vakuumiert werden.
  • autovacuum_vacuum_scale_factor: Dieser Faktor lenkt das Auto -Vakuum, den Prozess zu starten, wenn der Prozentsatz des angegebenen Wertes geändert wird. Es ist standardmäßig auf 20% festgelegt, was bedeutet.
  • autovacuum_vacuum_threshold: Dieser Parameter stellt sicher, dass das automatische Vakuum nach spezifischer (standardmäßig 50) Zahlen von Tabellen aktualisiert/geändert wird.
  • autovacuum_analyze_scale_factor: Dieser Faktor bezieht sich auf den Analyseprozess, den ein Auto -Vakuum durchführt. Wenn ein bestimmter Prozentsatz der Datensätze aktualisiert/geändert wird, führt die Tabelle die Analyse durch.
  • autovacuum_analyze_threshold: Wenn bestimmte Zahlen von Tabellen auf Aktualisierungen stoßen und der Schwellenwert erfüllt ist, wird das Auto -Vakuum mit der Analyse der Tabelle beginnt und der Standardwert dieses Parameters 50 beträgt 50.

Um die Datei zu bearbeiten, können Sie sie in einem Nano -Editor öffnen, indem Sie den unten angegebenen Befehl verwenden (der Speicherort von postgreSQL.Die Conf -Datei kann in Ihrem Fall variieren):

$ sudo nano/etc/postgresql/12/main/postgresql.Conf

So konfigurieren Sie automatische Vakuumparameter für eine Tabelle

Der PostgreSQL.Conf Die Datei befasst sich mit den globalen Änderungen an den Autovacuum -Parametern. Sie können jedoch Parameter für eine einzelne Tabelle einstellen. Zum Beispiel haben wir die folgenden Parameter für die verwendet LinuxHint Tabelle der Datenbank mydb:

  • autovacuum_vacuum_scale_factor = 0.2
  • autovacuum_vacuum_threshold = 30
  • autovacuum_analyze_scale_factor = 0.2
  • autovacuum_analyze_threshold = 20

Diese Parameter werden mit einer Änderungstabelle Anweisung von PowerShell übergeben und die Änderungstabelle wird in der LinuxHint -Tabelle wie unten gezeigt angewendet:

> TABLE LINUXHINT SET (autovacuum_vacuum_scale_factor = 0.2, autovacuum_vacuum_threshold = 30, autovacuum_analyze_scale_factor = 0.2, autovacuum_Analyze_threshold = 20);

Es kann manuell berechnet werden, indem die Werte in die im obigen Abschnitt angegebenen Gleichungen eingefügt werden und wie folgt ist. Angenommen, die LinuxHint -Tabelle enthält 10 Tupel:

Der Vakuumbetrieb von Autovacuum wird wie unten gezeigt berechnet. Der Ausgang zeigt, dass der Vakuumbetrieb von Autovacuum durchgeführt wird, wenn die Anzahl der veralteten Datensätze 31 erreicht.

Autovakuum -Vakuumschwelle der LinuxHint -Tabelle = (0.2 * 5) + 30 = 31

In ähnlicher Weise wird der Analyse -Betrieb von Autovacuum in der LinuxHint -Tabelle durchgeführt, wenn die Anzahl der Insertionen/Löschungen/Aktualisierungen 21 entspricht oder 21 überschreitet.

Autovacuum -Analyse der LinuxHint -Tabelle = (0.2*5) + 20 = 21

Warum Auto -Vakuum

Wenn Sie sich die Arbeit und die oben genannte Diskussion ansehen, können die folgenden Vorteile von Auto Vacuum extrahiert werden:

  • Der Raum wird effektiv verwaltet, indem die toten Zellen gelöscht werden
  • Die Analyse- und Staubsaugzeit werden gespeichert, wenn sie automatisch durchgeführt wird
  • Die Tabelle Blähung tritt nicht auf.
  • Autovakuum kann in parallelen Manieren durchgeführt werden. Zum Beispiel sperrt Autovacuum die Tabelle nicht wie das manuelle Vakuum.

Abschluss

Mit der Auto -Vakuum -Funktionalität von Postgres können Sie das Vakuum durchführen und die Tabellen einer Datenbank analysieren. Obwohl man manuell vakuumieren und analysieren kann, wird das automatisierte Vakuum beides tun. Dieser Artikel enthält detaillierte Informationen zur Auto -Vakuum -Funktionalität von Postgres. Postgres berechnet die Schwellenwerte für jede Tabelle und entscheidet dann, ob diese Tabelle vakuumiert oder analysiert werden soll. Darüber hinaus haben wir Postgres -Gleichungen zur Berechnung des Impfstoffs und der Analyse des Schwellenwerts zur Verfügung gestellt.