Evita il wraparound degli ID transazione

Il motore per suggerimenti per l'utilizzo elevato dell'ID transazione di Cloud SQL genera in modo proattivo suggerimenti che ti aiutano a evitare il potenziale wraparound dell'ID transazione per le istanze Cloud SQL per PostgreSQL. Il motore per suggerimenti per l'utilizzo elevato dell'ID transazione di Cloud SQL è supportato solo per le istanze della versione Cloud SQL Enterprise Plus.

Puoi applicare questo suggerimento quando un'istanza Cloud SQL sta per raggiungere il limite di ID transazione. Questa pagina descrive il funzionamento del suggerimento per l'utilizzo elevato dell'ID transazione di Cloud SQL e come puoi utilizzarlo.

Come funziona

Un ID transazione viene assegnato all'inizio della transazione e rimane invariato finché la transazione non viene eliminata. L'utilizzo dell'ID transazione è il numero di transazioni non compattate (assegnate meno congelate) espresso come frazione del valore massimo di 2 miliardi. In base alle impostazioni predefinite di PostgreSQL, con i processi VACUUM eseguiti in modo ottimale e senza interruzioni, la maggior parte dei database registra un utilizzo dell'ID transazione pari a circa il 10%. Livelli di utilizzo più elevati dell'ID transazione possono essere osservati in database occupati in cui i workload regolari hanno spesso la precedenza sul vacuum. Se la tendenza di utilizzo dell'ID transazione è verso valori molto elevati (80% o più), il database potrebbe essere a rischio di esaurimento dell'ID transazione. Quando l'utilizzo dell'ID transazione raggiunge il 100%, si parla di wraparound dell'ID transazione. Una volta che la percentuale di utilizzo dell'ID transazione raggiunge il 100%, PostgreSQL smette di accettare query di scrittura.

Il sistema di suggerimenti per l'utilizzo elevato dell'ID transazione di Cloud SQL analizza l'utilizzo dell'ID transazione su un'istanza Cloud SQL per PostgreSQL.

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

Prezzi

Il motore per suggerimenti per l'utilizzo elevato dell'ID transazione di Cloud SQL si trova nel livello di prezzo Standard di Recommender.

Prima di iniziare

Prima di poter visualizzare consigli e approfondimenti, procedi nel seguente modo:

  • 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.
    Applica consigli Uno di questi ruoli: recommender.cloudsqlAdmin, cloudsql.editor o cloudsql.admin.
    Per saperne di più sui ruoli, consulta Informazioni sui ruoli e Concessione delle autorizzazioni IAM.
  • Enable the Recommender API.

    Enable the API

Elenco dei consigli per migliorare il rendimento dell'istanza

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

I suggerimenti per migliorare il rendimento dell'istanza vengono visualizzati solo se hai istanze che si stanno avvicinando al wraparound dell'ID transazione.

Console

Per elencare i consigli sul rendimento delle istanze utilizzando la consoleTrusted 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 Evita il wraparound degli ID transazione.

In alternativa, segui questi passaggi:

  1. Vai all'hub dei suggerimenti. Vedi anche Introduzione 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 consigli per migliorare il rendimento 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, ad esempio us-central1

API

Per elencare i consigli per migliorare il rendimento dell'istanza utilizzando l'API Recommendations, chiama il metodo recommendations.list nel seguente modo:

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: una regione, ad esempio us-central1.

Se il motore per suggerimenti rileva istanze con un utilizzo elevato dell'ID transazione, le elenca in una tabella con 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 che tendono a un wraparound dell'ID transazione utilizzando la console Trusted Cloud ,gcloud CLI o l'API Recommender.

Console

Per visualizzare approfondimenti e consigli dettagliati sulle istanze che si avvicinano alla soglia di rendimento utilizzando la console Trusted Cloud , fai clic sul link del consiglio nell'elenco delle istanze.

Interfaccia a riga di comando gcloud

Per visualizzare approfondimenti e consigli dettagliati sulle istanze che si avvicinano 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: il tuo ID progetto.
  • LOCATION: una regione, ad esempio us-central1.

API

Per visualizzare approfondimenti e consigli dettagliati sulle istanze che si avvicinano alla soglia di rendimento utilizzando l'API Recommendations, chiama il metodo insights.list nel seguente modo:

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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • LOCATION: una regione, ad esempio us-central1.

La seguente tabella elenca l'approfondimento e il suggerimento generati dal recommender di Cloud SQL per l'utilizzo elevato dell'ID transazione. I sottotipi sono visibili nei risultati dell'API e in gcloud CLI.

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

Applica consigli

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

Ottimizzare il rendimento dell'istanza

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

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

  2. Esplora e interpreta le metriche di utilizzo dell'ID transazione nelle istanze del database.

  3. Controlla se un ID transazione è bloccato.

  4. Rimuovi i blocchi VACUUM.

  5. Controlla e accelera la velocità di ASPIRAZIONE.

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 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 | Cloud SQL for PostgreSQL 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