51.11. pg_class

目录pg_class对表以及具有列或与表相似的其他所有内容进行目录。其中包括索引(另请参见pg_index),序列(另请参见pg_sequence),视图,实例化视图,组合类型和 TOAST 表;参见relkind。下面,当我们指所有这些对象时,我们称之为“关系”。并非所有列对于所有关系类型都有意义。

表 51.11. pg_class

Name Type References Description
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 树,哈希等)
relfilenode oid 此关系的磁盘文件名;零表示这是一个“Map”关系,其磁盘文件名由低级状态确定
reltablespace oid pg_tablespace.oid 存储此关系的表空间。如果为零,则隐含数据库的默认表空间。 (如果该关系没有磁盘文件,则没有意义.)
relpages int4 该表的磁盘表示形式的大小,以页为单位(大小为BLCKSZ)。这只是计划者使用的估计值。它由VACUUMANALYZE和一些 DDL 命令(如CREATE INDEX)更新。
reltuples float4 表中的行数。这只是计划者使用的估计值。它由VACUUMANALYZE和一些 DDL 命令(例如CREATE INDEX)更新。
relallvisible int4 在表格的可见性图中标记为全可见的页面数。这只是计划者使用的估计值。它由VACUUMANALYZE和一些 DDL 命令(例如CREATE INDEX)更新。
reltoastrelid oid pg_class.oid 与此表关联的 TOAST 表的 OID,如果没有,则为 0. TOAST 表将大型属性“离线”存储在辅助表中。
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 如果表具有(或曾经具有)规则,则为 true;否则为 true。参见pg_rewrite目录
relhastriggers bool 如果表具有(或曾经具有)触发器,则为 true;否则为 true。参见pg_trigger目录
relhassubclass bool 如果表有(或曾经有)任何继承子代,则为真
relrowsecurity bool 如果表启用了行级安全性,则为 true;否则为 false。参见pg_policy目录
relforcerowsecurity bool 如果行级安全性(启用时)也适用于表所有者,则为 true;否则为 true。参见pg_policy目录
relispopulated bool 如果关系已填充,则为 true(对于除某些实例化视图以外的所有关系,都为 true)
relreplident char 用于为行形成“副本身份”的列:d =默认值(主键,如果有的话),n =无,f =所有列i =设置了indisreplident的索引
relispartition bool 如果表是分区,则为真
relfrozenxid xid 此表之前的所有事务 ID 已被永久(“冻结”)事务 ID 取代。这用于跟踪表是否需要清理以防止事务 ID 环绕或允许pg_xact收缩。如果该关系不是表,则为零(InvalidTransactionId)。
relminmxid xid 此表之前的所有多重 ID 已被事务 ID 取代。这用于跟踪是否需要清理表以防止多重 ID 环绕或使pg_multixact收缩。如果该关系不是表,则为零(InvalidMultiXactId)。
relacl aclitem[] 访问权限;有关详情,请参见GRANTREVOKE
reloptions text[] 访问方法特定的选项,如“ keyword = value”字符串
relpartbound pg_node_tree 如果 table 是一个分区(请参见relispartition),则绑定该分区的内部表示

pg_class中的几个布尔标志被延迟维护:如果这是正确的状态,则保证它们为 true,但当条件不再为 true 时,可能不会立即将其重置为 false。例如,relhasindexCREATE INDEX设置,但永远不会由DROP INDEX清除。相反,如果VACUUM发现表没有索引,则清除relhasindex。这种安排避免了竞争情况并提高了并发性。

上一章 首页 下一章