51.11 pg_class

目錄 pg_class 對資料表和大多數具有欄位或其他類似於資料表的內容進行彙整。 包括索引(但也參閱 pg_index)、序列(但請參閱 pg_sequence)、檢視表、具體化檢視表、複合型別和 TOAST 資料表;另請查看 relkind 欄位。以下,當我們指的是所有這些類型的物件時,我們都會說「關連(relation)」。 並非所有欄位對所有關連類型都有意義。

Table 52.11. pg_class Columns

欄位

型別

參考

說明

oid

oid

資料列指標(隱藏屬性;必須明確選擇)

relname

name

資料表的名稱,索引,檢視表等

relnamespace

oid

pg_namespace.oid

包含此關連命名空間的 OID

reltype

oid

pg_type.oid

與此資料表的資料列類型對應資料型別的OID(如果有)(索引為零,因為沒有 pg_type 項目)

reloftype

oid

pg_type.oid

對於複合型別資料表,底層複合型別的 OID,對於所有其他關連的值為零

relowner

oid

pg_authid.oid

關連的所有者

relam

oid

pg_am.oid

如果這是索引,則為使用存取的方法(B-tree,hash 等)

relfilenode

oid

此關連的磁碟檔案的名稱;零表示這是一個「映射」關連,其磁碟檔案名稱由底層狀態決定

reltablespace

oid

pg_tablespace.oid

儲存此關連的資料表空間。如果為零,則隱含資料庫的預設資料表空間。(如果關連沒有磁碟檔案,則沒有意義。)

relpages

int4

頁面(大小為 BLCKSZ)的磁碟表示形式的大小。這只是計劃程序使用的估算值。它由 VACUUM,ANALYZE 和一些 DDL 指令(如 CREATE INDEX)更新。

reltuples

float4

資料表中的資料列數。這只是計劃程序使用的估算值。它由VACUUM,ANALYZE 和一些 DDL 指令(如 CREATE INDEX)更新。

relallvisible

int4

在資料表的可見性映射中標記為全部可見的頁面數。這只是計劃程序使用的估算值。它由 VACUUM,ANALYZE 和一些 DDL 指令(如 CREATE INDEX)更新。

reltoastrelid

oid

pg_class.oid

與此資料表關連的 TOAST 資料表的OID,如果沒有,則為0。TOAST 資料表在輔助資料表中儲存“out of line”的大型屬性。

relhasindex

bool

如果這是一個資料表並且它有(或最近有)任何索引,則為 True

relisshared

bool

如果此資料表在叢集中的所有資料庫之間共享,則為 True。只有某些系統目錄共享(例如 pg_database)。

relpersistence

char

p = 永久資料表,u = 無日誌資料,t = 臨時資料表

relkind

char

r = 普通資料表,i = 索引,S = 序列,t = TOAST 資料表,v = 檢視表,m = 具體化檢視表,c = 複合型別,f = 外部資料表,p = 分割資料表

relnatts

int2

關連中的用戶欄位數(系統欄位未計算)。pg_attribute 中必須有這麼多對應的項目。另請參閱 pg_attribute.attnum。

relchecks

int2

資料表上的 CHECK 限制條件數目;請參閱 pg_constraint 目錄

relhasoids

bool

如果我們為關連的每一個資料列産生一個 OID,則為 True

relhaspkey

bool

如果資料表具有(或曾經有)主鍵,則為 True

relhasrules

bool

如果資料表有(或曾經有)rule,則為 true;請參閱 pg_rewrite 目錄

relhastriggers

bool

如果資料表具有(或曾經有)觸發器,則為 True;請參閱 pg_trigger 目錄

relhassubclass

bool

如果資料表具有(或曾經有)任何繼承子項,則為 True

relrowsecurity

bool

如果資料表啟用了資料列級安全性,則為 True;請參閱 pg_policy 目錄

relforcerowsecurity

bool

如果資料列級別安全性(啟用時)也適用於資料表擁有者,則為 True;請參閱 pg_policy 目錄

relispopulated

bool

如果關連充入了資料,則為 True(除了某些具體化檢視表之外的所有關連都是 True)

relreplident

char

用於為資料列形成“replica identity”的欄位:d = 預設(主鍵,如果有),n = 無,f = 所有列,i = 具有 indisreplident 設定的索引,或預設值

relispartition

bool

True if table is a partition

relfrozenxid

xid

此資料表之前的所有事務 ID 都已替換為此資料表中的永久(“frozen”)事務 ID。這用於追踪資料表是否需要被清理以防止事務 ID 重覆或讓 pg_xact 縮小。如果關連不是資料表,則為零(InvalidTransactionId)。

relminmxid

xid

此資料表之前的所有 multixact ID 都已被此資料表中的事務 ID 替換。這用於追踪表是否需要被清理以防止多重 ID 重覆或使 pg_multixact 縮小。如果關連不是資料表,則為零(InvalidMultiXactId)。

relacl

aclitem[]

存取權限;有關詳細信息,請參閱 GRANTREVOKE

reloptions

text[]

存取方法的特定選項,為「keyword = value」字串

relpartbound

pg_node_tree

如果資料表是一個分割區(請參閱 relispartition),則綁定分割區的內部表示

pg_class 中的幾個布林欄位的維護是鬆散的:如果這是正確的狀態,那它們保證為 true,但是當條件不再為真時,可能不會立即重置為 false。例如,relhasindex 由CREATE INDEX 設定,但它永遠不會被 DROP INDEX 清除。相反地,如果 VACUUM 發現資料表沒有索引,則清除 relhasindex。這種安排避免了競爭條件並改善了一致性。