STV_BLOCKLIST
STV_BLOCKLIST には、データベース内の各スライス、テーブル、または列で使用される 1 MB ディスクブロックの数が表示されます。
データベース、テーブル、または列ごとに割り当てられている 1 MB ディスクブロックの数を調べるには、以下の例に示すように、STV_BLOCKLIST で集計クエリを使用します。または STV_PARTITIONS を使用して、ディスク利用に関する概要を見ることができます。
STV_BLOCKLIST はスーパーユーザーのみに表示されます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
注記
STV_BLOCKLIST は、プロビジョニングされたクラスターまたはサーバーレス名前空間が所有するブロックのみを記録します。データベースにデータ共有プロデューサーから共有されたブロックが含まれている場合、それらのブロックは STV_BLOCKLIST に含まれません。データ共有に関する詳細については、「Amazon Redshift でのデータの共有」を参照してください。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
slice | integer | ノードスライス。 |
col | integer | 列のゼロベースインデックス。作成するテーブルにはすべて、3 つの非表示列 (INSERT_XID、DELETE_XID、ROW_ID (OID) ) が追加されます。例えばユーザー定義列が 3 つあるテーブルには、実際には 6 つの列が含まれます。ユーザー定義列の初期番号は 0、1、2 です。その場合、INSERT_XID、DELETE_XID、および ROW_ID 列はそれぞれ、3、4、および 5 となります。 |
tbl | integer | データベーステーブルのテーブル ID。 |
blocknum | integer | データブロックの ID。 |
num_values | integer | ブロックに含まれる値の数。 |
extended_limits | integer | 内部使用を目的とします。 |
minvalue | bigint | ブロックの最小値。数値以外のデータの場合、最初の 8 文字を 64 ビット整数として格納します。ディスクスキャンに使用されます。 |
maxvalue | bigint | ブロックの最大値。数値以外のデータの場合、最初の 8 文字を 64 ビット整数として格納します。ディスクスキャンに使用されます。 |
sb_pos | integer | ディスクのスーパーブロックの位置の内部 Amazon Redshift 識別子。 |
pinned | integer | 事前ロードの一環としてブロックをメモリにピンするかどうかを示します。0 = false、1 = true。デフォルトは false です。 |
on_disk | integer | ブロックを自動的にディスクに保存するかどうかを示します。0 = false、1 = true。デフォルトは false です。 |
modified | integer | ブロックが修正されたかどうかを示します。0 = false、1 = true。デフォルトは false です。 |
hdr_modified | integer | ブロックヘッダーが修正されたかどうかを示します。0 = false、1 = true。デフォルトは false です。 |
unsorted | integer | ブロックが未ソートかどうかを示します。0 = false、1 = true。デフォルトは true です。 |
tombstone | integer | 内部使用を目的とします。 |
preferred_diskno | integer | ディスクにエラーがない場合に、ブロックが存在すべきディスクの番号。ディスクが修正されると、ブロックがそのディスクに戻されます。 |
temporary | integer | ブロックに、一時テーブルやクエリの中間結果などの一時データが含まれているかどうかを示します。0 = false、1 = true。デフォルトは false です。 |
newblock | integer | ブロックが新しい (true) かまたは一度もディスクにコミットされていない (false) かを示します。0 = false、1 = true。 |
num_readers | integer | 各ブロックの参照数。 |
flags | integer | ブロックヘッダーの内部 Amazon Redshift フラグ。 |
サンプルクエリ
STV_BLOCKLIST には、割り当てられたディスクブロックごとに行が 1 つ含まれるため、すべての行を選択するようなクエリを実行すると、非常に多くの行が返される可能性があります。STV_BLOCKLIST では集計クエリのみを使用することをお勧めします。
SVV_DISKUSAGE ビューには同様の情報が見やすい形式で表示されますが、以下の例では STV_BLOCKLIST テーブルの利用方法の 1 つを示します。
VENUE テーブル内の各列で使用されている 1 MB ブロックの数を調べるには、以下のクエリを使用します。
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;
このクエリは、VENUE テーブル内の各列に割り当てられている 1 MB ブロックの数を返します。例:
col | count -----+------- 0 | 4 1 | 4 2 | 4 3 | 4 4 | 4 5 | 4 7 | 4 8 | 4 (8 rows)
以下のクエリは、テーブルデータが実際に全スライスに配分されているかどうかを示します。
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;
このクエリは、以下のような出力を返します。出力には、最も多くの行を含む表に対する均等なデータ配分が表示されています。
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)
以下のクエリは、廃棄されたブロックの中に、ディスクにコミットされていたものがあるかどうかを返します。
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)