STV_TBL_PERM - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

STV_TBL_PERM

STV_TBL_PERM 資料表包含 Amazon Redshift 中永久資料表的相關資訊,其中包括使用者為目前工作階段建立的暫時資料表。STV_TBL_PERM 包含所有資料庫中所有資料表的資訊。

此資料表不同於 STV_TBL_TRANS,它包含系統在查詢處理過程中建立之暫時性資料庫的相關資訊。

STV_TBL_PERM 僅有超級使用者才看得到。如需詳細資訊,請參閱 系統資料表和檢視中資料的可見性

資料表欄位

資料欄名稱 資料類型 描述
分割 integer 配置至資料表的節點分割。
id integer 表格 ID。
name character(72) 資料表名稱.
rows bigint 分割中的資料列數。
sorted_rows bigint 已在磁碟上排序之分割中的資料列數。如果此數字不符合 ROWS 數字,請清空資料表以重新排序資料列。
temp integer 表是否為臨時資料表。0 = false;1 = true。
db_id integer 用於建立資料表之資料庫的 ID。
insert_pristine integer 供內部使用。
delete_pristine integer 供內部使用。
backup integer 用於指出資料表是否包含在叢集快照中的值。0 = 否;1 = yes。如需詳細資訊,請參閱 CREATE TABLE 命令的 BACKUP 參數。

範例查詢

下列查詢會傳回不同的資料表 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)

使用須知

ROWS 欄位包含未清空但已刪除 (或已清空但有 SORT ONLY 選項) 的資料列數。因此,當您直接查詢特定資料表時,STV_TBL_PERM 資料表中 ROWS 欄位的總和 (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)