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)