Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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

如果此表是有(或最近有)任何索引的表,则为真

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

如果表有(或曾经有)规则,则为 True;参见 pg_rewrite 目录

relhastriggers bool

如果表有(或曾经有)触发器,则为 True;参见 pg_trigger 目录

relhassubclass bool

如果表或索引有(或曾经有)任何继承子类或分区,则为 True

relrowsecurity bool

如果启用了表级别的安全性,则为 True;参见 pg_policy 目录

relforcerowsecurity bool

当启用表级别安全性时,如果对表所有者也应用了该安全性,则为 True;参见 pg_policy 目录

relispopulated bool

如果关系已填充(除了一些物化视图外,所有关系均为 True),则为 True

relreplident char

用于为行形成 副本标识 的列:d = 默认值(如果存在,则是主键),n = 空,f = 所有列,i = 设置了 indisreplident 的索引(如果已删除所使用的索引,则与空相同)

relispartition bool

如果表或索引是分区,则为 True

relrewrite oid(引用 pg_class.oid

对于 DDL 操作中编写的需要表重写的表,这其中包含原始表的 OID;否则为零。该状态仅在内部可见;对于用户可见关系,此字段永远不应包含除零以外的任何内容。

relfrozenxid xid

此前该表中的所有事务 ID 已被一个持久(冻结)事务 ID 所取代。这用于跟踪表是否需要被清理,以防止事务 ID 卷绕或允许缩小 pg_xact。若关系不是表,则为零(InvalidTransactionId)。

relminmxid xid

此前该表中的所有多重事务 ID 已被一个事务 ID 所取代。这用于跟踪表是否需要被清理,以防止多重事务 ID 卷绕或允许缩小 pg_multixact。若关系不是表,则为零(InvalidMultiXactId)。

relacl aclitem[]

访问权限;更多详细信息,请参见 5.8 节

reloptions text[]

访问方法特定选项,作为 关键词=值 字符串

relpartbound pg_node_tree

如果表是分区(参见 relispartition),则分区边界的内部表示


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