STV_BLOCKLIST - Amazon Redshift

STV_BLOCKLIST

STV_BLOCKLIST contient le nombre de blocs de disque de 1 Mo utilisés par chaque tranche, table ou colonne dans une base de données.

Pour déterminer le nombre de blocs de disque de 1 Mo alloués par base de données, table, tranche ou colonne, utilisez des requêtes agrégées avec STV_BLOCKLIST, comme dans les exemples suivants. Vous pouvez également utiliser STV_PARTITIONS afin d'afficher des informations de synthèse sur l'utilisation du disque.

STV_BLOCKLIST n'est visible que par les superutilisateurs. Pour de plus amples informations, veuillez consulter Visibilité des données dans les tables et vues système.

Colonnes de la table

Nom de la colonne Type de données Description
slice entier Tranche de nœud.
col entier Index de base zéro de la colonne. Chaque table que vous créez possède trois colonnes masquées qui lui sont ajoutées : INSERT_XID, DELETE_XID et ROW_ID (OID). Une table avec 3 colonnes définies par l'utilisateur contient 6 colonnes réelles et les colonnes définies par l'utilisateur sont numérotées en interne 0, 1 et 2. Les colonnes INSERT_XID, DELETE_XID et ROW_ID sont numérotés respectivement 3, 4 et 5 dans cet exemple.
tbl entier ID de la table de la base de données.
blocknum entier ID du bloc de données.
num_values entier Nombre de valeurs contenues dans le bloc.
extended_limits entier Pour utilisation interne.
minvalue bigint Valeur de données minimale du bloc. Stocke les huit premiers caractères en tant que nombre entier 64 bits pour des données non numériques. Utilisée pour l'analyse de disque.
maxvalue bigint Valeur de données maximale du bloc. Stocke les huit premiers caractères en tant que nombre entier 64 bits pour des données non numériques. Utilisée pour l'analyse de disque.
sb_pos entier Identifiant interne d'Amazon Redshift pour la position du super bloc sur le disque.
pinned entier Indique si le bloc est mis en mémoire dans le cadre du préchargement ou non. 0 = faux ; 1 = vrai. La valeur par défaut est false.
on_disk entier Indique si le bloc est automatiquement stocké sur le disque ou non. 0 = faux ; 1 = vrai. La valeur par défaut est false.
modifié entier Indique si le bloc a été modifié ou non. 0 = faux ; 1 = vrai. La valeur par défaut est false.
hdr_modified entier Indique si l'en-tête de bloc a été modifié ou non. 0 = faux ; 1 = vrai. La valeur par défaut est false.
unsorted entier Indique si un bloc est trié ou non. 0 = faux ; 1 = vrai. La valeur par défaut est true.
tombstone entier Pour utilisation interne.
preferred_diskno entier Numéro de disque sur lequel le bloc doit être, sauf si le disque a échoué. Une fois que le disque a été corrigé, le bloc retourne sur ce disque.
temporary entier Indique si le bloc contient ou non des données temporaires, comme une table temporaire ou les résultats intermédiaires des requêtes. 0 = faux ; 1 = vrai. La valeur par défaut est false.
newblock entier Indique si un bloc est nouveau (true) ou n'a jamais été validé sur le disque (false). 0 = faux ; 1 = vrai.
num_readers entier Nombre de références sur chaque bloc.
flags entier Indicateurs internes d'Amazon Redshift pour l'en-tête du bloc.

Exemples de requêtes

STV_BLOCKLIST contient une ligne par bloc de disque alloué, par conséquent une requête qui sélectionne toutes les lignes renvoie éventuellement un très grand nombre de lignes. Nous vous conseillons d'utiliser uniquement des requêtes agrégées avec STV_BLOCKLIST.

La vue SVV_DISKUSAGE fournit des informations similaires dans un format plus convivial. Toutefois, l'exemple suivant illustre une utilisation de la table STV_BLOCKLIST.

Pour déterminer le nombre de blocs de 1 Mo utilisés par chaque colonne dans la table VENUE, tapez la requête suivante :

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;

Cette requête renvoie le nombre de blocs de 1 Mo alloué à chaque colonne dans la table VENUE, illustré par les exemples de données suivants :

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

La requête suivante affiche ou non des données de table réellement distribuées à toutes tranches :

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;

Cette requête génère l'exemple de sortie suivant, illustrant la distribution homogène des données de la table avec la plupart des lignes :

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 requête suivante détermine si tous les blocs désactivés ont été dédiés au disque :

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)