Transaktions-ID-Wraparound verhindern

Der Cloud SQL-Recommender für hohe Transaktions-ID-Auslastung generiert proaktiv Empfehlungen, mit denen Sie potenzielle Transaktions-ID-Wraparounds für Cloud SQL PostgreSQL-Instanzen vermeiden können.

Sie können diese Empfehlung anwenden, wenn eine Cloud SQL-Instanz zu einem Transaktions-ID-Wraparound-Problem tendiert. Auf dieser Seite werden die Funktionsweise und die Verwendung des Cloud SQL-Recommenders für hohe Transaktions-ID-Auslastung beschrieben.

Funktionsweise

Eine Transaktions-ID wird beim Start der Transaktion zugewiesen und eingefroren, bis die Transaktion bereinigt wird. Die Transaktions-ID-Auslastung ist die Anzahl der nicht bereinigten Transaktionen („zugewiesen“ minus „eingefroren“), ausgedrückt als Anteil des Höchstwerts von 2 Milliarden. Bei den PostgreSQL-Standardeinstellungen, bei denen die Bereinigungsprozesse optimal und ohne Unterbrechung ausgeführt werden, tritt bei den meisten Datenbanken eine Transaktions-ID-Auslastung von etwa 10 % auf. Höhere Transaktions-ID-Auslastungen können in stark genutzten Datenbanken beobachtet werden, bei denen reguläre Arbeitslasten häufig Vorrang vor der Bereinigung haben. Wenn die Transaktions-ID-Auslastung zu sehr hohen Werten (80 % oder mehr) tendiert, besteht für die Datenbank möglicherweise das Risiko einer Ausschöpfung der Transaktions-IDs. Eine Transaktions-ID-Auslastung von 100 % wird als Transaktions-ID-Wraparound bezeichnet. Sobald der Prozentsatz der Transaktions-ID-Auslastung 100 % erreicht, akzeptiert PostgreSQL keine Schreibabfragen mehr.

Der Cloud SQL-Recommender für hohe Transaktions-ID-Auslastung analysiert die Transaktions-ID-Auslastung für eine Cloud SQL-PostgreSQL-Instanz.

Wenn der Prozentsatz der Transaktions-ID-Auslastung größer oder gleich 80 % ist, wird empfohlen, Maßnahmen zu ergreifen, um den Transaktions-ID-Wraparound zu vermeiden.

Preise

Der Cloud SQL-Recommender für hohe Transaktions-ID-Auslastung befindet sich in der Recommender-Preisstufe Standard.

Hinweis

Bevor Sie Empfehlungen und Informationen aufrufen können, müssen Sie Folgendes tun:

  • Prüfen Sie, ob Sie die erforderlichen Rollen haben, um die Berechtigungen zum Aufrufen und Verwenden von Informationen und Empfehlungen zu erhalten.
    Tasks Rollen
    Empfehlungen abrufen Eine der folgenden Rollen: recommender.cloudsqlViewer oder cloudsql.viewer.
    Empfehlungen übernehmen Eine der folgenden Rollen: recommender.cloudsqlAdmin, cloudsql.editor oder cloudsql.admin.
    Weitere Informationen zu Rollen finden Sie unter Informationen zu Rollen und IAM-Berechtigungen zuweisen.
  • Recommender API aktivieren.

    Aktivieren Sie die API

Empfehlungen zur Verbesserung der Instanzleistung auflisten

Sie können die Empfehlungen zur Verbesserung der Instanzleistung mit der Google Cloud Console, gcloud CLI oder der Recommender API auflisten.

Die Empfehlungen zur Verbesserung der Instanzleistung werden nur angezeigt, wenn Instanzen in der Nähe eines Transaktions-ID-Wraparound liegen.

Console

So listen Sie Empfehlungen zur Instanzleistung mithilfe der Google Cloud Console auf:

  1. Rufen Sie die Seite Cloud SQL-Instanzen auf.

    Cloud SQL-Instanzen aufrufen

  2. Klicken Sie im Banner „Empfehlungen für Transaktions-ID-Wraparound“ auf Alle ansehen.

Oder führen Sie die folgenden Schritte aus:

  1. Rufen Sie den Recommendation Hub auf. Siehe auch Erste Schritte mit dem Recommendation Hub.

    Zum Recommendation Hub

  2. Klicken Sie auf der Karte Cloud SQL-Instanzleistung verbessern auf Alle ansehen.

  3. Wählen Sie die Instanzen mit der Empfehlung Transaktions-ID-Wraparound verhindern aus.

gcloud-CLI

Führen Sie den Befehl gcloud recommender recommendations list so aus, um Empfehlungen zur Verbesserung der Instanzleistung mithilfe der gcloud CLI aufzulisten:

gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=LOCATION \
--recommender=google.cloudsql.instance.PerformanceRecommender \
--filter=recommenderSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID
  • LOCATION: eine Region, z. B. us-central1

API

Rufen Sie zum Auflisten von Empfehlungen zur Verbesserung der Instanzleistung mithilfe der Recommendations API die Methode recommendations.list so auf:

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/recommenders/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilizationBestPractice/recommendations

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: eine Region, z. B. us-central1

Wenn der Recommender Instanzen mit hoher Transaktions-ID-Auslastung erkennt, werden diese in einer Tabelle mit anderen Leistungsempfehlungen aufgelistet. Jede Zeile enthält die Instanz-ID, eine kurze Empfehlung, das Datenbankmodul, den Ort und das Datum der letzten Aktualisierung.

Informationen und detaillierte Empfehlungen anzeigen

Mit der Google Cloud Console, gcloud CLI oder der Recommender API können Sie Statistiken und detaillierte Empfehlungen zu Instanzen aufrufen, die zu einem Transaktions-ID-Wraparound tendieren.

Console

Wenn Sie mithilfe der Google Cloud Console Statistiken und detaillierte Empfehlungen zu Instanzen anzeigen möchten, die nahe am Leistungsgrenzwert liegen, klicken Sie auf den Empfehlungslink in der Liste der Instanzen.

gcloud-CLI

Um mit der gcloud CLI Statistiken und detaillierte Empfehlungen zu Instanzen aufzurufen, die nahe am Leistungsgrenzwert liegen, führen Sie so den Befehlgcloud recommender insights list aus:

gcloud recommender insights list \
--project=PROJECT_ID \
--location=LOCATION \
--insight-type=google.cloudsql.instance.PerformanceInsight \
--filter=insightSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: eine Region, z. B. us-central1

API

Um mithilfe der Recommendations API Statistiken und detaillierte Empfehlungen zu Instanzen zu erhalten, die nahe am Leistungsgrenzwert liegen, rufen Sie so die Methode insights.list auf:

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/insightTypes/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilization/insights

Dabei gilt:

  • PROJECT_ID: Ihre Projekt-ID.
  • LOCATION: eine Region, z. B. us-central1

In der folgenden Tabelle sind die Statisik und die Empfehlung aufgeführt, die der Cloud SQL-Recommender für hohe Transaktions-ID-Auslastung generiert. Die Untertypen werden in den Ergebnissen von gcloud CLI und der API angezeigt.

Statistik Empfehlung
Der Prozentsatz der Transaktions-ID-Auslastung für diese Instanz ist hoch und fast bei 100 %.
Untertyp: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Vermeiden Sie einen möglichen Transaktions-ID-Wraparound für Cloud SQL-Instanzen.
Untertyp: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Empfehlungen übernehmen

Sehen Sie sich die Empfehlungen sorgfältig an und führen Sie einen der folgenden Schritte aus:

  • Klicken Sie zum Ansehen der Empfehlung auf Instanz aufrufen. Siehe Leistung der Instanz optimieren oder Transaktions-ID-Wraparound verhindern und folgen Sie den Empfehlungen.

  • Klicken Sie auf Schließen, um die Empfehlung zu verwerfen, sodass sie ausgegraut ist und grau angezeigt wird.

  • Klicken Sie auf Abbrechen, um das Feld zu schließen, ohne die Empfehlung zu übernehmen oder zu verwerfen.

Leistung der Instanz optimieren

Gehen Sie so vor, um das Transaktions-ID-Wraparound-Problem für die Instanz zu beheben:

  1. Datenbank und Tabelle suchen, die den Wraparound verursacht

  2. Messwerte zur Transaktions-ID-Auslastung für Ihre Datenbankinstanzen prüfen und interpretieren

  3. Auf festhängende Transaktions-ID prüfen

  4. VACUUM-Blockierungen entfernen

  5. VACUUM-Geschwindigkeit prüfen und erhöhen

Weitere Informationen finden Sie im Blogpost VACUUM zum Beschleunigen der Transaktions-ID-Einfrierung in Cloud SQL for PostgreSQL verwenden.

Transaktions-ID-Wraparound verhindern

Führen Sie den folgenden Befehl aus, um einen Transaktions-ID-Wraparound für eine Instanz zu verhindern:

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Beispielausgabe:

postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound();
-[ RECORD 1 ]-----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
issue_description | Gemini has detected an open prepared transaction on your instance which is blocking vacuum. Monitor the transaction ID utilization and commit or rollback the transaction, as needed.
query             | ROLLBACK PREPARED 'trx_id_pin'; or COMMIT PREPARED 'trx_id_pin';
recommendation    | To commit a prepared transaction, you must be connected as the same user that originally executed the transaction: postgres
insights          | Transaction ID Utilization: 88.49%

Nächste Schritte