STV_QUERY_METRICS - Amazon Redshift

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

STV_QUERY_METRICS

Contiene informazioni sui parametri, come il numero di righe elaborate, l'uso della CPU, input/output e l'uso del disco, per le query attive in esecuzione nelle code di query definite dall'utente (classi di servizio). Per visualizzare i parametri delle query completate, consultare la tabella di sistema STL_QUERY_METRICS.

I parametri delle query sono campionati a intervalli di un secondo. Di conseguenza, differenti esecuzioni della stessa query potrebbero restituire orari leggermente differenti. Inoltre, è possibile che i segmenti di query che vengono eseguiti in meno di 1 secondo non siano registrati.

STV_QUERY_METRICS traccia e aggrega i parametri a livello di query, segmento e fase. Per ulteriori informazioni sui segmenti e sulle fasi di query, consultare Pianificazione di query e flusso di lavoro di esecuzione. Molti parametri (come max_rows, cpu_time e così via) sono sommati sulle sezioni di nodo. Per ulteriori informazioni sulle sezioni di nodo, consultare Architettura del sistema di data warehouse.

Per determinare il livello al quale la riga fornisce i parametri, esamina le colonne segment e step_type:

  • Se entrambe le colonne segment e step_type sono -1, la riga fornisce parametri a livello di query.

  • Se segment non è -1 e step_type è -1, la riga fornisce parametri a livello di segmento.

  • Se entrambe le colonne segment e step_type non sono -1, la riga fornisce parametri a livello di fase.

STV_QUERY_METRICS è 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.

Alcuni o tutti i dati di questa tabella sono definiti anche nella vista di monitoraggio SYS SYS_QUERY_DETAIL. I dati nella vista di monitoraggio SYS sono formattati in modo da essere più facili da usare e comprendere. Ti consigliamo di utilizzare la vista di monitoraggio SYS per le query.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
userid integer ID dell'utente che ha eseguito la query che ha generato la voce.
service_class integer ID della coda di query WLM (classe di servizio). Le code di query sono definite nella configurazione WLM. I parametri sono restituiti solo per le code definite dall'utente.
query integer ID query. La colonna di query può essere utilizzata per unire altre tabelle e visualizzazioni del sistema.
starttime timestamp Orario in UTC in cui la query ha avviato l'esecuzione, con 6 cifre di precisione per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358.
slices integer Numero di sezioni per il cluster.
segment integer Numero di segmento. Una query consiste in più segmenti e ogni segmento consiste in una o più fasi. I segmenti di query possono essere eseguiti in parallelo. Ogni segmento viene eseguito in un singolo processo. Se il valore del segmento è -1, viene eseguito il rollup dei valori di segmento dei parametri a livello della query.
step_type integer Tipo di fase eseguita. Per una descrizione dei tipi di fase, consultare Tipo di fase.
righe bigint Numero di righe elaborate da una fase.
max_rows bigint Numero massimo di righe prodotte per una fase, aggregate tra tutte le sezioni.
cpu_time bigint Tempo CPU utilizzato in microsecondi. A livello del segmento, il tempo CPU totale per il segmento tra tutte le sezioni. A livello della query, la somma del tempo CPU per la query tra tutte le sezioni e tutti i segmenti.
max_cpu_time bigint Tempo CPU massimo utilizzato in microsecondi. A livello del segmento, il tempo CPU massimo utilizzato dal segmento tra tutte le sezioni. A livello della query, il tempo CPU massimo utilizzato dal qualsiasi segmento di query.
blocks_read bigint Numero di blocchi da 1 MB letti dalla query o dal segmento.
max_blocks_read bigint Numero massimo di blocchi da 1 MB letti dal segmento, aggregati tra tutte le sezioni. A livello del segmento, il numero massimo di blocchi da 1 MB letti per il segmento tra tutte le sezioni. A livello della query, il numero massimo di blocchi da 1 MB letti da qualsiasi segmento di query.
run_time bigint

Tempo di esecuzione totale, sommato tra le sezioni. Il tempo di esecuzione non include il tempo di attesa.

A livello del segmento, il tempo di esecuzione per il segmento, sommato tra tutte le sezioni. A livello della query, il tempo di esecuzione per la query sommato tra tutte le sezioni e tutti i segmenti. Poiché questo valore è una somma, il tempo di esecuzione non è correlato al tempo di esecuzione della query.

max_run_time bigint Tempo massimo trascorso per un segmento, in microsecondi. A livello del segmento, il tempo di esecuzione massimo per il segmento tra tutte le sezioni. A livello della query, il tempo di esecuzione per qualsiasi segmento di query.
max_blocks_to_disk bigint Quantità massima di spazio su disco utilizzata per scrivere risultati intermedi, in blocchi da 1 MB. A livello del segmento, la quantità massima di spazio su disco utilizzato dal segmento tra tutte le sezioni. A livello della query, la quantità massima di spazio su disco utilizzato da qualsiasi segmento di query.
blocks_to_disk bigint La quantità di spazio su disco utilizzata da una query o da un segmento per scrivere risultati intermedi, in blocchi da 1 MB.
step integer La fase di query eseguita.
max_query_scan_size bigint La dimensione massima di dati sottoposti a scansione da una query in MB. A livello del segmento, la quantità massima di dati sottoposti a scansione dal segmento tra tutte le sezioni. A livello della query, la quantità massima di dati sottoposti a scansione da qualsiasi segmento di query.
query_scan_size bigint La dimensione dei dati sottoposti a scansione da una query in MB.
query_priority integer La priorità della query. I valori possibili sono -1, 0, 1, 2, 3 e 4, dove -1 indica che la priorità della query non è supportata.
query_queue_time bigint La quantità di tempo espressa in microsecondi di permanenza della query nella coda.

Tipo di fase

Nella tabella seguente sono elencati i tipi di fase relativi agli utenti di database. La tabella non elenca i tipi di fasi solo per uso interno. Se il tipo di fase è -1, il parametro non è restituito a livello della fase.

Step type (Tipo di fase) Descrizione
1 Scansione della tabella
2 Inserimento di righe
3 Aggregazione di righe
6 Fase di ordinamento
7 Fase di merge
8 Fase di distribuzione
9 Fase di diffusione distribuzione
10 Hash join
11 Merge join
12 Fase di salvataggio
14 Hash
15 Nested loop join
16 Proiezione di campi ed espressioni
17 Limitazione del numero di righe restituite
18 Unique
20 Eliminazione di righe
26 Limitazione del numero di righe ordinate restituite
29 Calcolo di una funzione finestra
32 UDF
33 Unique
37 Restituzione di righe dal nodo principale al client
38 Restituzione di righe dai nodi di calcolo al nodo principale
40 Scansione Spectrum

Query di esempio

Per trovare query attive con un tempo di CPU elevato (più di 1.000 secondi), esegui la query seguente.

select query, cpu_time / 1000000 as cpu_seconds from stv_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

Per trovare query attive con un nested loop join che hanno restituito più di un milione di righe, esegui la query seguente.

select query, rows from stv_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 1580225854

Per trovare query attive eseguite per più di 60 secondi e con tempo CPU utilizzato inferiore a 10 secondi, esegui la query seguente.

select query, run_time/1000000 as run_time_seconds from stv_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114