PostgreSQL pg_class

2021-09-14 10:32 更新

目錄pg_class記錄表和幾乎所有具有列或者像表的東西。這包括索引(但還要參見pg_index)、序列(但還要參見pg_sequence)、視圖、物化視圖、組合類型和TOAST表,參見relkind。下面,當(dāng)我們提及所有這些類型的對象時(shí)我們使用 關(guān)系。并非所有列對于所有關(guān)系類型都有意義。

表 51.11. pg_class Columns

列類型

描述

oid oid

行標(biāo)識(shí)符

relname name

表、索引、視圖等的名字

relnamespace oid (references pg_namespace.oid)

包含該關(guān)系的名字空間的OID

reltype oid (references pg_type.oid)

可能存在的表行類型所對應(yīng)數(shù)據(jù)類型的OID(對索引為0,索引沒有pg_type項(xiàng))

reloftype oid (references pg_type.oid)

對于有類型的表,為底層組合類型的OID,對于其他所有關(guān)系為0

relowner oid (references pg_authid.oid)

關(guān)系的擁有者

relam oid (references pg_am.oid)

如果這是一個(gè)表或者索引,表示索引使用的訪問方法(堆、B樹、哈希等)

relfilenode oid

該關(guān)系的磁盤文件的名字,0表示這是一個(gè)映射關(guān)系,其磁盤文件名取決于低層狀態(tài)

reltablespace oid (references pg_tablespace.oid)

該關(guān)系所存儲(chǔ)的表空間。如果為0,使用數(shù)據(jù)庫的默認(rèn)表空間。(如果關(guān)系無磁盤文件時(shí)無意義)

relpages int4

該表磁盤表示的尺寸,以頁面計(jì)(頁面尺寸為BLCKSZ)。這只是一個(gè)由規(guī)劃器使用的估計(jì)值。 它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。

reltuples float4

表中的存活行數(shù)。這只是一個(gè)由規(guī)劃器使用的估計(jì)值。 它被VACUUMANALYZE以及一些DDL命令(如CREATE INDEX)所更新。

relallvisible int4

在表的可見性映射表中被標(biāo)記為全可見的頁數(shù)。這只是一個(gè)由規(guī)劃器使用的估計(jì)值。 它被VACUUMANALYZE以及一些DDL命令(如CREATE INDEX)所更新。

reltoastrelid oid (references pg_class.oid)

與該表相關(guān)聯(lián)的TOAST表的OID,如果沒有則為0。TOAST表將大屬性線外存儲(chǔ)在一個(gè)二級表中。

relhasindex bool

如果這是一個(gè)表并且其上建有(或最近建有)索引則為真

relisshared bool

如果該表在集簇中的所有數(shù)據(jù)庫間共享則為真。只有某些系統(tǒng)目錄(如pg_database)是共享的。

relpersistence char

p = 永久表,u = 無日志表, t = 臨時(shí)表

relkind char

r = 普通表, i = 索引, S = 序列, t = TOAST表, v = 視圖, m = 物化視圖, c = 組合類型, f= 外部表, p = 分區(qū)表, I = 分區(qū)索引

relnatts int2

關(guān)系中用戶列的數(shù)目(系統(tǒng)列不計(jì)算在內(nèi))。在pg_attribute中必須有這么多對應(yīng)的項(xiàng)。 另請參閱pg_attribute.attnum。

relchecks int2

表上CHECK約束的數(shù)目,參見pg_constraint目錄

relhasrules bool

如果表有(或曾有)規(guī)則則為真,參見pg_rewrite目錄

relhastriggers bool

如果表有(或曾有)觸發(fā)器則為真,參見 pg_trigger目錄

relhassubclass bool

如果表或索引具有(或曾經(jīng)具有)任何繼承子項(xiàng),則為真(True)

relrowsecurity bool

如果表上啟用了行級安全性則為真,參見 pg_policy目錄

relforcerowsecurity bool

如果行級安全性(啟用時(shí))也適用于表擁有者則為真,參見 pg_policy目錄

relispopulated bool

如果表已被填充則為真(對于所有關(guān)系該列都為真,但對于某些物化視圖卻不是)

relreplident char

用來為行形成replica identity的列: d = 默認(rèn) (主鍵,如果存在), n = 無, f = 所有列 i = 索引的indisreplident被設(shè)置或者為默認(rèn)

relispartition bool

如果表或索引是一個(gè)分區(qū),則為真

relrewrite oid (references pg_class.oid)

對于在要求表重寫的DDL操作期間被寫入的新關(guān)系,這個(gè)域包含原始關(guān)系的OID,否則為0。 那種狀態(tài)僅在內(nèi)部可見,對于一個(gè)用戶可見的關(guān)系這個(gè)域應(yīng)該從不包含不是0的值。

relfrozenxid xid

在此之前的所有事務(wù)ID在表中已經(jīng)被替換為一個(gè)永久的(凍結(jié)的) 事務(wù)ID。 這用于跟蹤表是否需要被清理,以便阻止事務(wù)ID回卷或者允許pg_xact被收縮。 如果該關(guān)系不是一個(gè)表則為0(InvalidTransactionId)。

relminmxid xid

在此之前的多事務(wù)ID在表中已經(jīng)被替換為一個(gè)事務(wù)ID。這被用于跟蹤表是否需要被清理,以阻止 多事務(wù)ID回卷或者允許pg_multixact被收縮。如果關(guān)系不是一個(gè)表則 為0(InvalidMultiXactId)。

relacl aclitem[]

訪問權(quán)限,更多信息參見第 5.7 節(jié)

reloptions text[]

訪問方法相關(guān)的選項(xiàng),以keyword=value字符串形式

relpartbound pg_node_tree

如果表示一個(gè)分區(qū)(見relispartition),分區(qū)邊界的內(nèi)部表達(dá)


pg_class中的一些邏輯標(biāo)志被以一種懶惰的方式維護(hù):在正確狀態(tài)時(shí)它們被保證為真,但是當(dāng)條件不再為真時(shí)它們并不會(huì)被立刻重置為假。例如,relhasindexCREATE INDEX設(shè)置,但它從不會(huì)被DROP INDEX清除。作為替代,VACUUM會(huì)在找到無索引表后清除其 relhasindex。這種安排避免了競爭條件并且提高了并發(fā)性。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號