2024 年 9 月 26 日:PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本: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

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)更新。如果表格从未被 vacuumed 或 analyzed,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。这用于跟踪表格是否需要被 vacuumed 以防止事务 ID 绕回,或者允许 pg_xact 被缩小。如果关系不是表格,则为零 (InvalidTransactionId)。

relminmxid xid

在此之前的所有多事务 ID 已被替换为该表中的事务 ID。这用于跟踪表是否需要进行清理,以防止多事务 ID 循环或允许 pg_multixact 收缩。如果该关系不是表,则为零(InvalidMultiXactId)。

relacl aclitem[]

访问权限;有关详细信息,请参阅第 5.8 节

reloptions text[]

访问方法特定选项,作为 keyword=value 字符串

relpartbound pg_node_tree

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


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

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表格 报告文档问题。