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)