SVV_DISKUSAGE - Amazon Redshift

SVV_DISKUSAGE

Amazon Redshift は STV_TBL_PERM テーブルと STV_BLOCKLIST テーブルを結合して、SVV_DISKUSAGE システムビューを作成します。SVV_DISKUSAGE ビューにはデータベースのテーブルに対するデータ割り当てに関する情報が含まれます。

次の例で示されているように集計クエリを SVV_DISKUSAGE と一緒に使用すると、データベースあたり、テーブルあたり、スライスあたり、列あたりに割り当てられたディスクブロックの数が算出されます。各データブロックのサイズは 1 MB です。または STV_PARTITIONS を使用して、ディスク利用に関する概要を見ることができます。

SVV_DISKUSAGE はスーパーユーザーのみに表示されます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

注記

このビューはプロビジョニングされたクラスターをクエリする場合のみ使用できます。

テーブルの列

列名 データ型 説明
db_id integer データベース ID。
name character(72) テーブル名。
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 ブロックに含まれる値の数。
minvalue bigint ブロックに含まれる最小値。
maxvalue bigint ブロックに含まれる最大値。
sb_pos integer ディスクのスーパーブロックの位置の内部識別子。
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。

サンプルクエリ

SVV_DISKUSAGE には割り当て済みディスクブロックにつき 1 つの行が含まれるため、すべての行を選択するクエリを実行すると非常に多数の行が返される可能性があります。SVV_DISKUSAGE を使用した集計クエリのみを使用することをお勧めします。

USERS テーブルの列 6 (EMAIL 列) に対してこれまでに割り当てられたブロックの最も大きな数を返します。

select db_id, trim(name) as tablename, max(blocknum) from svv_diskusage where name='users' and col=6 group by db_id, name; db_id | tablename | max --------+-----------+----- 175857 | users | 2 (1 row)

次のクエリは、SALESNEW という名前の 10 列の大型テーブルのすべての列と似た結果を返します。(列 10 から 12 に対応する最後の 3 行は、非表示のメタデータ列用です。)

select db_id, trim(name) as tablename, col, tbl, max(blocknum) from svv_diskusage where name='salesnew' group by db_id, name, col, tbl order by db_id, name, col, tbl; db_id | tablename | col | tbl | max --------+------------+-----+--------+----- 175857 | salesnew | 0 | 187605 | 154 175857 | salesnew | 1 | 187605 | 154 175857 | salesnew | 2 | 187605 | 154 175857 | salesnew | 3 | 187605 | 154 175857 | salesnew | 4 | 187605 | 154 175857 | salesnew | 5 | 187605 | 79 175857 | salesnew | 6 | 187605 | 79 175857 | salesnew | 7 | 187605 | 302 175857 | salesnew | 8 | 187605 | 302 175857 | salesnew | 9 | 187605 | 302 175857 | salesnew | 10 | 187605 | 3 175857 | salesnew | 11 | 187605 | 2 175857 | salesnew | 12 | 187605 | 296 (13 rows)