STV_BLOCKLIST - Amazon Redshift

STV_BLOCKLIST

A tabela STV_BLOCKLIST contém o número de blocos de disco de 1 MB que são usados por cada fatia, tabela ou coluna em um banco de dados.

Use consultas agregadas com a STV_BLOCKLIST, como mostram os exemplos a seguir, para determinar o número de blocos de disco de 1 MB alocados por banco de dados, tabela, fatia ou coluna. Você também pode usar a STV_PARTITIONS para visualizar informações resumidas sobre a utilização do disco.

STV_BLOCKLIST é visível somente aos superusuários. Para obter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.

Colunas da tabela

Nome da coluna Tipo de dados Descrição
slice inteiro Fatia do nó.
col inteiro Um índice com base zero para a coluna. Toda tabela que é criada tem três colunas ocultas anexadas a ela: INSERT_XID, DELETE_XID e ROW_ID (OID). Uma tabela com 3 colunas definidas pelo usuário contém na realidade 6 colunas, e as colunas definidas pelo usuário são numeradas internamente com 0, 1 e 2. As colunas INSERT_XID, DELETE_XID e ROW_ID são numeradas com 3, 4 e 5, respectivamente, neste exemplo.
tbl inteiro ID da tabela para a tabela do banco de dados.
blocknum inteiro O ID do bloco de dados.
num_values inteiro O número de valores contidos no bloco.
extended_limits inteiro Para uso interno.
minvalue bigint O valor mínimo de um dado do bloco. Armazena os oito primeiros caracteres como inteiros de 64 bits para dados não numéricos. É usado para a varredura de discos.
maxvalue bigint O valor máximo de um dado do bloco. Armazena os oito primeiros caracteres como inteiros de 64 bits para dados não numéricos. É usado para a varredura de discos.
sb_pos inteiro Identificador interno do Amazon Redshift para a posição do superbloco no disco.
pinned inteiro Se o bloco é fixado ou não na memória como parte do pré-carregamento. 0 = false; 1 = true. O padrão é falso.
on_disk inteiro Se o bloco é ou não armazenado automaticamente no disco. 0 = false; 1 = true. O padrão é falso.
modified inteiro Se o bloco foi modificado ou não. 0 = false; 1 = true. O padrão é falso.
hdr_modified inteiro Se o cabeçalho do bloco foi modificado ou não. 0 = false; 1 = true. O padrão é falso.
unsorted inteiro Se um bloco está ou não desordenado. 0 = false; 1 = true. O padrão é true (verdadeiro).
tombstone inteiro Para uso interno.
preferred_diskno inteiro O número do disco onde o bloco se encontra, a menos que o disco esteja com uma falha. Uma vez consertado o disco, o bloco voltará para ele.
temporary inteiro Se o bloco contém ou não dados temporários, como de uma tabela temporária ou resultados de consulta intermediários. 0 = false; 1 = true. O padrão é falso.
newblock inteiro Indica se um bloco é ou não novo (true) ou nunca foi confirmado no disco (false). 0 = false; 1 = true.
num_readers inteiro O número de referências em cada bloco.
flags inteiro Sinalizadores internos do Amazon Redshift para o cabeçalho do bloco.

Consultas de exemplo

A tabela STV_BLOCKLIST possui uma linha para cada bloco de disco alocado, de maneira que uma consulta que selecione todas as linhas pode retornar um número muito grande de linhas. Recomendamos usar somente consultas agregadas com a STV_BLOCKLIST.

A exibição SVV_DISKUSAGE fornece informações semelhantes em um formato mais fácil de usar. Entretanto, o exemplo a seguir demonstra uma forma de utilizar a tabela STV_BLOCKLIST.

Para determinar o número de blocos de 1 MB usados para cada coluna na tabela VENUE, digite a seguinte consulta:

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;

Essa consulta retorna o número de blocos de 1 MB alocados para cada coluna na tabela VENUE, como mostram os seguintes dados de exemplo:

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

A consulta a seguir mostra se os dados da tabelas são distribuídos de fato por todas as fatias:

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;

Essa consulta produz os seguintes dados de saída como exemplo, mostrando a distribuição de dados uniforme para a tabela com o maior número de linhas:

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)

A consulta a seguir determina se um bloco com marca de exclusão está confirmado no disco:

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)