description: 版本:11

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。這種安排避免了競爭條件並改善了一致性。