Il piano di interrogazione EXPLAIN - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Il piano di interrogazione EXPLAIN

PostgreSQL fornisce le opzioni EXPLAIN ANALYZE e EXPLAIN le opzioni per restituire piani di query con dettagli su come verrà eseguita la query.

L'istruzione EXPLAIN

L'EXPLAINistruzione restituisce il piano di query generato dal pianificatore PostgreSQL per una determinata istruzione. Il piano di interrogazione mostra quanto segue:

  • Come verranno scansionate le tabelle coinvolte in un'istruzione (ad esempio, mediante scansione dell'indice o scansione sequenziale)

  • Come verranno unite più tabelle (ad esempio, hash join, merge join o nested loop join)

La comprensione del piano è fondamentale per migliorare le prestazioni della query. Dopo aver compreso il piano, puoi concentrarti sui punti in cui la query impiega troppo tempo e agire per ridurre i tempi.

Utilizzo di EXPLAIN ANAL

In PostgreSQLEXPLAIN, genererà solo un piano per l'istruzione specificata. Se aggiungi la ANALYZE parola chiave, EXPLAIN restituirà il piano, eseguirà la query e mostrerà il runtime effettivo e il conteggio delle righe per ogni passaggio. Questo è indispensabile per analizzare le prestazioni delle query.

Importante

Durante l'usoEXPLAIN ANALYZE, fai attenzione a INSERTUPDATE, eDELETE.

Come leggere il piano di interrogazione EXPLAIN

Un piano di query PostgreSQL è una struttura ad albero composta da diversi nodi. Il piano di EXPLAIN query mostra i passaggi utilizzati dal motore di database per eseguire una query. Il piano di interrogazione fornisce le seguenti informazioni:

  • Il tipo di operazioni eseguite, ad esempio scansioni sequenziali, scansioni di indici o loop join annidati.

  • Un'etichetta, ad esempioSeq Scan, o Index ScanNested Loop, per descrivere l'operazione eseguita.

  • Il nome della tabella o dell'indice che viene elaborato dalla query.

  • Colonne di costo e riga con informazioni sul costo stimato in un'unità di calcolo arbitraria e sul numero di righe elaborate.

  • La condizione di filtro di qualsiasi filtro applicato all'operazione, ad esempio la where condizione.

  • Una rappresentazione visiva dei passaggi, con ogni operazione mostrata come nodo e frecce che collegano le operazioni. L'ordine delle operazioni viene mostrato da sinistra a destra, con le operazioni precedenti che si aggiungono alle operazioni successive.

La schermata seguente mostra il piano di interrogazione per una scansione sequenziale.

Piano di interrogazione mostrato nella scheda Data Output in pGAdmin.

La stima dei costi (cost=0.00..32.60 rows=2260 width=8) indica che PostgreSQL prevede che la query richieda 32,60 unità di calcolo per restituire i risultati.

Il 0.00 valore è il costo al quale questo nodo può iniziare a funzionare (in questo caso, il tempo di avvio della query). Il rows valore è il numero stimato di righe restituite dalla scansione sequenziale. Il width valore è la dimensione stimata in byte delle righe restituite.

Poiché l'esempio mostra EXPLAIN con l'ANALYZEopzione, la query è stata eseguita e le informazioni sulla tempistica sono state acquisite. Il risultato (actual time=0.120..0.121 rows=1 loops=1) indica quanto segue:

  • La scansione sequenziale è stata eseguita una sola volta (il loops valore).

  • La scansione ha restituito una riga.

  • Il tempo effettivo era di 0,12 millisecondi.