Postgresql 中文操作指南

53.11. pg_class #

目录 pg_class 描述了具有列或以其他方式类似于表的表和其他对象。这包括索引(但也参见 pg_index )、序列(但也参见 pg_sequence )、视图、物化视图、复合类型和 TOAST 表;请参阅 relkind 。在下文中,当我们指代所有这些类型的对象时,我们所说的就是“关系”。并非 pg_class 的所有列对所有关系类型都具有意义。

Table 53.11. pg_class Columns

Column Type

Description

oid oid

Row identifier

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 )如果这是一个表或索引,则使用的访问方法(堆、B 树、哈希等);否则为零(零发生在序列以及没有存储的关系(如视图)中)

relfilenode oid 此关系的磁盘文件名称;零意味着这是一个“映射”关系,其磁盘文件名由底层状态确定

reltablespace oid (参考 pg_tablespace . oid )存储此关系的表空间。如果为零,则表示使用数据库的默认表空间。对没有磁盘文件的表来说无意义,分区表除外,其中这是在创建命令中未指定分区时将创建分区的表空间。

relpages int4 此表在磁盘表示中的页面大小( BLCKSZ 的页面大小)。这只是计划程序使用的估值。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX )更新。

reltuples float4 表中活动行的数量。这只是计划程序使用的估值。它由 VACUUMANALYZE 和一些 DDL 命令(如 CREATE INDEX )更新。如果表尚未做过清理或分析,则 reltuples 包含 -1 ,表示行数未知。

relallvisible int4 在表的可见性映射中标记为全部可见的页面的数量。这只是计划程序使用的估值。它由 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 )对于在需要表改写的 DDL 操作期间编写的新的关系,这将包含原始关系的 OID;否则为零。该状态仅在内部显示;对于用户可见的关系,此字段绝不会包含除零以外的任何内容。

relfrozenxid xid 此表中,这个事务 ID 之前的全部事务 ID 已被一个永久(“冻结”)事务 ID 替换。这用于跟踪表是否需要真空清理,以防止事务 ID 回绕或允许 pg_xact 收缩。如果关系不是表,则为零 ( InvalidTransactionId )。

relminmxid xid 此表中,这个多重事务 ID 之前的全部多重事务 ID 已被一个事务 ID 替换。这用于跟踪表是否需要真空清理,以防止多重事务 ID 回绕或允许 pg_multixact 收缩。如果关系不是表,则为零 ( InvalidMultiXactId )。

relacl aclitem[] 访问权限;详情请参阅 Section 5.7

reloptions text[] 访问方法特定选项,如“关键词=值”字符串。

relpartbound pg_node_tree 如果表是一个分区(参见 relispartition ),则为分区分界内部表示。

pg_class 中的几个 Boolean 标志被被动维护:如果那是正确状态,则保证它们为真,但在条件不再为真时可能不会立即重置为假。例如, relhasindexCREATE INDEX 设置,但 DROP INDEX 永远不会清除它。相反,如果 VACUUM 发现表没有任何索引,则它会清除 relhasindex 。此排序可避免竞争条件并改进并发性。