Evita il wraparound degli ID transazione

Il recommender di utilizzo di ID ad alte transazioni di Cloud SQL genera in modo proattivo suggerimenti che ti aiutano a evitare il potenziale wraparound degli ID transazione per le istanze PostgreSQL di Cloud SQL.

Puoi applicare questo suggerimento quando un'istanza Cloud SQL è in tendenza verso un problema wraparound dell'ID transazione. Questa pagina descrive come funziona il motore per suggerimenti di utilizzo di ID ad alte transazioni di Cloud SQL e come utilizzarlo.

Come funziona

Un ID transazione viene assegnato all'avvio della transazione e viene bloccato fino a quando la transazione non viene eliminata. L'utilizzo dell'ID transazione è il numero di transazioni non eliminate (assegnate meno congelate) espresso come frazione del valore massimo di 2 miliardi. Con le impostazioni predefinite di PostgreSQL, con i processi vacuum che funzionano in modo ottimale e senza interruzioni, la maggior parte dei database riscontra un utilizzo degli ID transazione nella regione di circa il 10%. È possibile osservare livelli di utilizzo di ID transazione più elevati nei database occupati, in cui i carichi di lavoro regolari hanno spesso la precedenza sul vacuum. Se l'utilizzo degli ID transazione tende a raggiungere valori molto elevati (80% o più), il database potrebbe essere a rischio di esaurimento degli ID transazione. L'utilizzo dell'ID transazione che raggiunge il 100% viene definito come wraparound degli ID transazione. Quando la percentuale di utilizzo dell'ID transazione raggiunge il 100%, PostgreSQL smette di accettare query di scrittura.

Il motore per suggerimenti di utilizzo di ID ad alte transazioni di Cloud SQL analizza l'utilizzo degli ID transazione su un'istanza PostgreSQL di Cloud SQL.

Se la percentuale di utilizzo dell'ID transazione è superiore o uguale all'80%, ti consigliamo di intervenire per evitare il wraparound degli ID transazione.

Prezzi

Il motore per suggerimenti high-transaction-ID-utilization in Cloud SQL si trova nel livello di prezzo Standard del motore per suggerimenti.

Prima di iniziare

Prima di poter visualizzare consigli e approfondimenti:

  • Per ottenere le autorizzazioni necessarie per visualizzare e utilizzare insight e suggerimenti, assicurati di disporre dei ruoli richiesti.
    Attività Ruoli
    Visualizza i suggerimenti Uno di questi ruoli: recommender.cloudsqlViewer o cloudsql.viewer.
    Applica consigli Uno di questi ruoli: recommender.cloudsqlAdmin, cloudsql.editor, o cloudsql.admin.
    Per maggiori informazioni sui ruoli, consulta la pagina relativa ai ruoli e alla concessione delle autorizzazioni IAM.
  • Attiva l'API Recommender.

    Abilita l'API

Elenco suggerimenti per migliorare le prestazioni delle istanze

Puoi elencare i suggerimenti per il miglioramento delle prestazioni dell'istanza utilizzando la console Google Cloud, gcloud CLI o l'API Recommender.

I suggerimenti per il miglioramento delle prestazioni delle istanze vengono mostrati solo se si hanno istanze vicine al wrapping di un ID transazione.

Console

Per elencare i suggerimenti sulle prestazioni delle istanze utilizzando la console Google Cloud, segui questi passaggi:

  1. Vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Fai clic su Visualizza tutto nel banner dei suggerimenti wraparound per la prevenzione di ID transazione.

In alternativa, procedi nel seguente modo:

  1. Vai all'hub dei suggerimenti. Consulta anche la Guida introduttiva all'hub dei suggerimenti.

    Vai all'hub dei suggerimenti

  2. Nella scheda Migliora le prestazioni dell'istanza Cloud SQL, fai clic su Visualizza tutto.

  3. Seleziona le istanze con il consiglio Evita il wraparound degli ID transazione.

Interfaccia a riga di comando gcloud

Per elencare i suggerimenti per il miglioramento delle prestazioni dell'istanza utilizzando gcloud CLI, esegui il comando gcloud recommender recommendations list come segue:

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • LOCATION: una regione, come us-central1

API

Per elencare i suggerimenti per il miglioramento delle prestazioni dell'istanza utilizzando l'API Recommendations, chiama il metodo recommendations.list come segue:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto.
  • LOCATION: una regione, come us-central1.

Se il motore per suggerimenti rileva istanze con un utilizzo elevato di ID transazione, le elenca in una tabella insieme ad altri suggerimenti sulle prestazioni. Ogni riga mostra l'ID istanza, un breve suggerimento, il motore del database, la posizione e la data dell'ultimo aggiornamento.

Visualizza approfondimenti e consigli dettagliati

Puoi visualizzare insight e suggerimenti dettagliati sulle istanze che tendono al wraparound di un ID transazione utilizzando la console Google Cloud, gcloud CLI o l'API Recommender.

Console

Per visualizzare insight e suggerimenti dettagliati sulle istanze che sono vicine alla soglia di prestazioni utilizzando la console Google Cloud, fai clic sul link dei suggerimenti nell'elenco delle istanze.

Interfaccia a riga di comando gcloud

Per visualizzare insight e suggerimenti dettagliati sulle istanze che sono vicine alla soglia di prestazioni utilizzando gcloud CLI, esegui il comando gcloud recommender insights list come segue:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto.
  • LOCATION: una regione, come us-central1.

API

Per visualizzare insight e suggerimenti dettagliati sulle istanze che sono vicine alla soglia di prestazioni utilizzando l'API Recommendations, chiama il metodo insights.list come segue:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto.
  • LOCATION: una regione, come us-central1.

La seguente tabella elenca gli insight e i suggerimenti generati dal motore per suggerimenti di utilizzo di ID ad alte transazioni di Cloud SQL. I sottotipi sono visibili nei risultati gcloud CLI e API.

Approfondimento Suggerimento
La percentuale di utilizzo dell'ID transazione su questa istanza è elevata e vicina al 100%.
Sottotipo: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Evita il potenziale wraparound degli ID transazione per le istanze Cloud SQL.
Sottotipo: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Applica consigli

Valuta attentamente i consigli e procedi in uno dei seguenti modi:

Ottimizza le prestazioni dell'istanza

Per risolvere il problema di wraparound degli ID transazione con l'istanza:

  1. Trova il database e la tabella che causa l'aggregazione.

  2. Esplora e interpreta le metriche di utilizzo degli ID transazione sulle tue istanze di database.

  3. Verifica la presenza di un ID transazione bloccato.

  4. Rimuovi i blocchi del VACUUM.

  5. Controlla e accelera la velocità del VACUUM.

Per ulteriori informazioni, consulta anche il post del blog Using VACUUM to accelerate transaction ID freezing in Cloud SQL per PostgreSQL.

Evita il wraparound degli ID transazione

Per evitare il wraparound degli ID transazione per un'istanza, esegui questo comando:

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Output di esempio:

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%

Passaggi successivi