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à.
Piano di query in Amazon Redshift
Un piano di query è un elenco di istruzioni che il motore di esecuzione deve seguire per eseguire una query sui dati. È possibile creare un piano di query eseguendo il comando EXPLAIN seguito dal testo effettivo della query, come mostra la seguente query di esempio:
EXPLAIN select s.s_name, sum(li.l_quantity) as quantity from tpch.lineitem li join tpch.orders o on o.o_orderkey = li.l_orderkey and o.o_orderdate > '1992-05-01' join tpch.supplier s on s.s_suppkey = li.l_suppkey group by s.s_name order by quantity desc limit 10;
Se si esegue il EXPLAIN comando per l'esempio di query precedente, si ottiene il seguente risultato:
XN Limit (cost=1004400430902.15..1004400430902.17 rows=10 width=39) -> XN Merge (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Merge Key: sum(li.l_quantity) -> XN Network (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Send to leader -> XN Sort (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Sort Key: sum(li.l_quantity) -> XN HashAggregate (cost=4400430218.24..4400430243.06 rows=9928 width=39) -> XN Hash Join DS_BCAST_INNER (cost=21489.58..4400401726.35 rows=5698378 width=39) Hash Cond: ("outer".l_suppkey = "inner".s_suppkey) -> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14) Hash Cond: ("outer".l_orderkey = "inner".o_orderkey) -> XN Seq Scan on lineitem li (cost=0.00..60012.15 rows=6001215 width=22) -> XN Hash (cost=17803.81..17803.81 rows=1424306 width=8) -> XN Seq Scan on orders o (cost=0.00..17803.81 rows=1424306 width=8) Filter: (o_orderdate > '1992-05-01'::date) -> XN Hash (cost=100.00..100.00 rows=10000 width=33) -> XN Seq Scan on supplier s (cost=0.00..100.00 rows=10000 width=33)
Nota
L'output del piano di query di esempio è una visualizzazione semplificata e di alto livello dell'esecuzione delle query. Il piano di esempio non illustra i dettagli dell'elaborazione parallela delle query. Per informazioni dettagliate, eseguite la query e quindi utilizzate le viste SVL_QUERY_SUMMARY o SVL_QUERY_REPORT per ottenere informazioni di riepilogo della query.
Editor di query v2 di Amazon Redshift
Puoi anche visualizzare i piani di query in Amazon Redshift utilizzando l'opzione Explain nell'editor di query v2. Per istruzioni, consulta Working with Query Editor v2 nella documentazione di Amazon Redshift.
Il piano di query generato dall'editor di query v2 include le seguenti informazioni:
-
Quali operazioni esegue il motore di esecuzione, leggendo i risultati dal basso verso l'alto
-
Che tipo di passaggio esegue ciascuna operazione
-
Quali tabelle e colonne vengono utilizzate in ogni operazione
-
Quanti dati vengono elaborati in ciascuna operazione, in termini di numero di righe e larghezza dei dati in byte
-
Il costo relativo dell'operazione (Costo) è una misura che confronta i tempi di esecuzione relativi delle fasi all'interno di un piano. Il costo non fornisce informazioni precise sui tempi di esecuzione effettivi o sul consumo di memoria, né fornisce un confronto significativo tra i piani di esecuzione. Il costo, tuttavia, fornisce un'indicazione delle operazioni di una query che consumano la maggior parte delle risorse.)
SPIEGA i piani
È possibile utilizzare la tabella di sistema STL_EXPLAIN per visualizzare il EXPLAIN piano di una query che è stata inviata per l'esecuzione. Nel complesso, l'utilizzo STL_EXPLAIN può contribuire a migliorare le prestazioni, l'efficienza e l'economicità delle query su Amazon Redshift.
I vantaggi dell'utilizzo sono: STL_EXPLAIN
-
Ottimizzazione delle prestazioni:
STL_EXPLAINpuò aiutare a identificare le aree di una query che possono essere ottimizzate per prestazioni migliori. -
Pianificazione delle query:
STL_EXPLAINpuò fornire informazioni su come Amazon Redshift esegue la query e può aiutare a identificare potenziali colli di bottiglia nella query. -
Debug:
STL_EXPLAINpuò aiutare a diagnosticare problemi relativi a una query mostrando i passaggi utilizzati da Amazon Redshift per eseguire tale query. -
Comprendere il comportamento di Amazon Redshift:
STL_EXPLAINpuò fornire informazioni dettagliate su come Amazon Redshift elabora le query. Questo può aiutarti a migliorare la tua comprensione del comportamento di Amazon Redshift. -
Ottimizzazione dei costi:
STL_EXPLAINpuò fornire informazioni sul costo stimato di una query. Questo può aiutarti a identificare le aree in cui puoi ottimizzare i costi.
La seguente query è un esempio che restituisce i nodi del piano per una determinata query:
select nodeid as id, plannode, info from stl_explain where query=1042904 order by nodeid;
La query precedente restituisce il seguente risultato.
Il EXPLAIN piano restituisce metriche utili per ogni operazione, incluse le metriche relative a costo, righe e larghezza. Ad esempio, la riga 7 della query precedente restituisce quanto segue:
-> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14)
Costo
Il costo è un valore relativo utile per confrontare le operazioni all'interno di un piano. Il costo è costituito da due valori decimali separati da due periodi. In questo esempio, il costo è uguale a. 21364.58..273387.85 Considera i seguenti aspetti:
-
Il primo valore (in questo caso,
21364.58) fornisce il costo relativo della restituzione della prima riga per questa operazione. -
Il secondo valore (in questo caso
273387.85) fornisce il costo relativo del completamento dell'operazione.
I costi del piano di interrogazione sono cumulativi e vengono aggregati dalle righe inferiori a quelle più alte. Nell'esempio riportato sopra, la riga 7 include il costo delle altre operazioni nelle righe sottostanti (ovvero, righe 8-12 e successive).
Righe
Righe è il numero stimato di righe da restituire. In questo esempio, si prevede che la scansione restituisca 5.698.378 righe. La stima delle righe si basa sulle statistiche disponibili generate dal comando. ANALYZE Se non ANALYZE è stata eseguita di recente, la stima è meno affidabile.
Larghezza
La larghezza è la larghezza stimata della riga media, in byte. In questo esempio, si prevede che la larghezza media della riga sia di 14 byte.