pg_class
目录pg_class描述了表以及其他具有列或在其他方面与表类似的对象。这包括索引(但请参见pg_index)、序列(但请参见pg_sequence)、视图、物化视图、复合类型和TOAST表;请参见relkind。在下面,当我们指的是所有这些类型的对象时,我们称之为“关系(relations)”。并非所有pg_class的列对所有关系类型都有意义。
英文手册覆盖始于 PostgreSQL 7.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- kind
- catalog
- lang
- en
- measured attributes
- true
- metadata release
- 18.6
- runtime verified
- false
- source
- english-manual
版本定义 PG 18
目录pg_class描述了表以及其他具有列或在其他方面与表类似的对象。这包括索引(但请参见pg_index)、序列(但请参见pg_sequence)、视图、物化视图、复合类型和TOAST表;请参见relkind。在下面,当我们指的是所有这些类型的对象时,我们称之为“关系(relations)”。并非所有pg_class的列对所有关系类型都有意义。
目录列
| 列 | 类型 | 可空性 | 描述 |
|---|---|---|---|
| oid | oid | 非空 | 行标识符 |
| relname | name | 非空 | 表、索引、视图等的名字 |
| relnamespace | oid | 非空 | 包含该关系的名字空间的OID |
| reltype | oid | 非空 | 与此表的行类型对应的数据类型的 OID(如有);索引、序列和 TOAST 表没有pg_type项,此值为零 |
| reloftype | oid | 非空 | 对于类型化表,为底层复合类型的 OID;对于其他所有关系则为零 |
| relowner | oid | 非空 | 关系的拥有者 |
| relam | oid | 非空 | 用于访问该表或索引的访问方法。如果该关系是序列或者没有磁盘文件,则此字段无意义;分区表除外,对于分区表,如果设置了该字段,则在创建命令未指定时,它优先于 default_table_access_method 来决定用于创建分区的访问方法。 |
| relfilenode | oid | 非空 | 该关系的磁盘文件名;零表示这是一个“映射”关系,其磁盘文件名取决于底层状态 |
| reltablespace | oid | 非空 | 存储此关系的表空间。如果为零,则表示使用数据库的默认表空间。对于没有磁盘文件的关系,此值没有意义,但分区表除外:若创建命令未指定表空间,将在此表空间中创建分区。 |
| relpages | int4 | 非空 | 该表磁盘表示的尺寸,以页面计(页面尺寸为BLCKSZ)。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。 |
| reltuples | float4 | 非空 | 表中的存活行数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令(如CREATE INDEX)所更新。如果该表从未被清理或分析,包含-1的reltuples表示行数是未知的。 |
| relallvisible | int4 | 非空 | 在表的可见性映射中被标记为全可见的页数。这只是一个由规划器使用的估计值。它被VACUUM、ANALYZE以及一些DDL命令,如CREATE INDEX所更新。 |
| relallfrozen | int4 | 非空 | 表的可见性映射中被标记为全冻结的页数。这只是一个用于触发自动清理的估计值。它也可以与 relallvisible 一起,用于安排手工清理以及调优清理冻结行为。它会被 VACUUM、ANALYZE 以及一些 DDL 命令(例如 CREATE INDEX)更新。 |
| reltoastrelid | 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 | 非空 | 对于在需要重写表的 DDL 操作期间写入的新关系,此字段包含原关系的 OID;其他情况下为零。该状态仅在内部可见;对于用户可见的关系,此字段应始终为零。 |
| relfrozenxid | xid | 非空 | 在此之前的所有事务ID在表中已经被替换为一个永久的(“冻结的”)事务ID。这用于跟踪表是否需要被清理,以便阻止事务ID回卷或者允许pg_xact被收缩。如果该关系不是一个表则为0(InvalidTransactionId)。 |
| relminmxid | xid | 非空 | 在此之前的所有多事务ID在表中已经被替换为一个事务ID。这被用于跟踪表是否需要被清理,以阻止多事务ID回卷或者允许pg_multixact被收缩。如果关系不是一个表则为0(InvalidMultiXactId)。 |
| relacl | aclitem[] | 可空 | 访问权限,更多信息参见第 5.8 节 |
| reloptions | text[] | 可空 | 访问方法相关的选项,以“keyword=value”字符串形式 |
| relpartbound | pg_node_tree | 可空 | 如果表是一个分区(见relispartition),则为分区边界的内部表示 |
比较版本
完整来源事实
runtime columns
oid, relname, relnamespace, reltype, reloftype, relowner, relam, relfilenode, reltablespace, relpages, reltuples, relallvisible, relallfrozen, reltoastrelid, relhasindex, relisshared, relpersistence, relkind, relnatts, relchecks, relhasrules, relhastriggers, relhassubclass, relrowsecurity, relforcerowsecurity, relispopulated, relreplident, relispartition, relrewrite, relfrozenxid, relminmxid, relacl, reloptions, relpartbound
来源引用
定义来源
center · PostgreSQL 18 · english-manuals:ea8872f33d2fe5c3e602b22cd56700b9d92f1a106fd1b4da3ff8e1290dd6b8cc
正文语言: zh-Hans · 2026-09-27@419045e