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à.
STL_SCAN
Analizza le fasi di scansione di tabella per le query. Il numero di fase per le righe in questa tabella è sempre 0 perché una scansione è la prima fase in un segmento.
STL_SCAN è 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
STL_SCAN contiene solo le query eseguite su cluster con provisioning principale. Non contiene query eseguite su cluster con scalabilità simultanea o su namespace senza server. Per accedere ai piani esplicativi per le query eseguite su entrambi i cluster principali, i cluster con scalabilità simultanea e i namespace senza server, ti consigliamo di utilizzare la 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.
Colonne di tabella
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
userid | integer | ID dell'utente che ha generato la voce. |
query | integer | ID query. La colonna di query può essere utilizzata per unire altre tabelle e visualizzazioni del sistema. |
sezione | integer | Numero che identifica la sezione in cui è stata eseguita la query. |
segment | integer | Numero identificativo del segmento di query. |
step | integer | La fase di query eseguita. |
starttime | timestamp | Ora in UTC in cui è stata avviata la query. Il tempo totale include l'inserimento in coda e l'esecuzione, con precisione a 6 cifre per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358 . |
endtime | timestamp | L'orario in UTC in cui è terminata la query. Il tempo totale include l'inserimento in coda e l'esecuzione, con precisione a 6 cifre per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358 . |
tasknum | integer | Il numero del processo di attività di query assegnato per eseguire la fase. |
righe | bigint | Numero totale di righe elaborate. |
byte | bigint | Dimensione, in byte, di tutte le righe di output della fase. |
fetches | bigint | Queste informazioni sono solo per uso interno. |
tipo | integer | ID del tipo di scansione. Per un elenco di valori validi, consultare la tabella seguente. |
tbl | integer | ID tabella. |
is_rrscan | character(1) | Se true (t), indica che in questa fase è stata utilizzata la scansione a intervallo limitato. |
is_delayed_scan | character(1) | Queste informazioni sono solo per uso interno. |
rows_pre_filter | bigint | Per le scansioni di tabelle permanenti, il numero totale di righe emesse prima di aver applicato filtri alle righe contrassegnate per l'eliminazione (righe fantasma) e prima dell'applicazione di filtri di query definiti dall'utente. |
rows_pre_user_filter | bigint | Per le scansioni di tabelle permanenti, il numero di righe elaborate dopo aver applicato filtri alle righe contrassegnate per l'eliminazione (righe fantasma) ma prima dell'applicazione di filtri di query definiti dall'utente. |
perm_table_name | character(136) | Per le scansioni di tabelle permanenti, il nome della tabella su cui è eseguita la scansione. |
is_rlf_scan | character(1) | Se true (t), indica che nella fase è stata utilizzata l'applicazione di filtri a livello di riga. |
is_rlf_scan_reason | integer | Queste informazioni sono solo per uso interno. |
num_em_blocks | integer | Queste informazioni sono solo per uso interno. |
checksum | bigint | Queste informazioni sono solo per uso interno. |
runtime_filtering | character(1) | Se true (t), indica che vengono applicati filtri di runtime. |
scan_region | integer | Queste informazioni sono solo per uso interno. |
num_sortkey_as_predicate | integer | Queste informazioni sono solo per uso interno. |
row_fetcher_state | integer | Queste informazioni sono solo per uso interno. |
consumed_scan_ranges | bigint | Queste informazioni sono solo per uso interno. |
work_stealing_reason | bigint | Queste informazioni sono solo per uso interno. |
is_vectorized_scan | character(1) | Queste informazioni sono solo per uso interno. |
is_vectorized_scan_reason | integer | Queste informazioni sono solo per uso interno. |
row_fetcher_reason | bigint | Queste informazioni sono solo per uso interno. |
topology_signature | bigint | Queste informazioni sono solo per uso interno. |
use_tpm_partition | character(1) | Queste informazioni sono solo per uso interno. |
is_rrscan_expr | character(1) | Queste informazioni sono solo per uso interno. |
scanned_mega_value | character(1) | Queste informazioni sono solo per uso interno. Queste informazioni mostrano se la fase di scansione specificata ha scansionato un valore elevato. Un valore elevato verrà archiviato in più blocchi. La dimensione del blocco è 1 MB per impostazione predefinita, un valore elevato è superiore a 1 MB in un'impostazione predefinita. |
Tipi di scansione
ID di tipo | Descrizione |
---|---|
1 | Dati dalla rete. |
2 | Tabelle d'utente permanenti nella memoria condivisa compressa. |
3 | Tabelle transitorie in linea. |
21 | Carica file da Amazon S3. |
22 | Carica tabelle da Amazon DynamoDB. |
23 | Carica i dati da una connessione SSH remota. |
24 | Carica i dati da un cluster remoto (regione ordinata). È utilizzato per il ridimensionamento. |
25 | Carica i dati da un cluster remoto (regione non ordinata). È utilizzato per il ridimensionamento. |
28 | Legge i dati da una vista di serie temporali con UNION ALL su più tabelle. |
29 | Legge i dati da tabelle esterne Amazon S3. |
30 | Legge le informazioni sulle partizioni di una tabella esterna Amazon S3. |
33 | Legge i dati da una tabella Postgres remota. |
36 | Legge i dati da una tabella MySQL remota. |
37 | Legge i dati da un flusso Kinesis remoto. |
Note per l'utilizzo
Idealmente rows
dovrebbe essere relativamente vicino a rows_pre_filter
. Una grande differenza tra rows
e rows_pre_filter
indica che il motore di esecuzione sta eseguendo la scansione delle righe che verranno eliminate, il che non è efficiente. La differenza tra rows_pre_filter
e rows_pre_user_filter
è il numero di righe fantasma nella scansione. Esegui un VACUUM per rimuovere le righe contrassegnate per l'eliminazione. La differenza tra rows
e rows_pre_user_filter
è il numero di righe a cui la query ha applicato un filtro. Se il filtro dell'utente elimina molte righe, rivedi la tua scelta della colonna di ordinamento o, se ciò è dovuto a una grande regione non ordinata, esegui un vacuum.
Query di esempio
Il seguente esempio mostra che rows_pre_filter
è maggiore di rows_pre_user_filter
perché la tabella ha eliminato righe sulle quali non è stato eseguito un vacuum (righe fantasma).
SELECT query, slice, segment,step,rows, rows_pre_filter, rows_pre_user_filter from stl_scan where query = pg_last_query_id(); query | slice | segment | step | rows | rows_pre_filter | rows_pre_user_filter -------+--------+---------+------+-------+-----------------+---------------------- 42915 | 0 | 0 | 0 | 43159 | 86318 | 43159 42915 | 0 | 1 | 0 | 1 | 0 | 0 42915 | 1 | 0 | 0 | 43091 | 86182 | 43091 42915 | 1 | 1 | 0 | 1 | 0 | 0 42915 | 2 | 0 | 0 | 42778 | 85556 | 42778 42915 | 2 | 1 | 0 | 1 | 0 | 0 42915 | 3 | 0 | 0 | 43428 | 86856 | 43428 42915 | 3 | 1 | 0 | 1 | 0 | 0 42915 | 10000 | 2 | 0 | 4 | 0 | 0 (9 rows)