STV_BLOCKLIST - Amazon Redshift

STV_BLOCKLIST

STV_BLOCKLIST tiene la cantidad de bloques de 1 MB de disco que utiliza cada sector, tabla o columna en una base de datos.

Utilice consultas de agregación con STV_BLOCKLIST, como se muestra en los siguientes ejemplos, para determinar la cantidad de bloques de 1 MB de disco asignados para cada base de datos, tabla, sector o columna. También puede utilizar STV_PARTITIONS para obtener información resumida acerca de la utilización del disco.

Solo los superusuarios pueden ver STV_BLOCKLIST. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.

Columnas de la tabla

Nombre de la columna Tipo de datos Descripción
slice integer Sector del nodo.
col integer Índice con base cero para la columna. Cada tabla que cree tiene tres columnas ocultas anexadas: INSERT_XID, DELETE_XID y ROW_ID (OID). Una tabla con 3 columnas definidas por el usuario tiene 6 columnas reales, y las columnas definidas por el usuario se enumeran internamente como 0, 1 y 2. Las columnas INSERT_XID, DELETE_XID y ROW_ID se enumeran 3, 4 y 5, respectivamente, en este ejemplo.
tbl integer ID de la tabla para la tabla de la base de datos.
blocknum integer ID para el bloque de datos.
num_values integer Cantidad de valores contenidos en el bloque.
extended_limits integer Para uso interno.
minvalue bigint Valor mínimo de datos del bloque. Almacena los primeros ocho caracteres como un entero de 64 bits para datos no numéricos. Se utiliza para explorar el disco.
maxvalue bigint Valor máximo de dato del bloque. Almacena los primeros ocho caracteres como un entero de 64 bits para datos no numéricos. Se utiliza para explorar el disco.
sb_pos integer Identificador interno de Amazon Redshift para la posición del superbloque en el disco.
pinned integer Indica si el bloque se conectó o no a la memoria como parte de la carga previa: 0 = false; 1 = true. La opción predeterminada es falso.
on_disk integer Indica si el bloque se almacenó automáticamente o no en el disco: 0 = false; 1 = true. La opción predeterminada es falso.
modified integer Indica si el bloque se modificó o no: 0 = false; 1 = true. La opción predeterminada es falso.
hdr_modified integer Indica si el encabezado del bloque se modificó o no: 0 = false; 1 = true. La opción predeterminada es falso.
unsorted integer Indica si el bloque está desordenado o no: 0 = false; 1 = true. El valor predeterminado es verdadero.
tombstone integer Para uso interno.
preferred_diskno integer Cantidad de discos en que debe estar el bloque, excepto que el disco tenga una falla. Una vez arreglado el disco, el bloque volverá a ese disco.
temporary integer Indica si el bloque tiene o no datos temporales, como una tabla temporal o resultados intermedios de consulta: 0 = false; 1 = true. La opción predeterminada es falso.
newblock integer Indica si un bloque es o no nuevo (true) o si nunca se guardó en el disco (false): 0 = false; 1 = true.
num_readers integer Cantidad de referencias en cada bloque.
flags integer Indicadores internos de Amazon Redshift para el encabezado del bloque.

Consultas de ejemplo

STV_BLOCKLIST tiene una fila por cada bloque del disco designado, por lo que una consulta que selecciona todas las filas posiblemente devuelva una gran cantidad de filas. Le recomendamos usar solo las consultas de agregación con STV_BLOCKLIST.

La vista SVV_DISKUSAGE proporciona información similar en un formato más sencillo de usar. Sin embargo, en el siguiente ejemplo se demuestra un uso de la tabla STV_BLOCKLIST.

Para determinar la cantidad de bloques de 1 MB que utiliza cada columna de la tabla VENUE, escriba la siguiente 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;

Esta consulta devuelve la cantidad de bloques de 1 MB asignados a cada columna de la tabla VENUE, tal como se muestra en los siguientes datos de ejemplo:

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

En la siguiente consulta, se muestra si una tabla está distribuida en todos los sectores:

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;

Esta consulta produce el siguiente ejemplo de salida, que muestra una distribución uniforme de los datos en la tabla que tiene la mayor cantidad de filas:

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 siguiente consulta determina si hay algún bloque del tipo tombstone confirmado en el 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)