51.11. pg_class
目录pg_class
对表以及具有列或与表相似的其他所有内容进行目录。其中包括索引(另请参见pg_index
),序列(另请参见pg_sequence
),视图,实例化视图,组合类型和 TOAST 表;参见relkind
。下面,当我们指所有这些对象时,我们称之为“关系”。并非所有列对于所有关系类型都有意义。
表 51.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 =分区表 | |
relnatts | int2 | 关系中的用户列数(不计算系统列)。 pg_attribute 中必须有这么多对应的条目。另请参见pg_attribute.attnum 。 | |
relchecks | int2 | 表格上CHECK 个约束的数量;参见pg_constraint目录 | |
relhasoids | bool | 如果我们为关系的每一行生成一个 OID,则为 true | |
relhaspkey | bool | 如果表具有(或曾经具有)主键,则为 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 | 如果表是分区,则为真 | |
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
。这种安排避免了竞争情况并提高了并发性。