Evita il wraparound degli ID transazione

Il motore per suggerimenti per un 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 un utilizzo elevato dell'ID transazione di Cloud SQL è supportato solo per le istanze della versione Cloud SQL Enterprise Plus.

Puoi applicare questo suggerimento quando una tendenza di un'istanza Cloud SQL indica un problema di wraparound dell'ID transazione. Questa pagina descrive il funzionamento del motore per suggerimenti per un 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 bloccato fino a quando la transazione non viene sottoposta a vacuum. L'utilizzo dell'ID transazione è il numero di transazioni non sottoposte a vacuum (assegnate meno bloccate) espresso come frazione del valore massimo di 2 miliardi. Con le impostazioni predefinite di PostgreSQL, con i processi di vacuum che funzionano in modo ottimale e senza interruzioni, la maggior parte dei database registra un utilizzo dell'ID transazione nella regione di circa il 10%. È possibile osservare livelli di utilizzo dell'ID transazione più elevati nei database occupati in cui i carichi di lavoro regolari hanno spesso la precedenza sul vacuum. Se l'utilizzo dell'ID transazione tende a 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 motore per suggerimenti per un 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 intraprendere azioni per evitare il wraparound dell'ID transazione.

Prezzi

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

Prima di iniziare

Prima di poter visualizzare i suggerimenti e gli approfondimenti:

  • Per ottenere le autorizzazioni per visualizzare e utilizzare approfondimenti e suggerimenti, assicurati di disporre dei ruoli necessari.
    Tasks Ruoli
    Visualizza i suggerimenti Uno di questi ruoli: recommender.cloudsqlViewer o cloudsql.viewer.
    Applica suggerimenti Uno di questi ruoli: recommender.cloudsqlAdmin, cloudsql.editor, o cloudsql.admin.
    Per saperne di più sui ruoli, consulta la sezione Informazioni sui ruoli e sulla concessione delle autorizzazioni IAM.
  • Abilita l'API Recommender.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilitare l'API

Elenca i suggerimenti per migliorare il rendimento dell'istanza

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

I suggerimenti per migliorare il rendimento dell'istanza vengono visualizzati solo se hai istanze che si avvicinano a un wraparound dell'ID transazione.

Console

Per elencare i suggerimenti sul rendimento dell'istanza utilizzando la Google Cloud console:

  1. Vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Fai clic su Visualizza tutto nel banner dei suggerimenti per evitare il wraparound dell'ID transazione.

In alternativa, segui questi passaggi:

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

    Vai ad Active Assist

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

  3. Seleziona le istanze con il suggerimento Evita il wraparound dell'ID transazione.

gcloud CLI

Per elencare i suggerimenti per migliorare il rendimento dell'istanza utilizzando gcloud CLI, esegui il gcloud recommender recommendations list comando 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 suggerimenti per migliorare il rendimento dell'istanza utilizzando l' API Recommendations, chiama il recommendations.list metodo 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: 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 suggerimenti sul rendimento. Ogni riga mostra l'ID istanza, un breve suggerimento, il motore del database, la località e la data dell'ultimo aggiornamento.

Visualizza approfondimenti e suggerimenti dettagliati

Puoi visualizzare approfondimenti e suggerimenti dettagliati sulle istanze che si avvicinano a un wraparound dell'ID transazione utilizzando la Google Cloud console, gcloud CLI, o l'API Recommender.

Console

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

gcloud CLI

Per visualizzare approfondimenti e suggerimenti dettagliati sulle istanze che si avvicinano alla soglia di rendimento utilizzando gcloud CLI, esegui il gcloud recommender insights list comando 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 suggerimenti dettagliati sulle istanze che si avvicinano 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: il tuo ID progetto.
  • LOCATION: una regione, ad esempio us-central1.

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

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 dell'ID transazione per le istanze Cloud SQL.
Sottotipo: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Applica suggerimenti

Valuta attentamente i suggerimenti ed esegui una delle seguenti operazioni:

Ottimizza 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 sulle istanze del database.

  3. Verifica la presenza di un ID transazione bloccato.

  4. Rimuovi i blocchi di VACUUM.

  5. Controlla e accelera la velocità di VACUUM.

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 dell'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 | 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