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 ter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.
nota
STV_BLOCKLIST registra somente blocos pertencentes ao cluster provisionado ou namespace sem servidor. Se o banco de dados incluir blocos compartilhados de um produtor de unidade de compartilhamento de dados, esses blocos não serão incluídos em STV_BLOCKLIST. Para obter mais informações sobre unidades de compartilhamento de dados, acesse Compartilhamento de dados no Amazon Redshift.
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)