STV_BLOCKLIST - 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_BLOCKLIST

STV_BLOCKLIST contiene il numero di blocchi di disco da 1 MB utilizzati da ogni sezione, tabella o colonna in un database.

Per determinare il numero di blocchi di disco da 1 MB allocati per database, tabella, sezione o colonna, utilizza query di aggregazione con STV_BLOCKLIST, come illustrato negli esempi seguenti. È possibile anche utilizzare STV_PARTITIONS per visualizzare informazioni di riepilogo sull'utilizzo del disco.

STV_BLOCKLIST è visibile solo per agli utenti con privilegi avanzati. Per ulteriori informazioni, consultare Visibilità dei dati nelle tabelle e nelle viste di sistema.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
sezione integer Sezione del nodo.
col integer Indice in base zero della colonna. A ogni tabella che crei vengono aggiunte tre colonne nascoste: INSERT_XID, DELETE_XID e ROW_ID (OID). Una tabella con 3 colonne definite dall'utente contiene 6 colonne effettive e le colonne definite dall'utente sono numerate 0, 1 e 2. In questo esempio, le colonne INSERT_XID, DELETE_XID e ROW_ID sono numerate 3, 4 e 5 rispettivamente.
tbl integer ID di tabella della tabella di database.
blocknum integer ID del blocco di dati.
num_values integer Numero di valori contenuti nel blocco.
extended_limits integer Per uso interno.
minvalue bigint Valore di dati minimo del blocco. Memorizza i primi otto caratteri come valore integer a 64 bit per dati non numerici. Utilizzato per la scansione del disco.
maxvalue bigint Valore di dati massimo del blocco. Memorizza i primi otto caratteri come valore integer a 64 bit per dati non numerici. Utilizzato per la scansione del disco.
sb_pos integer Identificatore interno di Amazon Redshift per la posizione del super blocco sul disco.
pinned integer Indica se il blocco è aggiunto o meno nella memoria come parte del precaricamento. 0 = false; 1 = true. Il valore predefinito è false.
on_disk integer Indica se il blocco è archiviato automaticamente sul disco o meno. 0 = false; 1 = true. Il valore predefinito è false.
modified integer Indica se il blocco è stato modificato o meno. 0 = false; 1 = true. Il valore predefinito è false.
hdr_modified integer Indica se l'intestazione del blocco è stata modificata o meno. 0 = false; 1 = true. Il valore predefinito è false.
unsorted integer Indica se il blocco è non ordinato o meno. 0 = false; 1 = true. Il valore predefinito è true.
tombstone integer Per uso interno.
preferred_diskno integer Numero di disco su cui il blocco deve trovarsi, salvo in caso di errore del disco. Dopo la correzione del disco, il blocco ritorna su questo disco.
temporary integer Indica se il blocco contiene o meno dati temporanei, ad esempio di una tabella temporanea o di risultati intermedi delle query. 0 = false; 1 = true. Il valore predefinito è false.
newblock integer Indica se un blocco è nuovo (true) o se non ne è mai stato eseguito il commit sul disco (false). 0 = false; 1 = true.
num_readers integer Numero di riferimenti su ogni blocco.
flags integer Flag interni di Amazon Redshift per l'intestazione del blocco.

Query di esempio

STV_BLOCKLIST contiene una riga per blocco di disco allocato, di conseguenza una query che seleziona tutte le righe può restituire un gran numero di righe. Ti consigliamo di utilizzare solo query di aggregazione con STV_BLOCKLIST.

La vista SVV_DISKUSAGE fornisce informazioni simili in un formato più semplice; tuttavia, l'esempio seguente illustra un utilizzo della tabella STV_BLOCKLIST.

Per determinare il numero di blocchi da 1 MB utilizzati da ogni colonna nella tabella VENUE, digita la seguente query:

select col, count(*) from stv_blocklist, stv_tbl_perm where stv_blocklist.tbl = stv_tbl_perm.id and stv_blocklist.slice = stv_tbl_perm.slice and stv_tbl_perm.name = 'venue' group by col order by col;

Questa query restituisce il numero di blocchi da 1 MB allocati a ogni colonna nella tabella VENUE, come mostrato nei seguenti esempi di dati:

col | count -----+------- 0 | 4 1 | 4 2 | 4 3 | 4 4 | 4 5 | 4 7 | 4 8 | 4 (8 rows)

La seguente query indica se i dati della tabella sono effettivamente distribuiti a tutte le sezioni:

select trim(name) as table, stv_blocklist.slice, stv_tbl_perm.rows from stv_blocklist,stv_tbl_perm where stv_blocklist.tbl=stv_tbl_perm.id and stv_tbl_perm.slice=stv_blocklist.slice and stv_blocklist.id > 10000 and name not like '%#m%' and name not like 'systable%' group by name, stv_blocklist.slice, stv_tbl_perm.rows order by 3 desc;

Questa query produce il seguente output di esempio, che illustra la distribuzione omogenea dei dati della tabella con la maggior parte delle righe:

table | slice | rows ----------+-------+------- listing | 13 | 10527 listing | 14 | 10526 listing | 8 | 10526 listing | 9 | 10526 listing | 7 | 10525 listing | 4 | 10525 listing | 17 | 10525 listing | 11 | 10525 listing | 5 | 10525 listing | 18 | 10525 listing | 12 | 10525 listing | 3 | 10525 listing | 10 | 10525 listing | 2 | 10524 listing | 15 | 10524 listing | 16 | 10524 listing | 6 | 10524 listing | 19 | 10524 listing | 1 | 10523 listing | 0 | 10521 ... (180 rows)

La seguente query determina se è stato eseguito il commit sul disco di qualsiasi blocco rimosso definitivamente:

select slice, col, tbl, blocknum, newblock from stv_blocklist where tombstone > 0; slice | col | tbl | blocknum | newblock -------+-----+--------+----------+---------- 4 | 0 | 101285 | 0 | 1 4 | 2 | 101285 | 0 | 1 4 | 4 | 101285 | 1 | 1 5 | 2 | 101285 | 0 | 1 5 | 0 | 101285 | 0 | 1 5 | 1 | 101285 | 0 | 1 5 | 4 | 101285 | 1 | 1 ... (24 rows)