pg_class #
目录 pg_class 描述表以及拥有列或以其他方式
类似于表的其他对象。这包括索引(但另见
pg_index)、
序列(但另见 pg_sequence)、
视图、物化视图、复合类型和 TOAST 表;
见 relkind。在下文中,
当我们指所有这些类型的对象时,我们称之为“关系”。
pg_class 的所有列
并非对所有关系类型都有意义。
Table 52.11. \1 字段列说明
Column Type Description |
|---|
Row identifier |
表、索引、视图等的名称 |
包含此关系的命名空间的 OID |
与该表行类型对应的数据类型的 OID(如果有);
索引、序列和 TOAST 表没有 |
对于有类型的表,是底层复合类型的 OID; 对于所有其他关系则为零 |
关系的拥有者 |
用于访问该表或索引的访问方法。
如果该关系是一个序列或没有磁盘上的文件,则此字段没有意义;
但分区表除外:如果设置了该字段,当创建命令中未指定访问方法时,
它会优先于 |
该关系磁盘上文件的名字;零表示这是一个“映射”关系, 其磁盘文件名由底层状态决定 |
存储该关系的表空间。如果为零,则意味着使用该数据库的默认表空间。 如果该关系没有磁盘上的文件,则此字段没有意义; 但分区表除外:它表示当创建命令中未指定表空间时, 其分区将被创建在其中的那个表空间。 |
该表磁盘上表示形式的大小,以页为单位(页大小为
|
表中存活行的数目。这只是规划器使用的一个估计值。
它由 |
在表的可见性映射中被标记为全可见(all-visible)的页数。
这只是规划器使用的一个估计值。
它由 |
在表的可见性映射中被标记为全冻结(all-frozen)的页数。
这只是用于触发自动清理的一个估计值。它也可以与
|
与该表关联的 TOAST 表的 OID,如果没有则为零。 TOAST 表把大属性“移出主线”存放在一个二级表中。 |
如果这是一个表并且它具有(或最近有过)索引则为真 |
如果为真,则该表在集群中的所有数据库之间共享。
只有某些系统目录(例如
|
|
|
该关系中用户列的个数(系统列不计入)。
在
|
表上 |
如果表具有(或曾经有过)规则则为真;见 |
如果表具有(或曾经有过)触发器则为真;见 |
如果表或索引具有(或曾经有过)任何继承子对象或分区则为真 |
如果表启用了行级安全则为真;见 |
如果为真,则行级安全(在启用时)也将应用于表所有者;见
|
如果为真,则该关系已被填充(除某些物化视图外, 所有关系都是如此) |
用于构成行“副本标识”的列:
|
如果表或索引是一个分区则为真 |
对于在需要重写表的 DDL 操作期间正在写入的新关系, 此字段包含原关系的 OID;否则为零。 该状态只在内部可见;对于用户可见的关系, 此字段除零之外不应包含任何其他内容。 |
在该表中,此值之前的所有事务 ID 都已被一个永久
(“冻结”)事务 ID 替换。它用于跟踪
该表是否需要被清理以防止事务 ID 回卷,
或允许收缩 |
在该表中,此值之前的所有多事务 ID 都已被一个事务 ID 替换。
它用于跟踪该表是否需要被清理以防止多事务 ID 回卷,
或允许收缩 |
访问特权;详见 Section 5.8 |
访问方法特定的选项,以 “keyword=value” 字符串的形式 |
如果表是一个分区(见 |
pg_class 中的一些布尔标志是惰性维护的:
如果那是正确的状态,它们保证为真,
但当条件不再为真时,它们可能不会立即被重置为假。
例如,relhasindex 由
CREATE INDEX 设置,
但从不被
DROP INDEX 清除。
相反,如果 VACUUM
发现表没有索引,它就会清除 relhasindex。
这种安排避免了竞争条件并改善了并发性。