pg_class
#目录 pg_class
描述了表和其他具有列或在其他方面与表类似的对象。这包括索引(但也请参阅 pg_index
)、序列(但也请参阅 pg_sequence
)、视图、物化视图、复合类型和 TOAST 表;请参阅 relkind
。下面,当我们指代所有这些类型的对象时,我们称之为“关系”。pg_class
的并非所有列对于所有关系类型都有意义。
表 51.11. pg_class
列
列 类型 描述 |
---|
行标识符 |
表、索引、视图等的名称 |
包含此关系的命名空间的 OID |
与此表的行类型对应的数据类型的 OID(如果有);对于索引、序列和 TOAST 表为零,它们没有 |
对于类型化表,底层复合类型的 OID;对于所有其他关系为零 |
关系的所有者 |
用于访问此表或索引的访问方法。如果关系是序列或没有磁盘文件,则没有意义,但对于分区表,如果设置了此值,则在确定用于在创建命令中未指定时创建的分区的访问方法时,它将优先于 |
此关系的磁盘文件的名称;零表示这是一个“映射”关系,其磁盘文件名由底层状态确定 |
存储此关系所在的表空间。如果为零,则表示数据库的默认表空间。如果关系没有磁盘文件,则没有意义,但对于分区表,当在创建命令中未指定表空间时,将在此表空间中创建分区。 |
此表的磁盘表示形式的大小(以 |
表中活动行的数量。这只是规划器使用的估计值。它由 |
在表的可见性映射中标记为全部可见的页面数。这只是规划器使用的估计值。它由 |
与此表关联的 TOAST 表的 OID,如果没有则为零。TOAST 表在辅助表中“行外”存储大型属性。 |
如果这是一个表,并且它有(或最近有)任何索引,则为 True |
如果此表在群集中的所有数据库之间共享,则为 True。只有某些系统目录(如 |
|
|
关系中的用户列数(不计算系统列)。在 |
表上 |
如果表有(或曾经有)规则,则为 True;请参阅 |
如果表有(或曾经有)触发器,则为 True;请参阅 |
如果表或索引有(或曾经有)任何继承子表或分区,则为 True |
如果表启用了行级安全性,则为 True;请参阅 |
如果行级安全性(启用时)也将应用于表所有者,则为 True;请参阅 |
如果关系已填充(对于除某些物化视图之外的所有关系,这都是正确的),则为 True |
用于为行形成“副本标识”的列: |
如果表或索引是分区,则为 True |
对于在需要表重写的 DDL 操作期间写入的新关系,这包含原始关系的 OID;否则为零。该状态仅在内部可见;对于用户可见的关系,此字段绝不应包含除零以外的任何内容。 |
此表中的所有在此之前的所有事务 ID 都已替换为永久(“冻结”)事务 ID。这用于跟踪表是否需要清理,以防止事务 ID 回绕或允许缩小 |
在此表之前的所有多事务 ID 都已被一个事务 ID 替换。此字段用于跟踪是否需要对表进行清理,以防止多事务 ID 回卷或允许缩小 |
访问权限;详细信息请参阅 第 5.8 节。 |
访问方法特定的选项,以“keyword=value”字符串形式表示。 |
如果表是一个分区(请参阅 |
pg_class
中的几个布尔标志是延迟维护的:如果它们的状态正确,则保证为 true,但当条件不再为真时,可能不会立即重置为 false。例如,relhasindex
由 CREATE INDEX
设置,但永远不会被 DROP INDEX
清除。相反,如果 VACUUM
发现表没有索引,则会清除 relhasindex
。这种安排避免了竞争条件并提高了并发性。
如果您发现文档中的任何内容不正确,与您使用特定功能的经验不符或需要进一步澄清,请使用此表单报告文档问题。