Condividi tramite


Monitorare con pg_stat_statements

Importante

La scalabilità automatica di Lakebase si trova in Beta nelle aree seguenti: eastus2, westeurope, westus.

Lakebase Autoscaling è la versione più recente di Lakebase con calcolo autoscalante, riduzione a zero, ramificazione e ripristino istantaneo. Per il confronto delle funzionalità con Lakebase Provisioned, vedere scegliere tra le versioni.

pg_stat_statements è un'estensione Postgres che fornisce una visualizzazione statistica dettagliata dell'esecuzione di istruzioni SQL all'interno del database Postgres di Lakebase. Tiene traccia delle informazioni, ad esempio conteggi di esecuzione, tempi di esecuzione totali e medi e altro ancora, consentendo di analizzare e ottimizzare le prestazioni delle query SQL.

Quando usare pg_stat_statements

Usare pg_stat_statements quando è necessario:

  • Statistiche dettagliate sull'esecuzione delle query e metriche delle prestazioni
  • Identificazione di query lente o eseguite di frequente
  • Analisi delle prestazioni delle query e informazioni dettagliate sull'ottimizzazione
  • Analisi del carico di lavoro del database e pianificazione della capacità
  • Integrazione con strumenti e dashboard di monitoraggio personalizzati

Abilitare pg_stat_statements

L'estensione pg_stat_statements è disponibile in Lakebase Postgres. Per abilitarlo:

  1. Connetti al tuo database usando l'editor SQL o un client Postgres.

  2. Eseguire il comando SQL seguente per creare l'estensione:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. L'estensione inizia a raccogliere statistiche immediatamente dopo la creazione.

Persistenza dei dati

Le statistiche raccolte dall'estensione pg_stat_statements vengono archiviate in memoria e non vengono mantenute quando il calcolo lakebase viene sospeso o riavviato. Ad esempio, se il calcolo si riduce a causa dell'inattività, le statistiche esistenti andranno perse. Dopo il riavvio del calcolo vengono raccolte nuove statistiche.

Questo comportamento significa che:

  • Reimpostazione delle statistiche dopo il riavvio del calcolo o le sospensioni
  • L'analisi delle prestazioni a esecuzione prolungata richiede una disponibilità di calcolo coerente
  • È consigliabile esportare statistiche importanti prima della manutenzione pianificata o dei riavvii

Annotazioni

È consigliabile eseguire regolarmente le query di monitoraggio e archiviare i risultati esternamente se sono necessari dati cronologici sulle prestazioni in eventi del ciclo di vita di calcolo.

Altre informazioni: Estensioni Postgres

Statistiche di esecuzione delle query

Dopo aver abilitato l'estensione, è possibile eseguire query sulle statistiche di esecuzione usando la vista pg_stat_statements. Questa vista contiene una riga per ogni query di database distinta, che mostra varie statistiche:

SELECT * FROM pg_stat_statements LIMIT 10;

La visualizzazione contiene dettagli come:

ID utente dbid queryid query calls
16391 16384 -9047282044438606287 SELECT * FROM users; 10

Per un elenco completo di colonne e descrizioni, vedere la documentazione di PostgreSQL.

Query di monitoraggio principali

Usare queste query per analizzare le prestazioni del database:

Trovare le query più lente

Questa query identifica le query con il tempo di esecuzione medio più elevato, che può indicare query inefficienti che richiedono l'ottimizzazione:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Trovare query eseguite più di frequente

Le query eseguite più di frequente sono spesso percorsi critici e candidati di ottimizzazione. Questa query include i rapporti di riscontri nella cache per identificare le query che potrebbero trarre vantaggio dall'indicizzazione migliore:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Trovare query con I/O più elevate

Questa query identifica le query che eseguono la maggior parte delle operazioni di I/O del disco, che possono influire sulle prestazioni complessive del database:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Trova le query più dispendiose in termini di tempo

Questa query identifica le query che consumano il tempo di esecuzione totale in tutte le esecuzioni.

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Trovare query che restituiscono molte righe

Questa query identifica le query che restituiscono set di risultati di grandi dimensioni, che possono trarre vantaggio dall'impaginazione o dal filtro:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Reimpostare le statistiche

Per reimpostare le statistiche raccolte da pg_stat_statements, seguire questi passaggi:

Annotazioni

Solo databricks_superuser i ruoli hanno il privilegio necessario per eseguire questa funzione. Al ruolo predefinito creato con un progetto Lakebase e i ruoli creati nell'app Lakebase viene concessa l'appartenenza al databricks_superuser ruolo.

SELECT pg_stat_statements_reset();

Questa funzione cancella tutti i dati statistici accumulati, ad esempio i tempi di esecuzione e i conteggi per le istruzioni SQL, e inizia a raccogliere dati aggiornati. È particolarmente utile quando si vuole iniziare a raccogliere statistiche sulle prestazioni.

Risorse

Altre informazioni: Documentazione di PostgreSQL