SYS_QUERY_DETAIL - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog.

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à.

SYS_QUERY_DETAIL

Utilizza SYS_QUERY_DETAIL per visualizzare i dettagli delle query a vari livelli di metrica, con ogni riga che rappresenta i dettagli di una particolare query WLM a un determinato livello di metrica. Questa vista contiene molti tipi di query come DDL, DML e comandi di utilità (ad esempio, copia e scarica). Alcune colonne potrebbero non essere rilevanti a seconda del tipo di query. Ad esempio, external_scanned_bytes non è rilevante per le tabelle interne.

SYS_QUERY_DETAIL è visibile a tutti gli utenti. Gli utenti con privilegi avanzati visualizzano tutte le righe; gli utenti regolari visualizzano solo i propri dati. Per ulteriori informazioni, consulta Visibilità dei dati nelle tabelle e nelle viste di sistema.

Nota

Per verificare se il commit di una transazione contenente la query eseguita è riuscito, devi effettuare il join tra le tabelle di sistema e la tabella sys_transaction_history. Esempio:

SELECT th.transaction_id, qd.query_id, th.status AS transaction_status FROM sys_query_detail qd LEFT JOIN sys_query_history qh ON qd.query_id = qh.query_id LEFT JOIN sys_transaction_history th on qh.transaction_id = th.transaction_id;

Colonne di tabella

Nome della colonna Tipo di dati Description
user_id intero Identificatore dell'utente che ha inviato la query.
query_id bigint L'identificativo della query.
child_query_sequence intero La sequenza della query utente riscritta, che inizia con 1.
stream_id intero L'identificatore di flusso del flusso di query.
segment_id intero L'identificatore di segmento del segmento di esecuzione della query.
step_id intero L'identificatore di passaggio in un segmento.
step_name testo Il nome della fase in un segmento. I valori possibili sono aggregate, broadcast, delete, distribute, hash, hashjoin, insert, limit, merge, nestloop, parse, return, save, scan, sort, sortlimit, unique e window.
table_id intero L'identificatore della tabella per le scansioni permanenti della tabella.
table_name character(136) Nome della tabella del passaggio in corso.
is_rrscan carattere Un valore che indica se è una fase di scansione. True (t) indica che è stata utilizzata la scansione a intervallo limitato.
start_time timestamp Il momento in cui è iniziata la fase di query. Questo campo viene registrato a livello di segmento, indipendentemente dal valore nella colonna metrics_level.
end_time timestamp Il momento in cui la fase di query è stata completata. Questo campo viene registrato a livello di segmento, indipendentemente dal valore nella colonna metrics_level.
durata bigint La quantità di tempo (microsecondi) dedicato alla fase. Questo campo viene registrato a livello di segmento, indipendentemente dal valore nella colonna metrics_level.
avviso testo La descrizione dell'evento di avviso.
input_bytes bigint I byte di input per il passaggio corrente.
input_rows bigint Le righe di input per il passaggio corrente.
output_bytes bigint I byte di output per il passaggio corrente.
output_rows bigint Le righe di output per il passaggio corrente.
blocks_read bigint Il numero di blocchi letti nella fase.
blocks_write bigint Il numero di blocchi scritti nella fase.
local_read_IO bigint Il numero di blocchi letti dalla cache del disco locale.
remote_read_IO bigint Il numero di blocchi letti da remoto.
origine testo Il tipo di oggetto di database scansionato. Questa colonna ha un valore solo quando il valore step_name della riga è scan.
data_skewness intero L'asimmetria della distribuzione delle righe di output tra tutte le fasi. È un numero compreso tra 0% e 100%. Più alto è il numero, più è sbilanciata la distribuzione.
time_skewness intero L'asimmetria del tempo di esecuzione tra tutte le fasi. È un numero compreso tra 0% e 100%. Più alto è il numero, più è sbilanciata la distribuzione.
is_active carattere Lo stato della query a livello di fase. I valori possibili sono "t" che indica che la fase è in esecuzione al momento o "f" che indica che la fase è completata.
spilled_block_local_disk bigint Il numero di blocchi riversati sul disco locale.
spilled_block_remote_disk bigint Il numero di blocchi riversati su Amazon Simple Storage Service.
step_attribute character(64) Contiene informazioni sulla fase associata. Valori possibili per le fasi di scansione: multi-dimensional.
metrics_level character(64)

Il livello di metriche della query. I valori possibili sono i seguenti:

  • Query secondaria

  • Flusso

  • Segment

  • Fase

plan_parent_id intero L’identificatore del nodo principale del nodo del piano. Un nodo principale può avere più nodi secondari. Ad esempio, un merge join è il nodo principale delle scansioni per le tabelle sottoposte a join.
plan_node_id intero L’identificatore del nodo di un piano che corrisponde a una o più fasi nella query.

Note per l’utilizzo

SYS_QUERY_DETAIL può contenere metriche a livello di fase, flusso, segmento e query secondaria. Oltre a fare riferimento alla colonna metrics_level, puoi determinare il livello di metriche mostrato in una data riga facendo riferimento ai campi step_id, segment_id e stream_id in base alla tabella seguente.

Livello di metriche valore stream_id valore segment_id valore step_id
query secondaria -1 -1 -1
stream Un valore di incremento valido -1 -1
segment Un valore di incremento valido Un valore di incremento valido -1
fase Un valore di incremento valido Un valore di incremento valido Un valore di incremento valido

Query di esempio

L'esempio seguente restituisce l'output di SYS_QUERY_DETAIL.

La seguente query mostra i dettagli dei metadati della query a livello di fase, inclusi nome fase, input_bytes, output_bytes, input_rows, output_rows.

SELECT query_id, child_query_sequence, stream_id, segment_id, step_id, trim(step_name) AS step_name, duration, input_bytes, output_bytes, input_rows, output_rows FROM sys_query_detail WHERE query_id IN (193929) ORDER BY query_id, stream_id, segment_id, step_id DESC;

Output di esempio.

query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | duration | input_bytes | output_bytes | input_rows | output_rows ----------+----------------------+-----------+------------+---------+------------+-----------------+-------------+--------------+------------+------------- 193929 | 2 | 0 | 0 | 3 | hash | 37144 | 0 | 9350272 | 0 | 292196 193929 | 5 | 0 | 0 | 3 | hash | 9492 | 0 | 23360 | 0 | 1460 193929 | 1 | 0 | 0 | 3 | hash | 46809 | 0 | 9350272 | 0 | 292196 193929 | 4 | 0 | 0 | 2 | return | 7685 | 0 | 896 | 0 | 112 193929 | 1 | 0 | 0 | 2 | project | 46809 | 0 | 0 | 0 | 292196 193929 | 2 | 0 | 0 | 2 | project | 37144 | 0 | 0 | 0 | 292196 193929 | 5 | 0 | 0 | 2 | project | 9492 | 0 | 0 | 0 | 1460 193929 | 3 | 0 | 0 | 2 | return | 11033 | 0 | 14336 | 0 | 112 193929 | 2 | 0 | 0 | 1 | project | 37144 | 0 | 0 | 0 | 292196 193929 | 1 | 0 | 0 | 1 | project | 46809 | 0 | 0 | 0 | 292196 193929 | 5 | 0 | 0 | 1 | project | 9492 | 0 | 0 | 0 | 1460 193929 | 3 | 0 | 0 | 1 | aggregate | 11033 | 0 | 201488 | 0 | 14 193929 | 4 | 0 | 0 | 1 | aggregate | 7685 | 0 | 28784 | 0 | 14 193929 | 5 | 0 | 0 | 0 | scan | 9492 | 0 | 23360 | 292196 | 1460 193929 | 4 | 0 | 0 | 0 | scan | 7685 | 0 | 1344 | 112 | 112 193929 | 2 | 0 | 0 | 0 | scan | 37144 | 0 | 7304900 | 292196 | 292196 193929 | 3 | 0 | 0 | 0 | scan | 11033 | 0 | 13440 | 112 | 112 193929 | 1 | 0 | 0 | 0 | scan | 46809 | 0 | 7304900 | 292196 | 292196 193929 | 5 | 0 | 0 | -1 | | 9492 | 12288 | 0 | 0 | 0 193929 | 1 | 0 | 0 | -1 | | 46809 | 16384 | 0 | 0 | 0 193929 | 2 | 0 | 0 | -1 | | 37144 | 16384 | 0 | 0 | 0 193929 | 4 | 0 | 0 | -1 | | 7685 | 28672 | 0 | 0 | 0 193929 | 3 | 0 | 0 | -1 | | 11033 | 114688 | 0 | 0 | 0

Per visualizzare le tabelle del database nell'ordine dalla più utilizzata a quella meno utilizzata, utilizza l'esempio seguente. Sostituisci sample_data_dev con il tuo database. Tieni presente che questa query calcolerà le query a partire dalla creazione del cluster, ma i dati della vista di sistema non vengono salvati quando nel data warehouse manca spazio.

SELECT table_name, COUNT (DISTINCT query_id) FROM SYS_QUERY_DETAIL WHERE table_name LIKE 'sample_data_dev%' GROUP BY table_name ORDER BY COUNT(*) DESC; +---------------------------------+-------+ | table_name | count | +---------------------------------+-------+ | sample_data_dev.tickit.venue | 4 | | sample_data_dev.myunload1.venue | 3 | | sample_data_dev.tickit.listing | 1 | | sample_data_dev.tickit.category | 1 | | sample_data_dev.tickit.users | 1 | | sample_data_dev.tickit.date | 1 | | sample_data_dev.tickit.sales | 1 | | sample_data_dev.tickit.event | 1 | +---------------------------------+-------+

Nell’esempio seguente mostra i vari livelli di metriche per una singola query WLM.

SELECT query_id, child_query_sequence, stream_id, segment_id, step_id, step_name, start_time, end_time, metrics_level FROM sys_query_detail WHERE query_id = 1553 AND step_id = -1 ORDER BY stream_id, segment_id, step_id; query_id | child_query_sequence | stream_id | segment_id | step_id | step_name | start_time | end_time | metrics_level ----------+----------------------+-----------+------------+---------+-----------+----------------------------+----------------------------+--------------- 1553 | 1 | -1 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.847838 | child query 1553 | 1 | 0 | -1 | -1 | | 2024-10-17 02:28:49.814721 | 2024-10-17 02:28:49.835609 | stream 1553 | 1 | 0 | 0 | -1 | | 2024-10-17 02:28:49.824677 | 2024-10-17 02:28:49.830372 | segment 1553 | 1 | 1 | -1 | -1 | | 2024-10-17 02:28:49.835624 | 2024-10-17 02:28:49.845773 | stream 1553 | 1 | 1 | 1 | -1 | | 2024-10-17 02:28:49.84088 | 2024-10-17 02:28:49.842388 | segment 1553 | 1 | 1 | 2 | -1 | | 2024-10-17 02:28:49.835926 | 2024-10-17 02:28:49.844396 | segment 1553 | 1 | 2 | -1 | -1 | | 2024-10-17 02:28:49.846949 | 2024-10-17 02:28:49.847838 | stream 1553 | 1 | 2 | 3 | -1 | | 2024-10-17 02:28:49.847013 | 2024-10-17 02:28:49.847485 | segment (8 rows)