On this page
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
。这种安排避免了竞争情况并提高了并发性。