Analisi degli alberi di blocco per Amazon Aurora PostgreSQL con CloudWatch Database Insights - Amazon CloudWatch

Analisi degli alberi di blocco per Amazon Aurora PostgreSQL con CloudWatch Database Insights

Per risolvere i problemi di prestazioni causati dai blocchi, puoi analizzare gli alberi di blocco per i database Amazon Aurora PostgreSQL con CloudWatch Database Insights utilizzando quanto segue.

  • Menu a discesa Suddiviso per: scegli le dimensioni Oggetto bloccante, Sessione bloccante o SQL bloccante nel grafico del Carico del database per vedere come ciascuno dei principali errori bloccanti contribuisce al carico DB nel tempo. Grazie al grafico del carico del database puoi analizzare se i principali errori bloccanti sono costanti o se variano spesso. Ciò ti permette di risolvere i problemi relativi ai blocchi.

    La tabella SQL principali con Sessione bloccante selezionata nel menu a discesa Suddiviso per
  • Scheda Analisi dei blocchi: scegli Analisi del carico DB, quindi scegli la scheda Analisi dei blocchi per visualizzare le informazioni sulla contesa dei blocchi nel tuo database.

    La tabella Alberi di blocco nel pannello di controllo di carico del database
Nota

CloudWatch Database Insights supporta l'analisi dei blocchi per tutte le versioni di Aurora PostgreSQL. Per analizzare gli alberi di blocco, è necessario che sia abilitata la modalità avanzata di Database Insights. Per informazioni su come attivare la modalità avanzata, consulta Turning on the Advanced mode of Database Insights for Amazon Aurora e Turning on the Advanced mode of Database Insights for Amazon Relational Database Service

La scheda di analisi dei blocchi fornisce informazioni sulla contesa dei blocchi per il database. La visualizzazione ad albero dei blocchi mostra le relazioni e le dipendenze tra le richieste di blocco provenienti da sessioni diverse.

Database Insights acquisisce snapshot ogni 15 secondi. Gli snapshot mostrano i dati di blocco del database in un determinato momento.

Nota

Quando CloudWatch rileva un blocco elevato, CloudWatch visualizza il banner Blocco elevato rilevato per la scheda Analisi dei blocchi. CloudWatch rileva un blocco elevato se acquisisce uno snapshot del blocco per ogni intervallo di 15 secondi per 15 minuti consecutivi.

Ogni nodo dell'albero rappresenta una sessione specifica. Il nodo principale è una sessione che blocca i relativi nodi secondari.

Per analizzare gli alberi di blocco, attieniti alla procedura seguente.

Per analizzare gli alberi di blocco
  1. Accedi alla Console di gestione AWS e apri la console CloudWatch all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Scegli Approfondimenti.

  3. Scegli Approfondimenti sul database.

  4. Scegli la visualizzazione Istanza database.

  5. Scegli un'istanza database.

  6. Scegli la scheda Analisi del carico DB.

  7. Scegli la scheda Analisi dei blocchi.

    Per visualizzare i dati di blocco per un'istanza DB, scegli un periodo di un giorno o meno.

  8. Scegli una finestra di snapshot. Per impostazione predefinita, Database Insights sceglie la finestra di snapshot con le sessioni maggiormente bloccate.

    Tabella di analisi dei blocchi
  9. Per visualizzare i dati di blocco per uno snapshot, scegli l'ora in cui Database Insights ha scattato lo snapshot.

  10. Per espandere un albero di blocco, scegli la freccia accanto all'ID della sessione.

    Albero di blocco espanso

Dati dello snapshot di blocco

Database Insights fornisce le seguenti informazioni per ogni richiesta di blocco. Per visualizzare le colonne che non sono abilitate per impostazione predefinita, scegli l'icona Impostazioni per la tabella Alberi di blocco e abilita le altre colonne.

Nome colonna Definizione Colonna predefinita Note

session_id

L'identificativo di sessione univoco.

Il session_id è derivato da HEX(pg_stat_activity.backend_start).HEX(pg_locks.pid).

pid

Il PID di questo backend.

pg_locks.pid

blocked_sessions_count

Il numero di sessioni bloccate da questo blocco.

Il blocked_sessions_count è derivato dal numero di ID di sessione bloccati da questo blocco.

last_query_executed

L'ultima query eseguita da questa sessione. Per gli errori bloccanti, potrebbe non essere la query a contenere il blocco che determina il blocco.

pg_stat_activity.query

wait_event

Il nome dell'evento di attesa se il backend è attualmente in attesa, altrimenti il valore è NULL.

pg_stat_activity.wait_event

blocking_time_(In Seconds)

Il tempo (in secondi) dall'inizio di questo blocco.

Il blocking_time_(In Seconds) è derivato dall'ora di inizio della transazione di attesa (pg_locks.waitstart) per la prima in attesa.

blocking_mode

La modalità di blocco mantenuta dalla sessione di blocco.

No

pg_locks.mode

waiting_mode

La modalità di blocco richiesta dalla sessione di attesa.

No

pg_locks.mode

application

Il nome dell'applicazione connessa a questo backend.

No

pg_stat_activity.application_name

blocking_txn_start_time

L'ora di inizio della transazione di blocco oppure null se nessuna transazione è attiva.

No

pg_stat_activity.xact_start

waiting_start_time

L'ora in cui una sessione utente in attesa ha iniziato ad attendere questo blocco, oppure null se il blocco è mantenuto.

No

pg_locks.waitstart

session_start_time

L'ora in cui una sessione utente è iniziata.

No

pg_stat_activity.backend_start

state

Lo stato di un backend.

No

pg_stat_activity.state

wait_event_type

Il tipo di evento di attesa per il quale questa sessione è in attesa.

No

pg_stat_activity.wait_event_type

last_query_exec_time

L'ora in cui è stata avviata l'ultima query.

No

pg_stat_activity.query_start

user

Il nome dell'utente che ha effettuato l'accesso a questo backend.

No

pg_stat_activity.usename

host

Il nome host del client connesso, come riportato da una ricerca DNS inversa di client_addr. Questo campo sarà non null solo per le connessioni IP e solo quando log_hostname è abilitato.

No

pg_stat_activity.client_hostname

port

Il numero di porta TCP utilizzato dal client per la comunicazione con questo backend, oppure -1 se viene utilizzato un socket Unix. Se questo campo è null, indica che questo è un processo interno del server.

No

pg_stat_activity.client_port

client_address

L'indirizzo IP del client connesso a questo backend. Se questo campo è null, indica che il client è connesso tramite un socket Unix sulla macchina server o che si tratta di un processo interno come autovacuum.

No

pg_stat_activity.client_addr

granted

Il valore è true se il blocco è mantenuto e false se il blocco è atteso.

No

pg_locks.granted

waiting_tuple

Il numero di tupla indicato dal blocco all'interno della pagina oppure null se la destinazione non è una tupla.

No

pg_locks.tuple

waiting_page

Il numero di pagina indicato dal blocco all'interno della relazione oppure null se la destinazione non è una pagina o una tupla di relazione.

No

pg_locks.page

waiting_transaction_id

L'ID della transazione oggetto del blocco oppure null se la destinazione non è un ID di transazione.

No

pg_locks.transactionid

waiting_relation

L'OID della relazione sulla quale è applicato il blocco oppure null se la destinazione non è una relazione o parte di una relazione.

No

pg_locks.relation

waiting_object_id

L'OID della destinazione del blocco all'interno del relativo catalogo di sistema oppure null se la destinazione non è un oggetto di database generale.

No

pg_locks.objid

waiting_database_id

L'OID del database in cui esiste la destinazione del blocco, oppure zero se la destinazione è un oggetto condiviso, oppure null se la destinazione è un ID di transazione.

No

pg_locks.database

waiting_database_name

Il nome del database in cui è presente la destinazione del blocco.

No

pg_stat_activity.datname

waiting_locktype

Il tipo di oggetto bloccabile: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory o applytransaction.

No

pg_locks.locktype

is_fastpath

Il valore è true se il blocco è stato preso con il percorso veloce e false se preso dalla tabella di blocco principale.

No

pg_locks.fastpath

Per ulteriori informazioni sui valori nelle viste pg_stat_activity e pg_locks, consulta i seguenti argomenti nella documentazione di PostgreSQL.