41.9. pg_class

pg_class 資料表記載資料表和幾乎所有有 字串或者是那些類似資料表的東西。包括索引(不過還要參閱 pg_index),序列,視圖,復合類型和一些特殊關係類型; 參閱 relkind。 在下面,當我們指所有這些對象的時候我們說 "relations"(關係)。 不是所有字串對所有關係類型都有意義。

Table 41-9. pg_class 字串

名字類型引用描述
relnamename 資料表,索引,視圖等的名字。
relnamespaceoidpg_namespace.oid 包含這個關係的名字空間(模式)的 OID
reltypeoidpg_type.oid 對應這個資料表的行類型的資料類型(索引為零,它們沒有pg_type記錄)。
relownerint4pg_shadow.usesysid關係所有者
relamoidpg_am.oid如果資料是索引,那麼就是所用的訪問模式(B-tree,hash,等等)
relfilenodeoid 這個關係在磁盤上的文件的名字,如果沒有則為 0
reltablespaceoidpg_tablespace.oid 這個關係儲存所在的資料表空間。如果為零,則意味著使用該資料庫的預設資料表空間。 (如果關係在磁盤上沒有文件,則這個字串沒有什麼意義。)
relpagesint4  以頁(大小為BLCKSZ)的此資料表在磁盤上的形式的大小。 它只是規劃器用的一個近似值,是由 VACUUMANALYZE,和幾個 DDL 命令,比如 CREATE INDEX 更新。
reltuplesfloat4  資料表中資料的數目。只是規劃器使用的一個估計值,由 VACUUMANALYZE,和幾個 DDL 命令,比如 CREATE INDEX 更新。
reltoastrelidoidpg_class.oid 與此資料表關聯的TOAST資料表的OID,如果沒有為0。 TOAST 資料表在一個從屬資料表裡"離線"儲存大字串。
reltoastidxidoidpg_class.oid對於TOAST資料表是它的索引的 OID,如果不是TOAST資料表則為 0
relhasindexbool 如果它是一個資料表而且至少有(或者最近有過)一個索引,則為真。 它是由CREATE INDEX設置的,但DROP INDEX不會立即將它清除。 如果VACUUM發現一個資料表沒有索引,那麼它清理 relhasindex
relissharedbool 如果該資料表在整個集群中由所有資料庫共享則為真。 只有某些系統資料表(比如 pg_database) 是共享的。
relkindchar  r = 普通資料表,i = 索引,S = 序列,v = 視圖, c = 復合類型,s = 特殊,t = TOAST資料表
relnattsint2  關係中用戶字串數目(除了系統字串以外)。 在 pg_attribute 裡肯定有相同數目對應行。 又見 pg_attribute.attnum.
relchecksint2  資料表裡的檢查約束的數目;參閱 pg_constraint 資料表
reltriggersint2  資料表裡的觸發器的數目;參閱 pg_trigger 資料表
relukeysint2 未用 (不是唯一鍵字的數目)
relfkeysint2 未用 (不是資料表中外鍵的數目)
relrefsint2 未用
relhasoidsbool  如果我們為關係中每行都生成一個 OID 則為真。
relhaspkeybool  如果這個資料表有一個(或者曾經有一個)主鍵,則為真。
relhasrulesbool 如資料表有規則就為真;參閱 pg_rewrite 資料表
relhassubclassbool 如果有(或者曾經有)任何繼承的子資料表,為真。
relaclaclitem[]  訪問權限。參閱 GRANTREVOKE 的描述獲取詳細訊息。