2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

52.11. pg_class #

目錄 pg_class 描述了具有列或與表類似的其它物件。這包括索引(但請參閱 pg_index)、序列(但請參閱 pg_sequence)、檢視、物化檢視、複合型別和 TOAST 表;請參閱 relkind。在下面的描述中,當我們指所有這些型別的物件時,我們稱之為“關係”。並非 pg_class 的所有列對於所有關係型別都有意義。

表 52.11. pg_class

列 型別

描述

oid oid

行識別符號

relname name

表、索引、檢視等的名稱。

relnamespace oid (引用 pg_namespace.oid)

包含此關係的名字空間的 OID。

reltype oid (引用 pg_type.oid)

如果存在,則此錶行型別對應的資料型別的 OID;對於沒有 pg_type 條目的索引、序列和 toast 表,此值為零。

reloftype oid (引用 pg_type.oid)

對於型別化表,底層複合型別的 OID;對於所有其他關係,此值為零。

relowner oid (引用 pg_authid.oid)

關係的屬主。

relam oid (引用 pg_am.oid)

訪問此表或索引所用的訪問方法。如果關係是序列或沒有磁碟檔案,則此欄位無意義;但對於分割槽表,如果設定了此欄位,則在確定分割槽建立時使用的訪問方法時,它會覆蓋 default_table_access_method(當在建立命令中未指定時)。

relfilenode oid

此關係磁碟檔案的名稱;零表示這是一個“對映的”關係,其磁碟檔名由底層狀態決定。

reltablespace oid (引用 pg_tablespace.oid)

儲存此關係的表空間。如果為零,則表示使用資料庫的預設表空間。如果關係沒有磁碟檔案,則此欄位無意義;但對於分割槽表,這是建立分割槽時使用的表空間(當在建立命令中未指定時)。

relpages int4

此表磁碟表示的大小(以頁為單位,每頁大小為 BLCKSZ)。這只是規劃器使用的估算值。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX)更新。

reltuples float4

表中的活動行數。這只是規劃器使用的估算值。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX)更新。如果表從未被 vacuum 或 analyze 過,reltuples 包含 -1,表示行數未知。

relallvisible int4

表可見性對映中標記為“all-visible”(全部可見)的頁數。這只是規劃器使用的估算值。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX)更新。

relallfrozen int4

表可見性對映中標記為“all-frozen”(全部凍結)的頁數。這只是用於觸發自動 vacuum 的估算值。它也可以與 relallvisible 一起用於安排手動 vacuum 和調整 vacuum 的凍結行為。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX)更新。

reltoastrelid oid (引用 pg_class.oid)

與此表關聯的 TOAST 表的 OID,如果沒有則為零。TOAST 表將大的屬性 離線 儲存在輔助表中。

relhasindex bool

如果這是一個表並且它有(或最近有過)任何索引,則為真。

relisshared bool

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

relpersistence char

p = 永久表/序列,u = 未記錄的表/序列,t = 臨時表/序列。

relkind char

r = 普通表,i = 索引,S = 序列,t = TOAST 表,v = 檢視,m = 物化檢視,c = 複合型別,f = 外表,p = 分割槽表,I = 分割槽索引。

relnatts int2

關係中的使用者列數(不包括系統列)。pg_attribute 中必須有對應數量的條目。另請參閱 pg_attribute.attnum

relchecks int2

表中 CHECK 約束的數量;請參閱 pg_constraint 目錄。

relhasrules bool

如果表有(或曾經有)規則,則為真;請參閱 pg_rewrite 目錄。

relhastriggers bool

如果表有(或曾經有)觸發器,則為真;請參閱 pg_trigger 目錄。

relhassubclass bool

如果表或索引有(或曾經有過)任何繼承子項或分割槽,則為真。

relrowsecurity bool

如果啟用了行級安全性,則為真;請參閱 pg_policy 目錄。

relforcerowsecurity bool

如果行級安全性(啟用時)也適用於表屬主,則為真;請參閱 pg_policy 目錄。

relispopulated bool

如果關係已填充,則為真(對於除某些物化檢視之外的所有關係,此值都為真)。

relreplident char

用於為行形成“複製標識”的列:d = 預設(主鍵,如果有),n = 無,f = 所有列,i = 具有 indisreplident 設定的索引(如果使用的索引已被刪除,則與無相同)。

relispartition bool

如果表或索引是分割槽,則為真。

relrewrite oid (引用 pg_class.oid)

對於在需要表重寫(rewrite)的 DDL 操作期間寫入的新關係,此欄位包含原始關係的 OID;否則為零。該狀態僅在內部可見;對於使用者可見的關係,此欄位永遠不應包含除零以外的任何內容。

relfrozenxid xid

此表中的所有早於此事務 ID 的事務 ID 都已替換為永久(已凍結)事務 ID。這用於跟蹤表是否需要 vacuum 以防止事務 ID 迴繞或允許 pg_xact 被收縮。如果關係不是表,則此值為零(InvalidTransactionId)。

relminmxid xid

此表中的所有早於此多事務 ID 的多事務 ID 都已替換為事務 ID。這用於跟蹤表是否需要 vacuum 以防止多事務 ID 迴繞或允許 pg_multixact 被收縮。如果關係不是表,則此值為零(InvalidMultiXactId)。

relacl aclitem[]

訪問許可權;有關詳細資訊,請參閱 第 5.8 節

reloptions text[]

訪問方法特定的選項,格式為“keyword=value”字串。

relpartbound pg_node_tree

如果表是分割槽(請參閱 relispartition),則為分割槽邊界的內部表示。


pg_class 中的幾個布林標誌是惰性維護的:如果它們的狀態正確,則保證為真,但當條件不再滿足時,可能不會立即重置為假。例如,relhasindexCREATE INDEX 設定,但從不被 DROP INDEX 清除。相反,如果 VACUUM 發現表沒有索引,它就會清除 relhasindex。這種安排可以避免競態條件並提高併發性。

提交更正

如果您在文件中看到任何不正確、與您在使用特定功能時的經驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。