支援的版本: 目前 (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

51.11. pg_class #

目錄 pg_class 描述了具有欄位或在其他方面與表格相似的表格和其他物件。這包括索引(但也請參閱 pg_index)、序列(但也請參閱 pg_sequence)、檢視、實體化檢視、複合類型和 TOAST 表格;請參閱 relkind。 在下文中,當我們指的是所有這些物件種類時,我們會說到關聯pg_class 的並非所有欄位對於所有關聯種類都有意義。

表 51.11. pg_class 欄位

欄位 類型

描述

oid oid

列識別碼

relname name

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

relnamespace oid(參考 pg_namespace.oid

包含此關聯的命名空間的 OID

reltype oid(參考 pg_type.oid

與此表格的列類型對應的資料類型的 OID(如果有的話);索引、序列和 toast 表格為零,它們沒有 pg_type 條目

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

在資料表的可見性地圖中被標記為完全可見的頁面數量。這僅是規劃器使用的估計值。它會由 VACUUMANALYZE 以及一些 DDL 指令(例如 CREATE INDEX)更新。

reltoastrelid oid (參考 pg_class.oid

與此資料表相關聯的 TOAST 資料表的 OID,如果沒有則為零。TOAST 資料表在次要資料表中儲存大型屬性,亦即行外儲存。

relhasindex bool

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

relisshared bool

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

relpersistence char

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

relkind char

r = 一般資料表,i = 索引,S = 序列,t = TOAST 資料表,v = 視窗 (view),m = 具體化視窗 (materialized view),c = 複合型別,f = 外部資料表,p = 分割資料表 (partitioned table),I = 分割索引 (partitioned index)

relnatts int2

關係中的使用者欄位數量(不計算系統欄位)。在 pg_attribute 中必須有這麼多對應的項目。另請參閱 pg_attribute.attnum

relchecks int2

資料表上 CHECK 約束的數量;請參閱 pg_constraint 目錄

relhasrules bool

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

relhastriggers bool

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

relhassubclass bool

如果資料表或索引具有(或曾經具有)任何繼承子資料表或分割區,則為 True

relrowsecurity bool

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

relforcerowsecurity bool

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

relispopulated bool

如果關係已填入(除了某些具體化視窗以外的所有關係都是如此),則為 True

relreplident char

用於形成列的複本識別的欄位:d = 預設值(如果有的話,為主鍵),n = 無,f = 所有欄位,i = 設定了 indisreplident 的索引(如果使用的索引已丟棄,則與無相同)

relispartition bool

如果資料表或索引是分割區,則為 True

relrewrite oid (參考 pg_class.oid

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

relfrozenxid xid

此資料表中,在此之前的所有交易 ID 都已替換為永久(凍結)交易 ID。這用於追蹤是否需要對資料表執行 vacuum,以防止交易 ID 繞回或允許縮小 pg_xact。如果關係不是資料表,則為零 (InvalidTransactionId)。

relminmxid xid

此資料表中,在此之前的所有 multixact ID 都已替換為交易 ID。這用於追蹤是否需要對資料表執行 vacuum,以防止 multixact 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。 這種安排避免了競爭情況並提高了並發性。

提交更正

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