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)