Evita il wraparound degli ID transazione

Il motore per suggerimenti di Cloud SQL per un utilizzo elevato di ID transazione genera proattivamente consigli che ti aiutano a evitare potenziali wraparound di ID transazione per le istanze PostgreSQL di Cloud SQL.

Puoi applicare questo consiglio quando un'istanza Cloud SQL è in procinto di avere un problema di azzeramento dell'ID transazione. Questa pagina descrive come funziona il recommender per l'utilizzo elevato di ID transazioni di Cloud SQL e come puoi utilizzarlo.

Come funziona

Un ID transazione viene assegnato all'avvio della transazione e viene bloccato fino al vuotamento della transazione. L'utilizzo dell'ID transazione è il numero di transazioni non sottoposte a sottovuoto (assegnate meno quelle congelate) espresso come frazione del valore massimo di 2 miliardi. Nelle impostazioni predefinite di PostgreSQL, con i processi VACUUM che funzionano in modo ottimale e senza interruzioni, la maggior parte dei database presenta un utilizzo dell'ID transazione nella regione di circa il 10%. È possibile osservare livelli di utilizzo degli ID transazione più elevati nei database impegnati dove i carichi di lavoro regolari hanno spesso la precedenza sul vuoto. Se l'utilizzo degli ID transazione tende a valori molto elevati (80% o più), il database potrebbe essere a rischio di esaurimento degli ID transazione. L'utilizzo degli ID transazione che raggiunge il 100% è definito wraparound degli ID transazione. Una volta raggiunta la percentuale di utilizzo dell'ID transazione del 100%, PostgreSQL smette di accettare query di scrittura.

Il motore per suggerimenti Cloud SQL con utilizzo elevato di ID transazione analizza l'utilizzo degli ID transazione su un'istanza PostgreSQL Cloud SQL.

Se la percentuale di utilizzo degli ID transazione è superiore o uguale all'80%, ti consigliamo di adottare misure per evitare il wrapping degli ID transazione.

Prezzi

Il motore per suggerimenti per un elevato utilizzo di ID transazioni di Cloud SQL si trova nel livello di prezzo del motore per suggerimenti Standard.

Prima di iniziare

Prima di poter visualizzare consigli e approfondimenti, svolgi i seguenti passaggi:

  • Per ottenere le autorizzazioni per visualizzare e utilizzare approfondimenti e consigli, assicurati di disporre dei ruoli richiesti.
    Tasks Ruoli
    Visualizza i suggerimenti Uno di questi ruoli: recommender.cloudsqlViewer o cloudsql.viewer.
    Applicare i consigli Uno di questi ruoli: recommender.cloudsqlAdmin, cloudsql.editor o cloudsql.admin.
    Per ulteriori informazioni sui ruoli, consulta Informazioni sui ruoli e Concedere autorizzazioni IAM.
  • Enable the Recommender API.

    Enable the API

Elenca i consigli per migliorare le prestazioni delle istanze

Puoi elencare i consigli per migliorare le prestazioni delle istanze utilizzando la console Google Cloud, gcloud CLI o l'API Recommender.

I consigli per migliorare le prestazioni delle istanze vengono visualizzati solo se hai istanze che stanno per raggiungere un ID transazione con arrotondamento.

Console

Per elencare i consigli sul rendimento 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 consigli per evitare il wraparound degli ID transazione.

In alternativa, segui questi passaggi:

  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 delle istanze 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 consigli per migliorare il rendimento delle istanze 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, ad esempio us-central1

API

Per elencare i consigli per migliorare il rendimento delle istanze 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, ad esempio us-central1.

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

Visualizzare approfondimenti e consigli dettagliati

Puoi visualizzare approfondimenti e consigli dettagliati sulle istanze con tendenza a un a capo dell'ID transazione utilizzando la console Google Cloud, gcloud CLI o l'API Recommender.

Console

Per visualizzare approfondimenti e suggerimenti dettagliati sulle istanze vicine alla soglia di prestazioni utilizzando la console Google Cloud, fai clic sul link al suggerimento nell'elenco delle istanze.

Interfaccia a riga di comando gcloud

Per visualizzare approfondimenti e consigli dettagliati sulle istanze vicine alla soglia di rendimento 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, ad esempio us-central1.

API

Per visualizzare approfondimenti e consigli dettagliati sulle istanze vicine alla soglia di rendimento 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, ad esempio us-central1.

La tabella seguente elenca gli approfondimenti e i consigli generati dal motore per suggerimenti per l'utilizzo elevato di ID transazioni di Cloud SQL. I sottotipi sono visibili nei risultati di gcloud CLI e dell'API.

Insight Consiglio
La percentuale di utilizzo degli 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

Applicare i consigli

Valuta attentamente i consigli e svolgi una delle seguenti operazioni:

Ottimizzare le prestazioni dell'istanza

Per risolvere il problema di a capo dell'ID transazione con l'istanza:

  1. Individua il database e la tabella che causano il wrapping.

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

  3. Controlla se è presente un ID transazione bloccato.

  4. Rimuovi i blocchi VACUUM.

  5. Controlla e accelera la velocità di ASPIRAPOLVERE.

Per ulteriori informazioni, consulta anche il post del blog Utilizzo di VACUUM per accelerare il blocco dell'ID transazione in Cloud SQL per PostgreSQL.

Evita il wraparound degli ID transazione

Per evitare il wraparound dell'ID transazione per un'istanza, esegui il seguente 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