Identifizieren und Beheben von Problemen mit Blockern aggressiver Bereinigungen in RDS für PostgreSQL - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Identifizieren und Beheben von Problemen mit Blockern aggressiver Bereinigungen in RDS für PostgreSQL

In PostgreSQL ist die Bereinigung von entscheidender Bedeutung zur Sicherstellung der Integrität der Datenbank, da durch diese Speicherplatz zurückgewonnen wird und Probleme mit Transaktions-ID-Wraparounds vermieden werden. Manchmal wird eine reibungslose Bereinigung jedoch verhindert, was zu Leistungseinbußen, einem aufgeblähten Speicher und sogar zu einer Beeinträchtigung der Verfügbarkeit Ihrer DB-Instance durch einen Transaktions-ID-Wraparound führen kann. Daher ist die Identifizierung und Lösung dieser Probleme für eine optimale Datenbankleistung und -verfügbarkeit unerlässlich. Lesen Sie Understanding autovacuum in Amazon RDS für PostgreSQL environments, um mehr über die Selbstbereinigung zu erfahren.

Die postgres_get_av_diag()-Funktion hilft bei der Identifizierung von Problemen, die den aggressiven Bereinigungsprozess entweder verhindern oder verzögern. Es werden Vorschläge bereitgestellt, die Befehle zur Behebung des Problems beinhalten können, wenn es identifiziert werden kann, oder Anleitungen für weitere Diagnosen, wenn das Problem nicht identifiziert werden kann. Blocker aggressiver Bereinigungen werden gemeldet, wenn das Alter den Schwellenwert für die adaptive Selbstbereinigung von RDS von 500 Millionen Transaktions-IDs überschreitet.

Wie alt ist die Transaktions-ID?

Die age()-Funktion für Transaktions-IDs berechnet die Anzahl der Transaktionen, die seit der ältesten nicht eingefrorenen Transaktions-ID für eine Datenbank (pg_database.datfrozenxid) oder Tabelle (pg_class.relfrozenxid) stattgefunden haben. Dieser Wert gibt die Datenbankaktivität seit dem letzten aggressiven Bereinigungsvorgang an und zeigt den wahrscheinlichen Workload für bevorstehende VACUUM-Prozesse auf.

Was ist eine aggressive Bereinigung?

Eine aggressive VACUUM-Operation führt einen umfassenden Scan aller Seiten in einer Tabelle durch, einschließlich der Seiten, die normalerweise bei regulären VACUUM-Operationen übersprungen werden. Dieser gründliche Scan zielt darauf ab, Transaktions-IDs, die sich ihrem Höchstalter nähern, „einzufrieren“ und so eine Situation, die als Transaktions-ID-Wraparound bezeichnet wird, effektiv zu verhindern.

Damit postgres_get_av_diag() Blocker meldet, muss der Blocker mindestens 500 Millionen Transaktionen alt sein.