Il motore per suggerimenti di Cloud SQL per l'utilizzo elevato dell'ID transazione genera in modo proattivo consigli 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 Cloud SQL Enterprise Plus.
Puoi applicare questo consiglio quando un'istanza Cloud SQL sta per raggiungere il limite massimo di ID transazione. Questa pagina descrive come funziona il motore per suggerimenti 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 quelle bloccate) espresso come frazione del valore massimo di 2 miliardi. In base alle impostazioni predefinite di PostgreSQL, con i processi di 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 su vacuum. Se la tendenza di utilizzo degli ID transazione è verso valori molto elevati (80% o più), il database potrebbe essere a rischio di esaurimento degli ID transazione. Quando l'utilizzo dell'ID transazione raggiunge il 100%, si parla di wraparound dell'ID transazione. Quando la percentuale di utilizzo dell'ID transazione raggiunge il 100%, PostgreSQL smette di accettare query di scrittura.
Il suggeritore 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.
Per saperne di più sui ruoli, consulta Informazioni sui ruoli e Concessione delle autorizzazioni IAM.Tasks Ruoli Visualizza i suggerimenti Uno di questi ruoli: recommender.cloudsqlViewerocloudsql.viewer.Applica suggerimenti Uno di questi ruoli: recommender.cloudsqlAdmin,cloudsql.editorocloudsql.admin. Abilita l'API Recommender, se non è già abilitata.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di 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.
Elenco dei consigli per migliorare il rendimento dell'istanza
Puoi elencare i suggerimenti per migliorare le prestazioni delle istanze utilizzando la console Google Cloud , gcloud CLI o l'API Recommender.
I suggerimenti per migliorare il rendimento delle istanze vengono visualizzati solo se hai istanze che si stanno avvicinando a un wraparound dell'ID transazione.
Console
Per elencare i consigli sul rendimento delle istanze utilizzando la consoleGoogle Cloud , segui questi passaggi:
Vai alla pagina Istanze Cloud SQL.
Fai clic su Visualizza tutto nel banner dei consigli Evita il wraparound degli ID transazione.
In alternativa, segui questi passaggi:
Vai ad Active Assist. Vedi anche Inizia a utilizzare l'hub dei suggerimenti.
Nella scheda Migliora le prestazioni dell'istanza Cloud SQL, fai clic su Visualizza tutto.
Seleziona le istanze con il consiglio Evita il wraparound degli ID transazione.
gcloud CLI
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 progettoLOCATION: una regione, ad esempious-central1
API
Per elencare i suggerimenti 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: il tuo ID progetto.LOCATION: una regione, ad esempious-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 suggerimento, il motore del database, la posizione e la data dell'ultimo aggiornamento.
Visualizzare approfondimenti e suggerimenti dettagliati
Puoi visualizzare approfondimenti e suggerimenti dettagliati sulle istanze
che tendono a un wraparound dell'ID transazione utilizzando la console Google 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 Google Cloud , fai clic sul link del consiglio nell'elenco delle istanze.
gcloud CLI
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 esempious-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 esempious-central1.
La tabella seguente elenca l'insight e il suggerimento generati dal motore per suggerimenti per l'utilizzo elevato dell'ID transazione di Cloud SQL. I sottotipi sono visibili in gcloud CLI e
nei risultati dell'API.
| Insight | Suggerimento |
|---|---|
| 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 suggerimenti
Valuta attentamente i consigli e procedi in uno dei seguenti modi:
Per esaminare il consiglio, fai clic su Visualizza istanza. Consulta Ottimizzare il rendimento dell'istanza o Evitare il wraparound dell'ID transazione e segui i consigli.
Per ignorare il consiglio in modo che venga meno enfatizzato e visualizzato in grigio, fai clic su Ignora.
Per chiudere il riquadro senza applicare o ignorare il suggerimento, fai clic su Annulla.
Ottimizzare il rendimento dell'istanza
Per risolvere il problema del wraparound dell'ID transazione con l'istanza:
Per ulteriori informazioni, consulta anche il post del blog Utilizzo di VACUUM per accelerare il blocco degli 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
- Monitorare la disponibilità del disco
- Identificare le istanze Cloud SQL inattive
- Riduci le istanze Cloud SQL con provisioning eccessivo
- Esplora i Google Cloud sistemi di raccomandazione