On this page
52.11. pg_class
目录pg_class对表以及具有列或与表相似的其他所有内容进行目录。其中包括索引(另请参见pg_index),序列(另请参见pg_sequence),视图,实例化视图,组合类型和 TOAST 表;参见relkind。下面,当我们指所有这些对象时,我们称之为“关系”。并非所有列对于所有关系类型都有意义。
表 52.11. pg_class列
| Name | Type | References | Description | 
|---|---|---|---|
oid | 
      oid | 
      行标识符(隐藏属性;必须显式选择) | |
relname | 
      name | 
      表的名称,索引,视图等 | |
relnamespace | 
      oid | 
      pg_namespace.oid | 
      包含此关系的名称空间的 OID | 
reltype | 
      oid | 
      pg_type.oid | 
      与此表的行类型相对应的数据类型的 OID(如果有的话)(对于没有pg_type条目的索引为零) | 
     
reloftype | 
      oid | 
      pg_type.oid | 
      对于类型表,基础组合类型的 OID,对于所有其他关系为零 | 
relowner | 
      oid | 
      pg_authid.oid | 
      关系的所有者 | 
relam | 
      oid | 
      pg_am.oid | 
      如果这是一个索引,则使用的访问方法(B 树,哈希等) | 
relfilenode | 
      oid | 
      此关系的磁盘文件名;零表示这是一个“Map”关系,其磁盘文件名由低级状态确定 | |
reltablespace | 
      oid | 
      pg_tablespace.oid | 
      存储此关系的表空间。如果为零,则隐含数据库的默认表空间。 (如果该关系没有磁盘文件,则没有意义.) | 
relpages | 
      int4 | 
      该表的磁盘表示形式的大小,以页为单位(大小为BLCKSZ)。这只是计划者使用的估计值。它由VACUUM,ANALYZE和一些 DDL 命令(如CREATE INDEX)更新。 | 
     |
reltuples | 
      float4 | 
      表中的活动行数。这只是计划者使用的估计值。它由VACUUM,ANALYZE和一些 DDL 命令(例如CREATE INDEX)更新。 | 
     |
relallvisible | 
      int4 | 
      在表格的可见性图中标记为全可见的页面数。这只是计划者使用的估计值。它由VACUUM,ANALYZE和一些 DDL 命令(例如CREATE INDEX)更新。 | 
     |
reltoastrelid | 
      oid | 
      pg_class.oid | 
      与此表关联的 TOAST 表的 OID,如果没有,则为 0. TOAST 表将大型属性“离线”存储在辅助表中。 | 
relhasindex | 
      bool | 
      如果这是一个表并且具有(或最近具有)任何索引,则为 True | |
relisshared | 
      bool | 
      如果此表在集群中的所有数据库之间共享,则为 True。仅共享某些系统目录(例如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目录 | 
     |
relhasoids | 
      bool | 
      如果我们为关系的每一行生成一个 OID,则为 true | |
relhasrules | 
      bool | 
      如果表具有(或曾经具有)规则,则为 true;否则为 true。参见pg_rewrite目录 | |
relhastriggers | 
      bool | 
      如果表具有(或曾经具有)触发器,则为 true;否则为 true。参见pg_trigger目录 | |
relhassubclass | 
      bool | 
      如果表有(或曾经有)任何继承子代,则为真 | |
relrowsecurity | 
      bool | 
      如果表启用了行级安全性,则为 true;否则为 false。参见pg_policy目录 | |
relforcerowsecurity | 
      bool | 
      如果行级安全性(启用时)也适用于表所有者,则为 true;否则为 true。参见pg_policy目录 | |
relispopulated | 
      bool | 
      如果关系已填充,则为 true(对于除某些实例化视图以外的所有关系,都为 true) | |
relreplident | 
      char | 
      用于为行形成“副本身份”的列:d =默认值(主键,如果有的话),n =无,f =所有列i =设置了indisreplident的索引 | 
     |
relispartition | 
      bool | 
      如果表或索引是分区,则为真 | |
relrewrite | 
      oid | 
      pg_class.oid | 
      对于在需要表重写的 DDL 操作期间写入的新关系,此关系包含原始关系的 OID。否则为 0.该状态仅在内部可见;否则为 0.对于用户可见的关系,该字段不得包含 0 以外的任何内容。 | 
relfrozenxid | 
      xid | 
      此表之前的所有事务 ID 已被永久(“冻结”)事务 ID 取代。这用于跟踪表是否需要清理以防止事务 ID 环绕或允许pg_xact收缩。如果该关系不是表,则为零(InvalidTransactionId)。 | 
     |
relminmxid | 
      xid | 
      此表之前的所有多重 ID 已被事务 ID 取代。这用于跟踪是否需要清理表以防止多重 ID 环绕或使pg_multixact收缩。如果该关系不是表,则为零(InvalidMultiXactId)。 | 
     |
relacl | 
      aclitem[] | 
      访问权限;有关详情,请参见GRANT和REVOKE | |
reloptions | 
      text[] | 
      访问方法特定的选项,如“ keyword = value”字符串 | |
relpartbound | 
      pg_node_tree | 
      如果 table 是一个分区(请参见relispartition),则绑定该分区的内部表示 | 
     
pg_class中的几个布尔标志被延迟维护:如果这是正确的状态,则保证它们为 true,但当条件不再为 true 时,可能不会立即将其重置为 false。例如,relhasindex由CREATE INDEX设置,但永远不会由DROP INDEX清除。相反,如果VACUUM发现表没有索引,则清除relhasindex。这种安排避免了竞争情况并提高了并发性。