STV_TBL_PERM - Amazon Redshift

STV_TBL_PERM

STV_TBL_PERM テーブルには、現在のセッション用にユーザーが作成した一時テーブルを含め、Amazon Redshift の永続テーブルに関する情報が表示されます。STV_TBL_PERM には、すべてのデータベース内のすべてのテーブルに関する情報が含まれます。

このテーブルは、クエリの処理中にシステムが作成する一時的なデータベーステーブルの情報を表示する STV_TBL_TRANS とは異なります。

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

テーブルの列

列名 データ型 説明
slice integer テーブルに割り当てられたノードスライス。
id integer テーブル ID。
name character(72) テーブル名。
rows bigint スライス内のデータ行数。
sorted_rows bigint ディスク上でソート済みの、スライス内の行数。この数が ROWS の数と異なる場合は、テーブルに vacuum を実行して行をソートし直してください。
temp integer テーブルが一時テーブルかそうでないかを示します。0 = false、1 = true。
db_id integer テーブルが作成されたデータベースの ID。
insert_pristine integer 内部使用を目的とします。
delete_pristine integer 内部使用を目的とします。
backup integer 値は、テーブルがスナップショットクラスターに含まれているかどうかを示します。0 = no、1 = yes。詳細については、CREATE TABLE コマンドの BACKUP パラメータを参照してください。
dist_style integer スライスが属するテーブルの分散スタイル。値の詳細については、「分散スタイルの表示」を参照してください。分散スタイルの詳細については、「分散スタイル」を参照してください。
block_count integer スライスが使用するブロックの数。ブロック数を計算できない場合、値は -1 です。

サンプルクエリ

以下のクエリは、個別のテーブル ID と名前を返します。

select distinct id, name from stv_tbl_perm order by name; id | name --------+------------------------- 100571 | category 100575 | date 100580 | event 100596 | listing 100003 | padb_config_harvest 100612 | sales ...

テーブル ID は他のシステムテーブルも使用するため、どのテーブル ID がどのテーブルに対応しているかを知っておくと非常に便利です。この例では、SELECT DISTINCT を使用して重複内容が削除されています (テーブルは複数のスライスに配分されています)。

VENUE テーブル内の各列で使用されているブロックの数を調べるには、以下のクエリを使用します:

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; col | count -----+------- 0 | 8 1 | 8 2 | 8 3 | 8 4 | 8 5 | 8 6 | 8 7 | 8 (8 rows)

使用に関する注意事項

ROW 列には、vacuum されていない (または SORT ONLY オプション付きで vacuum された) 削除済みの行の数が含まれます。このため、STV_TBL_PERM テーブル内の ROW 列の SUM は、特定のテーブルを直接クエリしたときの COUNT(*) 結果と一致しないことがあります。例えば、VENUE から 2 行が削除された場合、COUNT(*) の結果は 200 ですが、SUM (ROWS) の結果は 202 のままです:

delete from venue where venueid in (1,2); select count(*) from venue; count ------- 200 (1 row) select trim(name) tablename, sum(rows) from stv_tbl_perm where name='venue' group by name; tablename | sum -----------+----- venue | 202 (1 row)

STV_TBL_PERM のデータを同期するには、VENUE テーブルの完全バキュームを実行します。

vacuum venue; select trim(name) tablename, sum(rows) from stv_tbl_perm where name='venue' group by name; tablename | sum -----------+----- venue | 200 (1 row)