pg_class
系统目录表 pg_class
用于记录表以及几乎所有具有列或类似表结构的对象,包括索引(详情请参阅 pg_index
)、序列、视图、物化视图、复合类型和 TOAST 表。在下文中,我们将这些对象统称为“关系”。需要注意的是,并非所有列对所有关系类型都有实际意义。
列名 | 类型 | 引用 | 描述 |
---|---|---|---|
oid | oid | 行标识符 | |
relname | name | 表、索引或视图的名称 | |
relnamespace | oid | pg_namespace.oid | 包含此关系的命名空间(模式)的对象标识符 |
reltype | oid | pg_type.oid | 对应此表行类型的对象标识符(索引为零,因为索引没有 pg_type 条目) |
reloftype | oid | pg_type.oid | 对于类型化表,底层复合类型的对象标识符;其他关系为零 |
relowner | oid | pg_authid.oid | 关系的所有者 |
relam | oid | pg_am.oid | 如果这是表或索引,使用的访问方法(堆、B 树、哈希等) |
relfilenode | bigint | 此关系的磁盘文件名;零表示这是一个“映射”关系,其磁盘文件名由低级状态决定 | |
reltablespace | oid | pg_tablespace.oid | 存储此关系的表空间。如果为零,则表示使用数据库的默认表空间。(如果关系没有磁盘文件,则此列无意义) |
relpages | int4 | 此表的磁盘表示大小(以 BLCKSZ 大小的页为单位)。这是仅用于规划器的估算值。它由 VACUUM 、ANALYZE 以及一些 DDL 命令(如 CREATE INDEX )更新 | |
reltuples | real | 表中的行数。这是仅用于规划器的估算值。它由 VACUUM 、ANALYZE 以及一些 DDL 命令(如 CREATE INDEX )更新 | |
relallvisible | int4 | 表的可见性映射中标记为全可见的页数。这是仅用于规划器的估算值。它由 VACUUM 、ANALYZE 以及一些 DDL 命令(如 CREATE INDEX )更新 | |
reltoastrelid | oid | pg_class.oid | 与该表关联的 TOAST 表的对象标识符,如果没有则为 0 。TOAST 表将大属性“离线”存储在辅助表中 |
relhasindex | boolean | 如果这是表且有(或曾有)索引,则为 true | |
relisshared | boolean | 如果该表在系统的所有数据库中共享,则为 true 。只有某些系统目录表(如 pg_database )是共享的 | |
relpersistence | char | 对象持久化类型:p = 永久表(堆或追加优化)u = 未 记录的临时表t = 临时表 | |
relkind | char | 对象类型:r = 普通表(堆或追加优化)i = 索引S = 序列t = TOAST 表v = 视图m = 物化视图c = 复合类型f = 外部表p = 分区表I = 分区索引u = 未编目临时堆表o = 内部追加优化段文件和 EOFb = 追加仅块目录M = 追加仅可见性映射 | |
relnatts | int2 | 关系中的用户列数(不包括系统列)。必须有这么多对应的条目在 pg_attribute 中。请参阅 pg_attribute.attnum | |
relchecks | int2 | 表上的 CHECK 约束数量;请参阅 pg_constraint 目录表 | |
relhasrules | boolean | 如果表有(或曾有)规则,则为 true ;请参阅 pg_rewrite 目录表 | |
relhastriggers | boolean | 如果表有(或曾有)触发器,则为 true | |
relhassubclass | boolean | 如果表有(或曾有)继承子表,则为 true | |
relrowsecurity | boolean | 如果表启用了行级安全性,则为 true ;请参阅 pg_policy 目录表 | |
relforcerowsecurity | boolean | 如果行级安全性(启用时)也适用于表所有者,则为 true ;请参阅 pg_policy 目录表 | |
relispopulated | boolean | 如果关系已填充数据,则为 true |