↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 13 已结束支持。 2025-11-13. 请参阅 当前版本手册.

51.11. pg_class #

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

表 51.11. pg_class 列

列类型

描述

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)

如果这是表或索引,则为使用的访问方法(heap、B-树、hash 等)

relfilenode oid

该关系的磁盘文件名;零表示这是一个“映射”关系,其磁盘文件名取决于底层状态

reltablespace oid(引用 pg_tablespace.oid)

存储此关系的表空间。如果为零,则表示使用数据库的默认表空间。对于没有磁盘文件的关系,此值没有意义,但分区表除外:若创建命令未指定表空间,将在此表空间中创建分区。

relpages int4

该表磁盘表示的尺寸,以页面计(页面尺寸为 BLCKSZ)。这只是一个由规划器使用的估计值。它被 VACUUM、ANALYZE 以及一些 DDL 命令(如 CREATE INDEX)所更新。

reltuples float4

表中的存活行数。这只是一个由规划器使用的估计值。它被 VACUUM、ANALYZE 以及一些 DDL 命令(如 CREATE INDEX)所更新。

relallvisible int4

在表的可见性映射中被标记为全可见的页数。这只是一个由规划器使用的估计值。它被 VACUUM、ANALYZE 以及一些 DDL 命令,如 CREATE INDEX 所更新。

reltoastrelid oid(引用 pg_class.oid)

与该表相关联的 TOAST 表的 OID,如果没有则为零。TOAST 表将大属性“行外”存储在一个二级表中。

relhasindex bool

如果这是一个表并且其上建有(或最近建有)索引则为真

relisshared bool

如果该表在集簇中的所有数据库间共享则为真。只有某些系统目录(如 pg_database)是共享的。

relpersistence char

p = 永久表,u = 不记录 WAL 的表,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 回卷或者允许 pg_xact 被收缩。如果该关系不是一个表则为 0(InvalidTransactionId)。

relminmxid xid

在此之前的所有多事务 ID 在表中已经被替换为一个事务 ID。这被用于跟踪表是否需要被清理,以阻止多事务 ID 回卷或者允许 pg_multixact 被收缩。如果关系不是一个表则为 0(InvalidMultiXactId)。

relacl aclitem[]

访问权限,更多信息参见第 5.7 节

reloptions text[]

访问方法相关的选项,以“keyword=value”字符串形式

relpartbound pg_node_tree

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


pg_class 中的一些布尔标志采用延迟维护:当条件成立时,保证它们为真;但当条件不再成立时,可能不会立即将它们重置为假。例如,relhasindex 由 CREATE INDEX 设置,但它从不会被 DROP INDEX 清除。作为替代,VACUUM 会在找到无索引表后清除其 relhasindex。这种安排避免了竞争条件并且提高了并发性。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.