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 il motore per suggerimenti di utilizzo elevato di ID transazione di Cloud SQL e come 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 bloccate) 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%. Nei database occupati si possono osservare livelli di utilizzo di ID transazione più elevati in cui i carichi di lavoro regolari hanno spesso la precedenza sulla vacuum. Se l'utilizzo dell'ID transazione si avvicina valori molto alti (80% o più), il database potrebbe esaurire le somme dell'ID transazione. L'utilizzo dell'ID transazione che raggiunge il 100% viene definito wraparound di ID transazione. Quando la percentuale di utilizzo dell'ID transazione raggiunge il 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 di Cloud SQL.

Se la percentuale di utilizzo degli ID transazione è uguale o superiore 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:

  • 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 oppure cloudsql.viewer.
    Applica 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 il rendimento delle istanze

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

I suggerimenti per migliorare le prestazioni delle istanze vengono mostrati solo se hai istanze che sono in fase di wraparound di ID transazione.

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, 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 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 suggerimenti Migliora le prestazioni delle istanze utilizzando gcloud CLI, esegui la 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 progetto.
  • LOCATION: una regione, ad esempio us-central1.

Se il motore per suggerimenti rileva istanze con un elevato utilizzo di ID transazione, le elenca in una tabella con altri consigli 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 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 consigli dettagliati sulle istanze vicine alla soglia di prestazioni utilizzando la console Google Cloud, fai clic sul link al consiglio nell'elenco delle istanze.

Interfaccia a riga di comando gcloud

Per visualizzare insight e suggerimenti dettagliati sulle istanze che stanno per raggiungere la soglia di prestazioni utilizzando gcloud CLI, esegui la 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 progetto.
  • LOCATION: una regione, ad esempio us-central1.

API

per visualizzare insight e suggerimenti dettagliati sulle istanze che sono vicine alla soglia delle prestazioni mediante l'API Recommendations, chiama 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 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 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 ed esegui una delle seguenti operazioni:

Ottimizza le prestazioni dell'istanza

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

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

  2. Esplora e interpreta le metriche di utilizzo degli ID transazione sulle tue 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 Utilizzare VACUUM per accelerare il blocco dell'ID transazione in Cloud SQL per PostgreSQL.

Evita il wraparound degli ID transazione

Per evitare il wraparound di 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