系统表参考
本文档列出 Halo 数据库的系统目录表(pg_catalog 模式)与系统视图,按字母顺序排列, 提供每个对象的类型、用途说明及其列的详细信息。
pg_aggregate
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储聚合函数的信息,每行扩展自 pg_proc 中对应的一条记录,记录聚合的转移函数、终值函数、移动聚合模式等元数据。
| 列名 | 类型 | 描述 |
|---|---|---|
| aggfnoid | regproc | 聚合函数的 pg_proc OID;引用 pg_proc.oid |
| aggkind | char | 聚合类型:n 普通聚合,o 有序集聚合,h 假想集聚合 |
| aggnumdirectargs | int2 | 有序集/假想集聚合的直接(非聚合)参数个数,可变数组按一个参数计;等于 pronargs 时聚合必须为可变参数。普通聚合恒为 0 |
| aggtransfn | regproc | 转移(状态转移)函数;引用 pg_proc.oid |
| aggfinalfn | regproc | 终值函数(无则为零);引用 pg_proc.oid |
| aggcombinefn | regproc | 合并函数(无则为零);引用 pg_proc.oid |
| aggserialfn | regproc | 序列化函数(无则为零);引用 pg_proc.oid |
| aggdeserialfn | regproc | 反序列化函数(无则为零);引用 pg_proc.oid |
| aggmtransfn | regproc | 移动聚合模式的前向转移函数(无则为零);引用 pg_proc.oid |
| aggminvtransfn | regproc | 移动聚合模式的反向转移函数(无则为零);引用 pg_proc.oid |
| aggmfinalfn | regproc | 移动聚合模式的终值函数(无则为零);引用 pg_proc.oid |
| aggfinalextra | bool | 是否向 aggfinalfn 传递额外的哑参数 |
| aggmfinalextra | bool | 是否向 aggmfinalfn 传递额外的哑参数 |
| aggfinalmodify | char | aggfinalfn 是否修改转移状态:r 只读,s 调用后不能再应用 aggtransfn,w 写入 |
| aggmfinalmodify | char | 同 aggfinalmodify,但针对 aggmfinalfn |
| aggsortop | oid | 关联的排序操作符(无则为零);引用 pg_operator.oid |
| aggtranstype | oid | 聚合内部转移(状态)数据的数据类型;引用 pg_type.oid |
| aggtransspace | int4 | 转移状态数据的近似平均字节数,0 表示使用默认估计 |
| aggmtranstype | oid | 移动聚合模式的内部转移状态数据类型(无则为零);引用 pg_type.oid |
| aggmtransspace | int4 | 移动聚合模式转移状态数据的近似平均字节数,0 表示使用默认估计 |
| agginitval | text | 转移状态的初始值(外部字符串表示形式);为 null 时状态初值为 null |
| aggminitval | text | 移动聚合模式转移状态的初始值(外部字符串表示形式);为 null 时状态初值为 null |
备注: 该表无 oid 列;主键由 aggfnoid 隐含标识,是 pg_proc 条目的扩展信息。
pg_am
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储关系访问方法(access method)的信息,目前仅表(含物化视图)和索引有访问方法。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| amname | name | 访问方法名称 |
| amhandler | regproc | 负责提供该访问方法详细信息的处理器函数的 OID;引用 pg_proc.oid |
| amtype | char | 访问方法类型:t 表(含物化视图),i 索引 |
备注: 自 PostgreSQL 9.6 起,原索引访问方法属性列被移除,需通过 pg_index_column_has_property() 等函数查询。
pg_amop
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储与访问方法操作符族相关联的操作符信息,每个操作符族成员(搜索或排序操作符)对应一行。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| amopfamily | oid | 该项所属的操作符族;引用 pg_opfamily.oid |
| amoplefttype | oid | 操作符的左输入数据类型;引用 pg_type.oid |
| amoprighttype | oid | 操作符的右输入数据类型;引用 pg_type.oid |
| amopstrategy | int2 | 操作符的策略号 |
| amoppurpose | char | 操作符用途:s 搜索,o 排序 |
| amopopr | oid | 操作符的 OID;引用 pg_operator.oid |
| amopmethod | oid | 该操作符族所属的索引访问方法;引用 pg_am.oid |
| amopsortfamily | oid | 排序操作符所依据的 B-tree 操作符族;搜索操作符为 0;引用 pg_opfamily.oid |
pg_amproc
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储与访问方法操作符族相关联的支持函数(support function)信息,每个支持函数对应一行。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| amprocfamily | oid | 该项所属的操作符族;引用 pg_opfamily.oid |
| amproclefttype | oid | 关联操作符的左输入数据类型;引用 pg_type.oid |
| amprocrighttype | oid | 关联操作符的右输入数据类型;引用 pg_type.oid |
| amprocnum | int2 | 支持函数编号 |
| amproc | regproc | 该支持函数的 OID;引用 pg_proc.oid |
pg_attrdef
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储列的默认值表达式;只有显式设置了默认值的列才会在此表中存在记录,列的其它信息存于 pg_attribute。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| adrelid | oid | 该列所属的表;引用 pg_class.oid |
| adnum | int2 | 列编号;引用 pg_attribute.attnum |
| adbin | pg_node_tree | 列默认值的 nodeToString() 内部表示;可用 pg_get_expr(adbin, adrelid) 转换为 SQL 表达式 |
pg_attribute
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表(及索引、视图、序列、物化视图、外部表等关系)每一列的详细信息,每个列(含已删除列与系统列)恰好对应一行。
| 列名 | 类型 | 描述 |
|---|---|---|
| attrelid | oid | 该列所属的表;引用 pg_class.oid |
| attname | name | 列名 |
| atttypid | oid | 该列的数据类型(已删除列为零);引用 pg_type.oid |
| attlen | int2 | 该列类型的 pg_type.typlen 副本 |
| attnum | int2 | 列编号;普通列从 1 开始,系统列(如 ctid)使用负数 |
| attcacheoff | int4 | 存储中恒为 -1;加载到内存的行描述符中可能被更新以缓存该属性在行内的偏移 |
| atttypmod | int4 | 建表时记录的类型相关数据(如 varchar 最大长度),传递给类型输入和长度强制函数;不需要时通常为 -1 |
| attndims | int2 | 若为数组类型,维度数;否则为 0(当前不强制维度数,非零即视为数组) |
| attbyval | bool | 该列类型的 pg_type.typbyval 副本 |
| attalign | char | 该列类型的 pg_type.typalign 副本 |
| attstorage | char | 通常为该列类型的 pg_type.typstorage 副本;对 TOAST 可用类型,可在建列后调整存储策略 |
| attcompression | char | 当前列的压缩方法:\0 使用默认,p pglz,l LZ4;当 attstorage 不允许压缩时忽略 |
| attnotnull | bool | 表示该列有 NOT NULL 约束 |
| atthasdef | bool | 该列有默认表达式或生成表达式(对应 pg_attrdef 中的记录;结合 attgenerated 判断是默认值还是生成表达式) |
| atthasmissing | bool | 该列在行中完全缺失时所用的占位值存在(见 attmissingval),用于带非易失 DEFAULT 新增列的旧行 |
| attidentity | char | 零字节表示非身份列;否则 a 总是生成,d 默认生成 |
| attgenerated | char | 零字节表示非生成列;否则 s 存储(将来可能新增其他值) |
| attisdropped | bool | 该列已删除并失效;仍物理存在于表中,但解析器忽略,无法通过 SQL 访问 |
| attislocal | bool | 该列在当前关系中本地定义(注意:可同时本地定义并被继承) |
| attinhcount | int2 | 该列的直接祖先数;非零时不能删除或重命名 |
| attstattarget | int2 | 控制 ANALYZE 为该列收集统计信息的详细程度;0 不收集,负值用系统默认,正值含义与类型相关 |
| attcollation | oid | 该列定义的排序规则;不可排序类型为 0;引用 pg_collation.oid |
| attacl | aclitem[] | 列级访问权限(仅当专门授予时存在) |
| attoptions | text[] | 属性级选项,形如 “keyword=value” 字符串 |
| attfdwoptions | text[] | 属性级外部数据包装器(FDW)选项,形如 “keyword=value” 字符串 |
| attmissingval | anyarray | 单元素数组,存放行缺失该列时使用的值(用于带非易失 DEFAULT 新增列的旧行);仅当 atthasmissing 为真时使用,否则为 null |
备注: 该表无 oid 列;按 (attrelid, attnum) 标识列,每个关系的每一列(含已删除列与系统列)都恰好一行。
pg_auth_members
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:显示角色之间的成员关系(角色包含哪些角色作为成员),允许任意无环关系。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| roleid | oid | 拥有成员的角色 ID;引用 pg_authid.oid |
| member | oid | 作为 roleid 成员的角色 ID;引用 pg_authid.oid |
| grantor | oid | 授予该成员关系的角色 ID;引用 pg_authid.oid |
| admin_option | bool | 为真时 member 可将 roleid 的成员资格授予他人 |
| inherit_option | bool | 为真时该成员自动继承所授予角色的权限 |
| set_option | bool | 为真时该成员可以 SET ROLE 切换到所授予的角色 |
备注: 因用户身份在整个集群内有效,该表为集群级共享表(cluster-wide),每个集群仅一份。
pg_authid
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库授权标识符(角色)信息;角色涵盖了“用户”与“组”的概念,可登录角色即用户。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| rolname | name | 角色名称 |
| rolsuper | bool | 该角色拥有超级用户权限 |
| rolinherit | bool | 该角色自动继承其所属角色的权限 |
| rolcreaterole | bool | 该角色可以创建更多角色 |
| rolcreatedb | bool | 该角色可以创建数据库 |
| rolcanlogin | bool | 该角色可以登录(可作为会话初始授权标识符) |
| rolreplication | bool | 该角色为复制角色,可发起复制连接并创建/删除复制槽 |
| rolbypassrls | bool | 该角色绕过所有行级安全(RLS)策略 |
| rolconnlimit | int4 | 可登录角色的最大并发连接数;-1 表示无限制 |
| rolpassword | text | 加密后的口令;无则为 null。格式取决于所用的加密方式 |
| rolvaliduntil | timestamptz | 口令过期时间(仅用于口令认证);无过期则为 null |
备注: 因包含口令,该表不可公开读取;公开视图 pg_roles 会将口令字段置空。集群级共享表(cluster-wide),每个集群仅一份。
pg_cast
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据类型转换路径(内置与用户定义);只记录无法从通用规则推导出的转换(如域与其基类型、I/O 自动转换不在此表)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| castsource | oid | 源数据类型的 OID;引用 pg_type.oid |
| casttarget | oid | 目标数据类型的 OID;引用 pg_type.oid |
| castfunc | oid | 执行此转换所用函数的 OID;若转换方法不需要函数则为 0;引用 pg_proc.oid |
| castcontext | char | 转换可调用的上下文:e 仅显式转换(CAST/::),a 赋值时隐式(也可显式),i 表达式中隐式(及其它情形) |
| castmethod | char | 转换方式:f 使用 castfunc 指定的函数,i 使用输入/输出函数,b 类型间二进制可强制转换无需转换 |
pg_class
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述表及类似表的对象(索引、视图、序列、物化视图、复合类型、外部表、TOAST 表等),是几乎所有关系型对象的核心目录。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| relname | name | 表、索引、视图等对象的名称 |
| relnamespace | oid | 包含该关系的命名空间 OID;引用 pg_namespace.oid |
| reltype | oid | 与该表行类型对应的数据类型 OID(无则为零,如索引、序列、TOAST 表);引用 pg_type.oid |
| reloftype | oid | 对类型化表(typed table),底层复合类型的 OID;其它关系为 0;引用 pg_type.oid |
| relowner | oid | 该关系的属主;引用 pg_authid.oid |
| relam | oid | 表或索引所用的访问方法(heap、B-tree、hash 等);否则为 0;引用 pg_am.oid |
| relfilenode | oid | 该关系在磁盘上的文件名节点;0 表示“映射”关系,磁盘文件名由低层状态决定 |
| reltablespace | oid | 该关系所在的表空间;0 表示数据库默认表空间;引用 pg_tablespace.oid |
| relpages | int4 | 该关系在磁盘上占用的大小(以 BLCKSZ 页为单位),仅为优化器估计值,由 VACUUM/ANALYZE/部分 DDL 更新 |
| reltuples | float4 | 表中存活行数的估计值,由 VACUUM/ANALYZE/部分 DDL 更新;从未清理或分析则为 -1 表示未知 |
| relallvisible | int4 | 可见性映射中标记为 all-visible 的页数估计值,由 VACUUM/ANALYZE/部分 DDL 更新 |
| reltoastrelid | oid | 与该表关联的 TOAST 表 OID(无则为 0);引用 pg_class.oid |
| relhasindex | bool | 为真表示该表已(或最近曾有)索引 |
| relisshared | bool | 为真表示该表在整个集群的所有数据库间共享 |
| relpersistence | char | 持久性:p 永久表/序列,u unlogged,t 临时 |
| relkind | char | 关系类型:r 普通表,i 索引,S 序列,t TOAST 表,v 视图,m 物化视图,c 复合类型,f 外部表,p 分区表,I 分区索引 |
| relnatts | int2 | 关系中用户列的数目(不含系统列),须与 pg_attribute 中对应条目数一致 |
| relchecks | int2 | 表上 CHECK 约束的数目(见 pg_constraint) |
| relhasrules | bool | 为真表示该表已(或曾有)规则(见 pg_rewrite) |
| relhastriggers | bool | 为真表示该表已(或曾有)触发器(见 pg_trigger) |
| relhassubclass | bool | 为真表示该表或索引已(或曾有)继承子表/分区 |
| relrowsecurity | bool | 为真表示该表启用了行级安全(见 pg_policy) |
| relforcerowsecurity | bool | 为真表示行级安全(启用时)也作用于表属主(见 pg_policy) |
| relispopulated | bool | 为真表示该关系已填充数据(除部分物化视图外均为真) |
| relreplident | char | 行的“副本标识”所用列:d 默认(若有主键),n 无,f 所有列,i 设了 indisreplident 的索引 |
| relispartition | bool | 为真表示该表或索引是一个分区 |
| relrewrite | oid | DDL 期间需要重写表时新建关系的原始关系 OID;否则为 0;引用 pg_class.oid |
| relfrozenxid | xid | 此事务 ID 之前的所有事务 ID 已在该表中被替换为永久(冻结)ID;非表关系为 0(InvalidTransactionId) |
| relminmxid | xid | 此 multixact ID 之前的所有 multixact ID 已在该表中被替换;非表关系为 0(InvalidMultiXactId) |
| relacl | aclitem[] | 访问权限列表 |
| reloptions | text[] | 访问方法特定的选项,形如 “keyword=value” 字符串 |
| relpartbound | pg_node_tree | 若该表为分区(见 relispartition),存放分区边界的内部表示 |
pg_collation
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述可用的排序规则(collation),本质上是 SQL 名称到操作系统 locale 类别的映射。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| collname | name | 排序规则名称(在同一命名空间和编码内唯一) |
| collnamespace | oid | 包含该排序规则的命名空间 OID;引用 pg_namespace.oid |
| collowner | oid | 该排序规则的属主;引用 pg_authid.oid |
| collprovider | char | 提供方:d 数据库默认,c libc,i ICU |
| collisdeterministic | bool | 是否为确定性排序规则 |
| collencoding | int4 | 该排序规则适用的编码;-1 表示适用于任意编码 |
| collcollate | text | 该排序规则对象的 LC_COLLATE |
| collctype | text | 该排序规则对象的 LC_CTYPE |
| colliculocale | text | 该排序规则对象的 ICU locale ID |
| collicurules | text | 该排序规则对象的 ICU 排序规则 |
| collversion | text | 排序规则提供方特定的版本,创建时记录并在使用时校验,以发现可能导致数据损坏的定义变更 |
备注: 唯一键为 (collname, collencoding, collnamespace);initdb 在集群初始化时为系统所有可用 locale 填入条目,故需容纳所有可能的编码。
pg_constraint
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表上的 CHECK、主键、唯一、外键、排他约束,以及域上的 CHECK 约束。列级约束不会被特殊处理,通常会等价转换为表级约束记录。注意:NOT NULL 约束不在本表中,而由 pg_attribute.attnotnull 表示。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| conname | name | 约束名(不一定唯一) |
| connamespace | oid | 包含此约束的命名空间的 OID;引用 pg_namespace.oid |
| contype | char | 约束类型:c = 检查约束,f = 外键,p = 主键,u = 唯一约束,t = 约束触发器,x = 排他约束 |
| condeferrable | bool | 约束是否可延迟(deferrable) |
| condeferred | bool | 约束默认是否延迟到事务末尾检查 |
| convalidated | bool | 约束是否已验证;目前只有外键和 CHECK 约束可能为 false |
| conrelid | oid | 此约束所在的表;非表约束则为 0;引用 pg_class.oid |
| contypid | oid | 此约束所在的域;非域约束则为 0;引用 pg_type.oid |
| conindid | oid | 支持此约束的索引(唯一、主键、外键或排他约束时);否则为 0;引用 pg_class.oid |
| conparentid | oid | 若为分区上的约束,指对应父分区表的约束;否则为 0;引用 pg_constraint.oid |
| confrelid | oid | 外键引用的表;非外键则为 0;引用 pg_class.oid |
| confupdtype | char | 外键更新动作代码:a = NO ACTION,r = RESTRICT,c = CASCADE,n = SET NULL,d = SET DEFAULT |
| confdeltype | char | 外键删除动作代码:a = NO ACTION,r = RESTRICT,c = CASCADE,n = SET NULL,d = SET DEFAULT |
| confmatchtype | char | 外键匹配类型:f = FULL,p = PARTIAL,s = SIMPLE |
| conislocal | bool | 此约束是为此关系本地定义的(注意:约束可以同时是本地定义和继承的) |
| coninhcount | int2 | 此约束直接继承祖先的数量;非 0 时不能直接删除或重命名 |
| connoinherit | bool | 此约束为本地定义且不可继承 |
| conkey | int2[] | 若为表约束(含外键,不含约束触发器),受约束列的 attnum 列表;引用 pg_attribute.attnum |
| confkey | int2[] | 若为外键,被引用列的 attnum 列表;引用 pg_attribute.attnum |
| conpfeqop | oid[] | 若为外键,PK = FK 比较时使用的相等操作符列表;引用 pg_operator.oid |
| conppeqop | oid[] | 若为外键,PK = PK 比较时使用的相等操作符列表;引用 pg_operator.oid |
| conffeqop | oid[] | 若为外键,FK = FK 比较时使用的相等操作符列表;引用 pg_operator.oid |
| confdelsetcols | int2[] | 若为带 SET NULL/SET DEFAULT 删除动作的外键,将被更新的列;为 NULL 表示更新所有引用列;引用 pg_attribute.attnum |
| conexclop | oid[] | 若为排他约束,每列的排他操作符列表;引用 pg_operator.oid |
| conbin | pg_node_tree | 若为检查约束,表达式的内部表示(建议用 pg_get_constraintdef() 提取定义) |
备注: oid 为行标识符。约束名在命名空间内不保证唯一。
pg_conversion
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述编码转换函数(详见 CREATE CONVERSION)
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| conname | name | 转换名(在命名空间内唯一) |
| connamespace | oid | 包含此转换的命名空间的 OID;引用 pg_namespace.oid |
| conowner | oid | 转换的属主;引用 pg_authid.oid |
| conforencoding | int4 | 源编码 ID(可用 pg_encoding_to_char() 转为编码名) |
| contoencoding | int4 | 目标编码 ID(可用 pg_encoding_to_char() 转为编码名) |
| conproc | regproc | 转换函数;引用 pg_proc.oid |
| condefault | bool | 是否为默认转换 |
备注: oid 为行标识符。
pg_database
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储集群中可用数据库的信息(由 CREATE DATABASE 创建)
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| datname | name | 数据库名 |
| datdba | oid | 数据库属主(通常为创建者);引用 pg_authid.oid |
| encoding | int4 | 数据库的字符编码(可用 pg_encoding_to_char() 转为编码名) |
| datlocprovider | char | 本地化提供程序:c = libc,i = icu |
| datistemplate | bool | 为 true 时任何有 CREATEDB 权限的用户都可克隆此库;为 false 时仅超级用户或属主可克隆 |
| datallowconn | bool | 为 false 时无人可连接此库(用于保护 template0 免被修改) |
| datconnlimit | int4 | 允许到此库的最大并发连接数;-1 表示无限制,-2 表示数据库无效 |
| datfrozenxid | xid | 此数据库中所有更早的事务 ID 均已被替换为永久("frozen")事务 ID;用于跟踪是否需要 VACUUM 以防止事务 ID 回绕;等于各表 pg_class.relfrozenxid 的最小值 |
| datminmxid | xid | 此数据库中所有更早的多事务 ID 均已被替换为事务 ID;用于跟踪是否需要 VACUUM 以防止多事务 ID 回绕;等于各表 pg_class.relminmxid 的最小值 |
| dattablespace | oid | 数据库的默认表空间;引用 pg_tablespace.oid |
| datcollate | text | 此数据库的 LC_COLLATE |
| datctype | text | 此数据库的 LC_CTYPE |
| daticulocale | text | 此数据库的 ICU 区域设置 ID |
| daticurules | text | 此数据库的 ICU 排序规则 |
| datcollversion | text | 排序规则的提供程序特定版本;创建时记录,使用时检查以检测可能导致数据损坏的排序规则定义变化 |
| datacl | aclitem[] | 访问权限 |
备注: oid 为行标识符。与多数系统目录不同,pg_database 在整个集群中共享:每个集群只有一份,而非每个数据库一份。
pg_db_role_setting
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录为每个角色与数据库组合设置的运行时配置变量默认值
| 列名 | 类型 | 描述 |
|---|---|---|
| setdatabase | oid | 此设置适用的数据库 OID,若非数据库特定则为 0;引用 pg_database.oid |
| setrole | oid | 此设置适用的角色 OID,若非角色特定则为 0;引用 pg_authid.oid |
| setconfig | text[] | 运行时配置变量的默认值 |
备注: 与多数系统目录不同,pg_db_role_setting 在整个集群中共享:每个集群只有一份,而非每个数据库一份。
pg_default_acl
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储新建对象时要赋予的初始权限
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| defaclrole | oid | 此条目关联的角色 OID;引用 pg_authid.oid |
| defaclnamespace | oid | 此条目关联的命名空间 OID,无则为 0;引用 pg_namespace.oid |
| defaclobjtype | char | 此条目适用的对象类型:r = 关系(表、视图),S = 序列,f = 函数,T = 类型,n = 模式 |
| defaclacl | aclitem[] | 此类型对象在创建时应具有的访问权限 |
备注: oid 为行标识符。defaclnamespace 为 0 的"全局"条目会覆盖该对象类型的硬编码默认权限;"按模式"条目则在全局/硬编码默认权限之外追加权限。该目录仅在对象创建时被参考。
pg_depend
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录数据库对象之间的依赖关系,使 DROP 命令能确定 CASCADE 要删除哪些对象或 RESTRICT 要阻止哪些删除
| 列名 | 类型 | 描述 |
|---|---|---|
| classid | oid | 依赖对象所在的系统目录 OID;引用 pg_class.oid |
| objid | oid | 具体依赖对象的 OID(引用任意 OID 列) |
| objsubid | int4 | 对于表列,为列号(objid/classid 指代表本身);其他对象类型为 0 |
| refclassid | oid | 被引用对象所在的系统目录 OID;引用 pg_class.oid |
| refobjid | oid | 具体被引用对象的 OID(引用任意 OID 列) |
| refobjsubid | int4 | 对于表列,为列号(refobjid/refclassid 指代表本身);其他对象类型为 0 |
| deptype | char | 定义此依赖关系具体语义的代码;见正文 |
备注: deptype 取值:n = NORMAL(普通)、a = AUTO(自动)、i = INTERNAL(内部)、P = PARTITION_PRI(分区主)、S = PARTITION_SEC(分区次)、e = EXTENSION(扩展成员)、x = AUTO_EXTENSION(自动扩展)。涉及集群共享对象的依赖记录在 pg_shdepend 中。
pg_description
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储每个数据库对象的可选描述(注释),由 COMMENT 命令操作、psql \d 命令查看
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 此描述所属对象的 OID(引用任意 OID 列) |
| classoid | oid | 此对象所在的系统目录 OID;引用 pg_class.oid |
| objsubid | int4 | 对于表列注释,为列号(objoid/classoid 指代表本身);其他对象类型为 0 |
| description | text | 作为此对象描述的任意文本 |
备注: 涉及集群共享对象描述的对应目录为 pg_shdescription。
pg_enum
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储每个枚举类型的枚举值及其文本标签;枚举值的内部表示实际上是其对应行的 OID
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| enumtypid | oid | 拥有此枚举值的 pg_type 条目 OID;引用 pg_type.oid |
| enumsortorder | float4 | 此枚举值在其枚举类型内的排序位置 |
| enumlabel | name | 此枚举值的文本标签 |
备注: oid 为行标识符。pg_enum 行的 OID 遵循特殊规则:偶数 OID 保证与其枚举类型的排序顺序一致(同一枚举类型中较小偶数 OID 的 enumsortorder 较小),以便比较例程避免目录查找。新增成员可能获得负数或小数的 enumsortorder,仅需在枚举类型内正确排序且唯一。
pg_event_trigger
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储事件触发器的信息
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| evtname | name | 触发器名(必须唯一) |
| evtevent | name | 标识此触发器触发的事件 |
| evtowner | oid | 事件触发器的属主;引用 pg_authid.oid |
| evtfoid | oid | 被调用的函数;引用 pg_proc.oid |
| evtenabled | char | 控制在哪些 session_replication_role 模式下触发:O = "origin" 和 "local" 模式触发,D = 禁用,R = "replica" 模式触发,A = 始终触发 |
| evttags | text[] | 此触发器触发的命令标签列表;为 NULL 表示不基于命令标签限制触发 |
备注: oid 为行标识符。
pg_extension
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储已安装扩展的信息(详见附录D 扩展模块)
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| extname | name | 扩展名 |
| extowner | oid | 扩展的属主;引用 pg_authid.oid |
| extnamespace | oid | 包含扩展导出对象的模式;引用 pg_namespace.oid |
| extrelocatable | bool | 为 true 表示扩展可迁移到其他模式 |
| extversion | text | 扩展的版本名 |
| extconfig | oid[] | 扩展配置表的 regclass OID 数组;无则为 NULL;引用 pg_class.oid |
| extcondition | text[] | 扩展配置表的 WHERE 子句过滤条件数组;无则为 NULL |
备注: oid 为行标识符。与多数含 "namespace" 列的目录不同,extnamespace 并不表示扩展属于该模式(扩展名从不带模式限定),而是指示包含扩展大部分或全部对象的模式;当 extrelocatable 为 true 时,该模式必须包含扩展所有可加模式限定的对象。
pg_foreign_data_wrapper
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部数据包装器(FDW)的定义,FDW 是访问驻留在外部服务器上外部数据的机制
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| fdwname | name | 外部数据包装器名 |
| fdwowner | oid | 外部数据包装器的属主;引用 pg_authid.oid |
| fdwhandler | oid | 负责为 FDW 提供执行例程的处理函数;无则为 0;引用 pg_proc.oid |
| fdwvalidator | oid | 负责校验 FDW 以及使用它的外部服务器和用户映射选项有效性的验证函数;无则为 0;引用 pg_proc.oid |
| fdwacl | aclitem[] | 访问权限 |
| fdwoptions | text[] | FDW 特定选项,以 "keyword=value" 字符串形式给出 |
备注: oid 为行标识符。
pg_foreign_server
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部服务器(foreign server)定义,一个外部服务器描述外部数据源(如远程服务器),通过外部数据包装器(FDW)访问。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| srvname | name | 外部服务器名称 |
| srvowner | oid | 外部服务器的属主;引用 pg_authid.oid |
| srvfdw | oid | 该外部服务器所使用的外部数据包装器的 OID;引用 pg_foreign_data_wrapper.oid |
| srvtype | text | 服务器类型(可选) |
| srvversion | text | 服务器版本(可选) |
| srvacl | aclitem[] | 访问权限(ACL) |
| srvoptions | text[] | 外部服务器特有选项,以 "keyword=value" 字符串形式存储 |
pg_foreign_table
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部表(foreign table)的附加信息;外部表主体由 pg_class 条目表示,本表只保存专属于外部表的关系信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| ftrelid | oid | 该外部表在 pg_class 中条目的 OID;引用 pg_class.oid |
| ftserver | oid | 该外部表所关联的外部服务器的 OID;引用 pg_foreign_server.oid |
| ftoptions | text[] | 外部表选项,以 "keyword=value" 字符串形式存储 |
pg_index
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储索引的部分信息(其余信息主要保存在 pg_class 中)。
| 列名 | 类型 | 描述 |
|---|---|---|
| indexrelid | oid | 该索引在 pg_class 中条目的 OID;引用 pg_class.oid |
| indrelid | oid | 该索引所属表在 pg_class 中条目的 OID;引用 pg_class.oid |
| indnatts | int2 | 索引列总数(含键列与 INCLUDED 列,与 pg_class.relnatts 重复) |
| indnkeyatts | int2 | 索引的键列数,不含仅存储而不参与索引语义的 INCLUDED 列 |
| indisunique | bool | 为 true 表示这是一个唯一索引 |
| indnullsnotdistinct | bool | 仅用于唯一索引;为 true 时将 NULL 视为相等(每列仅允许一个 NULL),为 false 时(默认)NULL 视为互异 |
| indisprimary | bool | 为 true 表示该索引代表表的主键(此时 indisunique 必为 true) |
| indisexclusion | bool | 为 true 表示该索引支持一个排他约束(exclusion constraint) |
| indimmediate | bool | 为 true 表示唯一性检查在插入时立即生效(indisunique 为 false 时无意义) |
| indisclustered | bool | 为 true 表示表最近一次以此索引进行了 CLUSTER |
| indisvalid | bool | 为 true 表示该索引用于查询是有效的;为 false 表示索引可能未完成,必须继续被 INSERT/UPDATE 维护但不能安全用于查询,唯一性也不保证 |
| indcheckxmin | bool | 为 true 表示在当前行的 xmin 低于查询的 TransactionXmin 事件视界之前查询不得使用该索引,因为表中可能存在不相容的破损 HOT 链 |
| indisready | bool | 为 true 表示该索引已准备好接受插入;为 false 时 INSERT/UPDATE 必须忽略此索引 |
| indislive | bool | 为 false 表示该索引正在被删除,应在所有用途中(含 HOT 安全判定)被忽略 |
| indisreplident | bool | 为 true 表示该索引已被 ALTER TABLE ... REPLICA IDENTITY USING INDEX ... 选为 "副本标识" |
| indkey | int2vector | 长度为 indnatts 的数组,指示索引所索引的表列编号;0 表示对应属性为表达式而非简单列引用;键列排在非键(INCLUDED)列之前;引用 pg_attribute.attnum |
| indcollation | oidvector | 长度为 indnkeyatts 的数组,给出每个索引键列所用的排序规则 OID,不可排序类型为 0;引用 pg_collation.oid |
| indclass | oidvector | 长度为 indnkeyatts 的数组,给出每个索引键列所用的操作符类 OID;引用 pg_opclass.oid |
| indoption | int2vector | 长度为 indnkeyatts 的数组,存放每列的标志位,含义由索引访问方法定义 |
| indexprs | pg_node_tree | 非简单列引用的索引属性的表达式树(nodeToString() 表示),与 indkey 中为 0 的项一一对应;全部为简单列引用时为 NULL |
| indpred | pg_node_tree | 部分索引(partial index)谓词的表达式树(nodeToString() 表示);非部分索引时为 NULL |
pg_inherits
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录表和索引的继承层次关系,对每个直接父子关系(含声明式分区)存一条记录。
| 列名 | 类型 | 描述 |
|---|---|---|
| inhrelid | oid | 子表或子索引的 OID;引用 pg_class.oid |
| inhparent | oid | 父表或父索引的 OID;引用 pg_class.oid |
| inhseqno | int4 | 当子表有多个直接父表(多继承)时,指示继承列的排列顺序,从 1 开始计数;索引不能多继承(仅声明式分区时索引才会继承) |
| inhdetachpending | bool | 为 true 表示该分区正处于分离过程中(detach pending);否则为 false |
pg_init_privs
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录系统中对象的初始权限(由 initdb 初始化或 CREATE EXTENSION 脚本中的 GRANT 设置)。
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 具体对象的 OID |
| classoid | oid | 该对象所在系统目录的 OID;引用 pg_class.oid |
| objsubid | int4 | 对于表列,为列编号(objoid/classoid 指代表本身);对其他对象类型,此列为 0 |
| privtype | char | 标识初始权限类型的代码:i = 由 initdb 设置,e = 由 CREATE EXTENSION 设置 |
| initprivs | aclitem[] | 初始访问权限(ACL) |
备注: 该目录为当前数据库内对象的初始权限记录(数据库级目录,非集群共享),用于区分对象创建时的默认权限与后续权限变更。
pg_language
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:注册可用于编写函数或存储过程的语言(如 SQL、PL/pgSQL 等)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| lanname | name | 语言名称 |
| lanowner | oid | 语言的属主;引用 pg_authid.oid |
| lanispl | bool | 为 false 表示内部语言(如 SQL),为 true 表示用户定义语言;目前 pg_dump 仍据此判断是否需要转储 |
| lanpltrusted | bool | 为 true 表示这是受信任语言(不授予 SQL 执行环境之外的权限);只有超级用户能在非受信任语言中创建函数 |
| lanplcallfoid | oid | 对非内部语言,指向语言处理函数(负责执行该语言所有函数的特殊函数);内部语言为 0;引用 pg_proc.oid |
| laninline | oid | 指向负责执行内联匿名代码块(DO 块)的函数;不支持时为 0;引用 pg_proc.oid |
| lanvalidator | oid | 指向语言校验函数,用于在创建新函数时检查语法和有效性;无校验器时为 0;引用 pg_proc.oid |
| lanacl | aclitem[] | 访问权限(ACL) |
pg_largeobject
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:保存"大对象"(large object)的实际数据;每个大对象被切分为若干页(每页 LOBLKSIZE,通常 2 kB)分行存储。
| 列名 | 类型 | 描述 |
|---|---|---|
| loid | oid | 该页所属大对象的标识符;引用 pg_largeobject_metadata.oid |
| pageno | int4 | 该页在大对象中的页号(从 0 开始计数) |
| data | bytea | 实际存储的数据,绝不会超过 LOBLKSIZE 字节,也可能更少 |
备注: 该目录保存当前数据库中大对象的实际数据页(数据库级目录,非集群共享);支持稀疏存储,缺失区域读取为零。每行对应一个大对象的一页,起始字节偏移为 pageno * LOBLKSIZE。
pg_largeobject_metadata
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:保存与大对象相关联的元数据(属主和权限);大对象的实际数据保存在 pg_largeobject 中。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符(即该大对象的 OID) |
| lomowner | oid | 大对象的属主;引用 pg_authid.oid |
| lomacl | aclitem[] | 访问权限(ACL) |
备注: 该目录保存当前数据库中大对象的元数据(属主与权限,数据库级目录,非集群共享);实际数据存储在 pg_largeobject 中。
pg_namespace
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储命名空间(namespace),命名空间是 SQL 模式(schema)的底层结构,使不同模式可拥有独立的关系、类型等集合而互不冲突。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| nspname | name | 命名空间名称 |
| nspowner | oid | 命名空间的属主;引用 pg_authid.oid |
| nspparent | oid | 🔵 父命名空间的 OID;引用 pg_namespace.oid(Halo 扩展列,PG16 无;支持命名空间 / 模式的层级结构) |
| nspinherit | bool | 🔵 该命名空间是否继承父命名空间的对象(Halo 扩展列,PG16 无) |
| nspacl | aclitem[] | 访问权限(ACL) |
备注: 该目录存储当前数据库内的命名空间 / 模式信息(数据库级目录,非集群共享)。Halo 在 PG16 基础上新增了 nspparent、nspinherit 两列,以支持命名空间(模式)的层级与继承。
pg_opclass
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:定义索引访问方法的操作符类(operator class),每个操作符类为特定数据类型与特定索引访问方法定义索引列的语义。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| opcmethod | oid | 该操作符类所属的索引访问方法;引用 pg_am.oid |
| opcname | name | 操作符类名称 |
| opcnamespace | oid | 操作符类所在的命名空间;引用 pg_namespace.oid |
| opcowner | oid | 操作符类的属主;引用 pg_authid.oid |
| opcfamily | oid | 包含该操作符类的操作符族;引用 pg_opfamily.oid |
| opcintype | oid | 该操作符类所索引的数据类型;引用 pg_type.oid |
| opcdefault | bool | 为 true 表示该操作符类是其 opcintype 的默认操作符类 |
| opckeytype | oid | 索引中存储的数据类型;与 opcintype 相同时为 0;引用 pg_type.oid |
备注: 操作符类的 opcmethod 必须与其所属操作符族的 opfmethod 一致;对任意 (opcmethod, opcintype) 组合,至多只有一个 opcdefault 为 true 的操作符类。
pg_operator
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储操作符(operator)的相关信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| oprname | name | 操作符名称 |
| oprnamespace | oid | 操作符所在的命名空间;引用 pg_namespace.oid |
| oprowner | oid | 操作符的属主;引用 pg_authid.oid |
| oprkind | char | 操作符类型:b = 中缀("both"),l = 前缀("left") |
| oprcanmerge | bool | 为 true 表示该操作符支持 merge join |
| oprcanhash | bool | 为 true 表示该操作符支持 hash join |
| oprleft | oid | 左操作数类型;前缀操作符为 0;引用 pg_type.oid |
| oprright | oid | 右操作数类型;引用 pg_type.oid |
| oprresult | oid | 结果类型;尚未定义的 "shell" 操作符为 0;引用 pg_type.oid |
| oprcom | oid | 该操作符的交换子(commutator);无则为 0;引用 pg_operator.oid |
| oprnegate | oid | 该操作符的否定子(negator);无则为 0;引用 pg_operator.oid |
| oprcode | regproc | 实现该操作符的函数;尚未定义的 "shell" 操作符为 0;引用 pg_proc.oid |
| oprrest | regproc | 该操作符的限制选择率估算函数;无则为 0;引用 pg_proc.oid |
| oprjoin | regproc | 该操作符的连接选择率估算函数;无则为 0;引用 pg_proc.oid |
pg_opfamily
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:定义操作符族(operator family),即某索引访问方法所用的一组相互兼容的操作符及支持函数的集合。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| opfmethod | oid | 该操作符族所属的索引访问方法;引用 pg_am.oid |
| opfname | name | 操作符族名称 |
| opfnamespace | oid | 操作符族所在的命名空间;引用 pg_namespace.oid |
| opfowner | oid | 操作符族的所有者;引用 pg_authid.oid |
备注: 操作符族的具体内容(操作符与支持函数)并不在此表中,而是分别存储于 pg_amop、pg_amproc 和 pg_opclass。
pg_parameter_acl
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录已被授予一个或多个角色权限的配置参数(仅记录非默认权限的参数)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| parname | text | 被授予权限的配置参数名称 |
| paracl | aclitem[] | 访问权限列表(ACL) |
备注: 与多数系统目录不同,pg_parameter_acl 在整个集群的所有数据库间共享,每个集群仅有一份。
pg_partitioned_table
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储分区表的分区方式信息(分区策略、分区键等)。
| 列名 | 类型 | 描述 |
|---|---|---|
| partrelid | oid | 该分区表在 pg_class 中的条目 OID;引用 pg_class.oid |
| partstrat | char | 分区策略:h = 哈希分区,l = 列表分区,r = 范围分区 |
| partnatts | int2 | 分区键中的列数 |
| partdefid | oid | 该分区表的默认分区在 pg_class 中的 OID,无默认分区时为零;引用 pg_class.oid |
| partattrs | int2vector | 长度为 partnatts 的数组,指示分区键由哪些表列构成(如 1 3 表示第 1、3 列);其中 0 表示对应的分区键列为表达式而非简单列引用;引用 pg_attribute.attnum |
| partclass | oidvector | 分区键各列所使用的操作符类 OID;引用 pg_opclass.oid |
| partcollation | oidvector | 分区键各列所使用的排序规则 OID,不可排序类型为 0;引用 pg_collation.oid |
| partexprs | pg_node_tree | 分区键中非简单列引用部分的表达式树(nodeToString() 表示),与 partattrs 中每个 0 一一对应;全为简单列引用时为 null |
备注: 通过 partrelid 与 pg_class 一一对应;该表本身无独立 oid 列,主键即 partrelid。
pg_policy
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表的行级安全(Row-Level Security)策略。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| polname | name | 策略名称 |
| polrelid | oid | 该策略所作用的表;引用 pg_class.oid |
| polcmd | char | 策略适用的命令类型:r=SELECT,a=INSERT,w=UPDATE,d=DELETE,*=全部 |
| polpermissive | bool | 是否为宽容策略(true 为宽容型,false 为限制型) |
| polroles | oid[] | 策略适用的角色数组,0 表示 PUBLIC(通常单独出现在数组中);引用 pg_authid.oid |
| polqual | pg_node_tree | 作为安全屏障条件添加到使用该表的查询中的表达式树 |
| polwithcheck | pg_node_tree | 作为 WITH CHECK 条件添加到试图向表中添加行的查询中的表达式树 |
备注: 仅当表的 pg_class.relrowsecurity 为 true 时,pg_policy 中的策略才会生效。
pg_proc
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储函数、过程、聚合函数和窗口函数(统称 routine)的相关信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| proname | name | 函数名称 |
| pronamespace | oid | 函数所在的命名空间;引用 pg_namespace.oid |
| proowner | oid | 函数所有者;引用 pg_authid.oid |
| prolang | oid | 实现语言或调用接口;引用 pg_language.oid |
| procost | float4 | 估算执行代价(单位为 cpu_operator_cost);若 proretset 为真,则为每行返回的代价 |
| prorows | float4 | 估算结果行数(非 proretset 时为 0) |
| provariadic | oid | 可变参数数组元素的数据类型,无可变参数时为 0;引用 pg_type.oid |
| prosupport | regproc | 该函数的规划器支持函数;无则为 0;引用 pg_proc.oid |
| prokind | char | 函数种类:f=普通函数,p=过程,a=聚合,w=窗口函数 |
| prosecdef | bool | 是否为 security definer("setuid")函数 |
| proleakproof | bool | 是否为 leakproof(无副作用,且除返回值外不泄露任何参数信息) |
| proisstrict | bool | 是否为 strict 函数(任一参数为 NULL 即直接返回 NULL,不被实际调用) |
| proretset | bool | 是否返回集合(即返回指定类型的多个值) |
| provolatile | char | 易变性:i=immutable(同样输入恒定结果),s=stable(单次扫描内恒定),v=volatile(结果随时可能变化,含副作用) |
| proparallel | char | 并行安全性:s=并行安全,r=仅在并行 leader 中受限运行,u=并行不安全(强制串行计划) |
| pronargs | int2 | 输入参数个数 |
| pronargdefaults | int2 | 具有默认值的参数个数 |
| prorettype | oid | 返回值数据类型;引用 pg_type.oid |
| proaccess | char | 🔵 访问控制代码(Halo 扩展列,PG16 无;对应 Oracle 兼容的函数 / 过程访问控制,如 ACCESSIBLE BY 子句相关;具体取值以实际库为准) |
| proargtypes | oidvector | 函数参数类型数组(仅含输入参数,含 INOUT 和 VARIADIC),代表函数调用签名;下标从 0 开始;引用 pg_type.oid |
| proallargtypes | oid[] | 全部参数(含 OUT、INOUT)的类型数组;全部为 IN 参数时为 null;下标从 1 开始;引用 pg_type.oid |
| proargmodes | char[] | 参数模式数组:i=IN,o=OUT,b=INOUT,v=VARIADIC,t=TABLE;全部为 IN 参数时为 null;下标对应 proallargtypes |
| proargnames | text[] | 参数名称数组,无名的参数为空字符串;全部无名时为 null;下标对应 proallargtypes |
| proargdefaults | pg_node_tree | 默认值的表达式树(nodeToString() 表示),共 pronargdefaults 个元素,对应最后 N 个输入参数;无默认值时为 null |
| protrftypes | oid[] | 通过 TRANSFORM 子句需要应用 transform 的参数/结果类型数组;无则为 null;引用 pg_type.oid |
| prosrc | text | 告知函数处理器如何调用该函数的内容(可能是源代码、链接符号、文件名等,视语言而定) |
| probin | text | 关于如何调用函数的附加信息(含义与语言相关) |
| prosqlbody | pg_node_tree | 预解析的 SQL 函数体;仅用于以 SQL 标准语法书写的 SQL 语言函数,其他情况为 null |
| proconfig | text[] | 函数局部的运行时配置变量设置 |
| proacl | aclitem[] | 访问权限列表(ACL) |
| proreadonly | bool | 🔵 是否为只读(read-only)函数 / 过程(Halo 扩展列,PG16 无;可空) |
备注: proargtypes 由于历史原因下标从 0 开始,而 proallargtypes、proargmodes、proargnames 下标从 1 开始。Halo 在 PG16 基础上新增了 proaccess、proreadonly 两列,提供函数 / 过程的访问控制与只读语义。
pg_publication
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储当前数据库中创建的所有逻辑复制 publication(发布)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| pubname | name | 发布名称 |
| pubowner | oid | 发布所有者;引用 pg_authid.oid |
| puballtables | bool | 为 true 时,该发布自动包含数据库中的所有表(含未来创建的表) |
| pubinsert | bool | 为 true 时,发布中的表会复制 INSERT 操作 |
| pubupdate | bool | 为 true 时,发布中的表会复制 UPDATE 操作 |
| pubdelete | bool | 为 true 时,发布中的表会复制 DELETE 操作 |
| pubtruncate | bool | 为 true 时,发布中的表会复制 TRUNCATE 操作 |
| pubviaroot | bool | 为 true 时,对叶子分区的操作会通过其在发布中提及的最顶层分区祖先的身份和模式进行复制 |
备注: 该表为 per-database(每个数据库一份)。
pg_publication_namespace
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 schema 与 publication 之间的多对多映射。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| pnpubid | oid | 对应的 publication;引用 pg_publication.oid |
| pnnspid | oid | 对应的 schema;引用 pg_namespace.oid |
备注: 用于实现 PUBLICATION ... FOR TABLES IN SCHEMA 的映射关系。
pg_publication_rel
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 relation 与 publication 之间的多对多映射。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| prpubid | oid | 对应的 publication;引用 pg_publication.oid |
| prrelid | oid | 对应的 relation;引用 pg_class.oid |
| prqual | pg_node_tree | 该 relation 的发布过滤条件表达式树(nodeToString() 表示);无过滤条件时为 null |
| prattrs | int2vector | 指示发布包含哪些表列的数组(如 1 3 表示发布第 1、3 列);为 null 表示发布全部列;引用 pg_attribute.attnum |
备注: prqual 与 prattrs 用于支持发布的行过滤与列列表;该能力在 PostgreSQL 15 引入,PG16 继续保留。
pg_range
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 range 类型相关信息,是对 pg_type 中 range 类型条目的补充。
| 列名 | 类型 | 描述 |
|---|---|---|
| rngtypid | oid | range 类型的 OID;引用 pg_type.oid |
| rngsubtype | oid | 该 range 类型的元素类型(子类型)OID;引用 pg_type.oid |
| rngmultitypid | oid | 该 range 类型对应的多范围(multirange)类型 OID;引用 pg_type.oid |
| rngcollation | oid | range 比较所用排序规则的 OID,无则为 0;引用 pg_collation.oid |
| rngsubopc | oid | 子类型比较所用操作符类的 OID;引用 pg_opclass.oid |
| rngcanonical | regproc | 将 range 值转换为规范形式的函数 OID,无则为 0;引用 pg_proc.oid |
| rngsubdiff | regproc | 返回两个元素值之差(double precision)的函数 OID,无则为 0;引用 pg_proc.oid |
备注: rngsubopc(若元素可排序再加上 rngcollation)决定 range 类型的排序;rngcanonical 用于离散元素类型;rngsubdiff 可选,但提供后可提升该 range 类型上 GiST 索引的性能。
pg_replication_origin
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储所有已创建的复制源(replication origin)。
| 列名 | 类型 | 描述 |
|---|---|---|
| roident | oid | 复制源在集群范围内唯一的标识符,不应离开系统 |
| roname | text | 复制源的外部、用户自定义名称 |
备注: 与多数系统目录不同,pg_replication_origin 在整个集群的所有数据库间共享,每个集群仅有一份。
pg_rewrite
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表和视图的重写规则(rewrite rule)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| rulename | name | 规则名称 |
| ev_class | oid | 该规则所属的表;引用 pg_class.oid |
| ev_type | char | 规则所针对的事件类型:1=SELECT,2=UPDATE,3=INSERT,4=DELETE |
| ev_enabled | char | 控制规则在哪些 session_replication_role 模式下触发:O=origin 和 local 模式触发,D=禁用,R=replica 模式触发,A=始终触发 |
| is_instead | bool | 为 true 表示该规则是 INSTEAD 规则 |
| ev_qual | pg_node_tree | 规则限定条件的表达式树(nodeToString() 表示) |
| ev_action | pg_node_tree | 规则动作的查询树(nodeToString() 表示) |
备注: 当表在此目录中存在任何规则时,对应的 pg_class.relhasrules 必须为 true。
pg_seclabel
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库对象上的安全标签(security label),由 SECURITY LABEL 命令维护。
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 此安全标签所属对象的 OID;引用任意 OID 列 |
| classoid | oid | 该对象所在的系统目录的 OID;引用 pg_class.oid |
| objsubid | int4 | 若是对表列的安全标签,则为列号(objoid/classoid 指代表本身);其他对象类型为零 |
| provider | text | 与此标签关联的标签提供者(label provider) |
| label | text | 应用于此对象的安全标签 |
备注: 仅存储本数据库内对象的安全标签;集群范围内共享对象的安全标签见 pg_shseclabel。
pg_sequence
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储序列(sequence)的定义信息;序列名称、模式等位于 pg_class。
| 列名 | 类型 | 描述 |
|---|---|---|
| seqrelid | oid | 此序列在 pg_class 中对应项的 OID;引用 pg_class.oid |
| seqtypid | oid | 序列的数据类型;引用 pg_type.oid |
| seqstart | int8 | 序列的起始值 |
| seqincrement | int8 | 序列的步长(增量) |
| seqmax | int8 | 序列的最大值 |
| seqmin | int8 | 序列的最小值 |
| seqcache | int8 | 序列的缓存大小 |
| seqcycle | bool | 序列是否循环(达到边界后回绕) |
pg_shdepend
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录数据库对象与共享对象(如角色、表空间)之间的依赖关系,用于在删除共享对象前确保其未被引用。
| 列名 | 类型 | 描述 |
|---|---|---|
| dbid | oid | 依赖对象所在的数据库 OID,共享对象则为零;引用 pg_database.oid |
| classid | oid | 依赖对象所在的系统目录 OID;引用 pg_class.oid |
| objid | oid | 具体依赖对象的 OID;引用任意 OID 列 |
| objsubid | int4 | 若是表列,则为列号(objid/classid 指代表本身);其他对象类型为零 |
| refclassid | oid | 被引用对象所在的系统目录 OID(必须是共享目录);引用 pg_class.oid |
| refobjid | oid | 具体被引用对象的 OID;引用任意 OID 列 |
| deptype | char | 标识依赖关系语义类型的代码:o=所有者、a=ACL、r=policy 目标、t=表空间引用 |
备注: 集群范围内共享(每个集群仅一份)。dep 目标目前仅支持角色与表空间;initdb 期间创建的对象被视为"pinned",不在此目录中记录。
pg_shdescription
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储共享数据库对象的可选描述(注释),由 COMMENT 命令维护。
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 此描述所属对象的 OID;引用任意 OID 列 |
| classoid | oid | 该对象所在的系统目录 OID;引用 pg_class.oid |
| description | text | 作为此对象描述的任意文本 |
备注: 集群范围内共享(每个集群仅一份);单库内对象的描述见 pg_description。
pg_shseclabel
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储共享数据库对象上的安全标签,由 SECURITY LABEL 命令维护。
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 此安全标签所属对象的 OID;引用任意 OID 列 |
| classoid | oid | 该对象所在的系统目录 OID;引用 pg_class.oid |
| provider | text | 与此标签关联的标签提供者 |
| label | text | 应用于此对象的安全标签 |
备注: 集群范围内共享(每个集群仅一份);单库内对象的安全标签见 pg_seclabel。
pg_statistic
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储关于数据库内容的统计信息,由 ANALYZE 写入并被查询规划器使用。
| 列名 | 类型 | 描述 |
|---|---|---|
| starelid | oid | 所描述列所属的表或索引;引用 pg_class.oid |
| staattnum | int2 | 所描述列的列号;引用 pg_attribute.attnum |
| stainherit | bool | 为 true 时表示统计包含子表(继承/分区)的值,而非仅指定关系本身 |
| stanullfrac | float4 | 该列中为 NULL 的项所占比例 |
| stawidth | int4 | 非 NULL 项的平均存储宽度(字节) |
| stadistinct | float4 | 列中不同非 NULL 值的数量:正值表示实际不同值数;负值为行数的乘子的相反数(如 -0.4 表示约 80% 非空且每值平均出现约两次);零表示未知 |
| stakind1 | int2 | 第 1 个"槽位"中存储的统计类型代码 |
| stakind2 | int2 | 第 2 个"槽位"中存储的统计类型代码 |
| stakind3 | int2 | 第 3 个"槽位"中存储的统计类型代码 |
| stakind4 | int2 | 第 4 个"槽位"中存储的统计类型代码 |
| stakind5 | int2 | 第 5 个"槽位"中存储的统计类型代码 |
| staop1 | oid | 用于推导第 1 个槽位统计的运算符(如直方图的 <),不需要时为零;引用 pg_operator.oid |
| staop2 | oid | 用于推导第 2 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid |
| staop3 | oid | 用于推导第 3 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid |
| staop4 | oid | 用于推导第 4 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid |
| staop5 | oid | 用于推导第 5 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid |
| stacoll1 | oid | 用于推导第 1 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid |
| stacoll2 | oid | 用于推导第 2 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid |
| stacoll3 | oid | 用于推导第 3 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid |
| stacoll4 | oid | 用于推导第 4 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid |
| stacoll5 | oid | 用于推导第 5 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid |
| stanumbers1 | float4[] | 第 1 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL |
| stanumbers2 | float4[] | 第 2 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL |
| stanumbers3 | float4[] | 第 3 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL |
| stanumbers4 | float4[] | 第 4 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL |
| stanumbers5 | float4[] | 第 5 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL |
| stavalues1 | anyarray | 第 1 个槽位对应类型的列数据值统计,不存储数据值时为 NULL(元素实际为该列类型或相关类型) |
| stavalues2 | anyarray | 第 2 个槽位对应类型的列数据值统计,不存储数据值时为 NULL |
| stavalues3 | anyarray | 第 3 个槽位对应类型的列数据值统计,不存储数据值时为 NULL |
| stavalues4 | anyarray | 第 4 个槽位对应类型的列数据值统计,不存储数据值时为 NULL |
| stavalues5 | anyarray | 第 5 个槽位对应类型的列数据值统计,不存储数据值时为 NULL |
备注: 通常每个被分析列有一条 stainherit=false 记录;存在继承/分区子表时另有一条 stainherit=true 记录。索引表达式也按虚拟列方式记录。该表不对 PUBLIC 可读,公开视图为 pg_stats。
pg_statistic_ext
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放扩展规划器统计(statistics object)的定义,每行对应一个由 CREATE STATISTICS 创建的统计对象。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| stxrelid | oid | 包含被统计列的表;引用 pg_class.oid |
| stxname | name | 统计对象的名称 |
| stxnamespace | oid | 包含此统计对象的命名空间 OID;引用 pg_namespace.oid |
| stxowner | oid | 统计对象的所有者;引用 pg_authid.oid |
| stxstattarget | int4 | 控制 ANALYZE 为此对象收集统计的详细程度:零表示不收集;负值表示取被引用列统计目标的最大值或系统默认值;正值决定要收集的最常见值目标数 |
| stxkeys | int2vector | 此统计对象覆盖的表列属性号数组,如 1 3 表示覆盖第 1、3 列;引用 pg_attribute.attnum |
| stxkind | char[] | 启用的统计类型代码数组:d=n-distinct、f=函数依赖、m=MCV 列表、e=表达式统计 |
| stxexprs | pg_node_tree | 非简单列引用的统计对象属性的表达式树(nodeToString() 表示),每表达式一个元素的列表;全部为简单引用时为 NULL |
备注: 在 CREATE STATISTICS 时填入完整定义,但实际统计值由后续 ANALYZE 计算并写入 pg_statistic_ext_data。
pg_statistic_ext_data
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放 pg_statistic_ext 中定义的扩展统计对象被 ANALYZE 计算出的实际统计数据。
| 列名 | 类型 | 描述 |
|---|---|---|
| stxoid | oid | 此数据所属的扩展统计对象(提供定义);引用 pg_statistic_ext.oid |
| stxdinherit | bool | 为 true 时表示统计包含子表的值,而非仅指定关系本身 |
| stxdndistinct | pg_ndistinct | N-distinct 计数,序列化为 pg_ndistinct 类型 |
| stxddependencies | pg_dependencies | 函数依赖统计,序列化为 pg_dependencies 类型 |
| stxdmcv | pg_mcv_list | 最常见值(MCV)列表统计,序列化为 pg_mcv_list 类型 |
| stxdexpr | pg_statistic[] | 每个表达式的统计信息,序列化为 pg_statistic 类型的数组 |
备注: 通常每个已分析的统计对象有一条 stxdinherit=false 记录;存在继承/分区子表时另有一条 stxdinherit=true 记录。该表不对 PUBLIC 可读,公开视图为 pg_stats_ext(与 pg_statistic_ext 连接)。
pg_subscription
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放集群中所有现存的逻辑复制订阅(logical replication subscription)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| subdbid | oid | 订阅所在的数据库的 OID;引用 pg_database.oid |
| subskiplsn | pg_lsn | 待跳过其更改的事务的结束 LSN(有效时);否则为 0/0 |
| subname | name | 订阅的名称 |
| subowner | oid | 订阅的所有者;引用 pg_authid.oid |
| subenabled | bool | 为 true 时订阅已启用,应进行复制 |
| subbinary | bool | 为 true 时订阅请求发布者以二进制格式发送数据 |
| substream | char | 控制进行中事务的流式处理方式:f=不允许、t=落盘并在提交后一次性应用、p=在可用时由并行 apply worker 直接应用(不可用时同 t) |
| subtwophasestate | char | 两阶段模式状态码:d=禁用、p=待启用、e=已启用 |
| subdisableonerr | bool | 为 true 时,若其某个 worker 检测到错误则禁用该订阅 |
| subpasswordrequired | bool | 为 true 时订阅必须指定用于认证的密码 |
| subrunasowner | bool | 为 true 时订阅以订阅所有者的权限运行 |
| subconninfo | text | 到上游数据库的连接串(普通用户不可访问,可能含明文密码) |
| subslotname | name | 上游数据库中复制槽的名称(同时用作本地复制源名称);NULL 表示 NONE |
| subsynccommit | text | 订阅 worker 使用的 synchronous_commit 设置 |
| subpublications | text[] | 已订阅的发布名称数组,引用上游数据库中定义的发布 |
| suborigin | text | 源过滤值:none 表示仅请求无来源的更改,any 表示不论来源都发送(默认 any) |
备注: 集群范围内共享(每个集群仅一份)。subconninfo 列对普通用户撤销了访问权限。
pg_subscription_rel
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放每个订阅中每个被复制关系(表)的状态,是一个多对多映射。
| 列名 | 类型 | 描述 |
|---|---|---|
| srsubid | oid | 对订阅的引用;引用 pg_subscription.oid |
| srrelid | oid | 对关系(表)的引用;引用 pg_class.oid |
| srsubstate | char | 状态码:i=初始化、d=数据复制中、f=表复制完成、s=已同步、r=就绪(正常复制) |
| srsublsn | pg_lsn | 用于同步协调的状态变更远程 LSN(处于 s 或 r 状态时),否则为 NULL |
备注: 仅包含在执行 CREATE SUBSCRIPTION 或 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 后订阅已知的表。
pg_tablespace
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储集群中可用表空间的信息,便于将表放置到不同物理位置以管理磁盘布局。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| spcname | name | 表空间名称 |
| spcowner | oid | 表空间属主,通常为创建该表空间的用户;引用 pg_authid.oid |
| spcacl | aclitem[] | 访问权限(ACL) |
| spcoptions | text[] | 表空间级选项,以“keyword=value”字符串形式存储 |
备注: 与大多数系统目录不同,pg_tablespace 在整个集群范围内共享,每个集群只有一份副本,而非每个数据库各一份。
pg_transform
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 transform(变换)信息,transform 是一种将数据类型适配到过程语言的机制。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| trftype | oid | 此 transform 所针对的数据类型 OID;引用 pg_type.oid |
| trflang | oid | 此 transform 所针对的语言 OID;引用 pg_language.oid |
| trffromsql | regproc | 将该数据类型转换为过程语言输入(如函数参数)时所用函数的 OID,为 0 时表示使用默认行为;引用 pg_proc.oid |
| trftosql | regproc | 将过程语言输出(如返回值)转换为该数据类型时所用函数的 OID,为 0 时表示使用默认行为;引用 pg_proc.oid |
备注: 同一(数据类型,语言)组合在表中唯一,参见 CREATE TRANSFORM。
pg_trigger
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表和视图上的触发器信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| tgrelid | oid | 此触发器所属的表;引用 pg_class.oid |
| tgparentid | oid | 此触发器被克隆自的父触发器(在分区创建或挂接到分区表时发生);非克隆时为 0;引用 pg_trigger.oid |
| tgname | name | 触发器名称(在同一表内须唯一) |
| tgfoid | oid | 触发器调用的函数;引用 pg_proc.oid |
| tgtype | int2 | 标识触发时机的位掩码(事件与动作的组合) |
| tgenabled | char | 控制在哪些 session_replication_role 模式下触发:O=origin/local 模式触发,D=禁用,R=replica 模式触发,A=总是触发 |
| tgisinternal | bool | 为 true 表示该触发器由系统内部生成(通常用于实现 tgconstraint 所指约束) |
| tgconstrrelid | oid | 引用完整性约束所引用的表(非此类约束触发器时为 0);引用 pg_class.oid |
| tgconstrindid | oid | 支持唯一、主键、引用完整性或排他约束的索引(非此类约束触发器时为 0);引用 pg_class.oid |
| tgconstraint | oid | 与此触发器关联的 pg_constraint 条目(非约束触发器时为 0);引用 pg_constraint.oid |
| tgdeferrable | bool | 为 true 表示该约束触发器是可延迟的 |
| tginitdeferred | bool | 为 true 表示该约束触发器初始为延迟执行 |
| tgnargs | int2 | 传递给触发器函数的参数字符串个数 |
| tgattr | int2vector | 列特定触发器涉及的列号;否则为空数组;引用 pg_attribute.attnum |
| tgargs | bytea | 传递给触发器的参数字符串,每个以 NULL 结尾 |
| tgqual | pg_node_tree | 触发器 WHEN 条件的表达式树(nodeToString() 表示),无则为 null |
| tgoldtable | name | REFERENCING 子句中 OLD TABLE 的名称,无则为 null |
| tgnewtable | name | REFERENCING 子句中 NEW TABLE 的名称,无则为 null |
备注: 列特定触发目前仅支持 UPDATE 事件,故 tgattr 仅对该事件有意义。当 tgconstraint 非 0 时,tgconstrrelid、tgconstrindid、tgdeferrable、tginitdeferred 很大程度上与所引用的 pg_constraint 条目重复。若某关系存在触发器,pg_class.relhastriggers 必为 true。
pg_ts_config
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索配置条目,每个配置指定一个文本搜索解析器及对应各类 token 的词典列表。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| cfgname | name | 文本搜索配置名称 |
| cfgnamespace | oid | 包含此配置的命名空间 OID;引用 pg_namespace.oid |
| cfgowner | oid | 配置的属主;引用 pg_authid.oid |
| cfgparser | oid | 此配置所用的文本搜索解析器 OID;引用 pg_ts_parser.oid |
备注: token 到词典的映射由 pg_ts_config_map 中的附属条目定义。
pg_ts_config_map
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索配置中针对解析器输出的每种 token 类型应依次查询哪些词典的映射条目。
| 列名 | 类型 | 描述 |
|---|---|---|
| mapcfg | oid | 拥有此映射条目的 pg_ts_config 条目 OID;引用 pg_ts_config.oid |
| maptokentype | int4 | 配置所用解析器输出的一种 token 类型 |
| mapseqno | int4 | 查询此条目的顺序(mapseqno 较小者先查询) |
| mapdict | oid | 要查询的文本搜索词典 OID;引用 pg_ts_dict.oid |
备注: 一个配置对同一 token 类型可有多条按 mapseqno 排序的映射条目。
pg_ts_dict
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索词典条目;词典依赖文本搜索模板,由词典提供模板所支持的用户可设参数值。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| dictname | name | 文本搜索词典名称 |
| dictnamespace | oid | 包含此词典的命名空间 OID;引用 pg_namespace.oid |
| dictowner | oid | 词典的属主;引用 pg_authid.oid |
| dicttemplate | oid | 此词典所用的文本搜索模板 OID;引用 pg_ts_template.oid |
| dictinitoption | text | 模板的初始化选项字符串 |
备注: 实现函数由模板提供,参数值由词典以文本字符串 dictinitoption 给出,其格式与含义取决于具体模板;这种分工使非特权用户也能创建词典。
pg_ts_parser
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索解析器条目;解析器负责将输入文本切分为词素并为每个词素分配类型。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| prsname | name | 文本搜索解析器名称 |
| prsnamespace | oid | 包含此解析器的命名空间 OID;引用 pg_namespace.oid |
| prsstart | regproc | 解析器启动函数的 OID;引用 pg_proc.oid |
| prstoken | regproc | 解析器取下一 token 函数的 OID;引用 pg_proc.oid |
| prsend | regproc | 解析器关闭函数的 OID;引用 pg_proc.oid |
| prsheadline | regproc | 解析器 headline(摘要高亮)函数的 OID,无则为 0;引用 pg_proc.oid |
| prslextype | regproc | 解析器 lextype(词素类型)函数的 OID;引用 pg_proc.oid |
备注: 解析器必须由 C 语言函数实现,因此新建解析器仅限数据库超级用户。
pg_ts_template
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索模板条目;模板是一类文本搜索词典的实现骨架。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| tmplname | name | 文本搜索模板名称 |
| tmplnamespace | oid | 包含此模板的命名空间 OID;引用 pg_namespace.oid |
| tmplinit | regproc | 模板初始化函数的 OID,无则为 0;引用 pg_proc.oid |
| tmpllexize | regproc | 模板 lexize(词素归一化)函数的 OID;引用 pg_proc.oid |
备注: 模板必须由 C 语言函数实现,因此新建模板仅限数据库超级用户。
pg_type
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据类型的信息(基类型、枚举类型、域、复合类型、伪类型、范围类型、多范围类型等)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| typname | name | 数据类型名称 |
| typnamespace | oid | 包含此类型的命名空间 OID;引用 pg_namespace.oid |
| typowner | oid | 类型的属主;引用 pg_authid.oid |
| typlen | int2 | 固定长度类型为内部表示的字节数;变长类型为负数:-1 表示 varlena 类型(带长度字),-2 表示以 NULL 结尾的 C 字符串 |
| typbyval | bool | 内部例程是否按值传递该类型(true 按值,false 按引用);变长类型恒为按引用 |
| typtype | char | 类型种类:b=基类型,c=复合类型,d=域,e=枚举,p=伪类型,r=范围类型,m=多范围类型 |
| typcategory | char | 解析器用于确定隐式转换“首选”目标类型的任意分类码 |
| typispreferred | bool | 为 true 表示此类型是其 typcategory 中首选的转换目标 |
| typisdefined | bool | 为 true 表示类型已定义;为 false 表示这是尚未定义类型的占位条目 |
| typdelim | char | 解析数组输入时分隔两个本类型值的字符(与数组元素类型相关,而非数组类型) |
| typrelid | oid | 若为复合类型,指向定义对应表的 pg_class 条目;非复合类型为 0;引用 pg_class.oid |
| typsubscript | regproc | 下标处理函数的 OID,不支持下标则为 0;真正的数组类型此值为 array_subscript_handler;引用 pg_proc.oid |
| typelem | oid | 非 0 时标识 pg_type 中另一行,定义下标取值结果类型;typsubscript 为 0 时应为 0;引用 pg_type.oid |
| typarray | oid | 非 0 时标识 pg_type 中以本类型为元素的“真正”数组类型;引用 pg_type.oid |
| typinput | regproc | 输入转换函数(文本格式);引用 pg_proc.oid |
| typoutput | regproc | 输出转换函数(文本格式);引用 pg_proc.oid |
| typreceive | regproc | 输入转换函数(二进制格式),无则为 0;引用 pg_proc.oid |
| typsend | regproc | 输出转换函数(二进制格式),无则为 0;引用 pg_proc.oid |
| typmodin | regproc | 类型修饰符输入函数,不支持修饰符则为 0;引用 pg_proc.oid |
| typmodout | regproc | 类型修饰符输出函数,为 0 则使用标准格式;引用 pg_proc.oid |
| typanalyze | regproc | 自定义 ANALYZE 函数,为 0 则使用标准函数;引用 pg_proc.oid |
| typalign | char | 存储该类型值时所需对齐方式:c=char(无对齐),s=short(2 字节),i=int(4 字节),d=double(8 字节) |
| typstorage | char | 针对 varlena 类型(typlen=-1)的 TOAST 策略:p=plain 始终行内存储,e=external 可外存到 TOAST 表,m=main 可压缩并尽量行内存储,x=extended 可压缩或外存(默认) |
| typnotnull | bool | 类型的 NOT NULL 约束(仅用于域) |
| typbasetype | oid | 若为域,标识其所基于的类型;非域则为 0;引用 pg_type.oid |
| typtypmod | int4 | 域记录要应用到基类型的 typmod(基类型不用 typmod 时为 -1);非域为 -1 |
| typndims | int4 | 基于数组的域的数组维度数;其他类型为 0 |
| typcollation | oid | 类型的排序规则 OID;不支持排序规则时为 0;引用 pg_collation.oid |
| typaccess | char | 🔵 访问控制代码(Halo 扩展列,PG16 无;对应 Oracle 兼容的类型访问控制,如 ACCESSIBLE BY 子句相关;具体取值以实际库为准) |
| typdefaultbin | pg_node_tree | 若非 null,则是类型默认表达式的 nodeToString() 表示(仅用于域) |
| typdefault | text | 类型的默认值;typdefaultbin 非 null 时为其人类可读版本;否则为默认值的外部表示,可为 null |
| typacl | aclitem[] | 访问权限(ACL) |
备注: 复合类型与 pg_class 关联(见 typrelid);域的相关列(typbasetype、typtypmod、typndims、typdefaultbin、typnotnull)仅对域有意义。Halo 在 PG16 基础上新增了 typaccess 列,提供类型的访问控制语义。
pg_user_mapping
类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储本地用户到外部远程用户的映射,用于外部数据封装(FDW)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| umuser | oid | 被映射的本地角色 OID,公共映射则为 0;引用 pg_authid.oid |
| umserver | oid | 包含此映射的外部服务器 OID;引用 pg_foreign_server.oid |
| umoptions | text[] | 用户映射特定的选项,以“keyword=value”字符串形式存储 |
备注: 普通用户对该目录的访问受限,应改用视图 pg_user_mappings 查询。
pg_synonym
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储同义词(SYNONYM)对象的元数据,支持 Oracle 兼容语法 CREATE [PUBLIC] SYNONYM name FOR schema.obj,为本库或远端对象(表、视图、序列、函数、包等)建立别名。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| synname | name | 同义词名称 |
| synnamespace | oid | 同义词所属模式;引用 pg_namespace.oid |
| synowner | oid | 同义词所有者;引用 pg_authid.oid |
| synobjschema | name | 目标对象所在模式名 |
| synobjname | name | 目标对象名称 |
| synspec | text | 同义词定义的原始说明文本(CREATE SYNONYM 语句的 spec) |
| synlink | text | 关联信息(如指向数据库链接 / 远端对象时的引用串);无则为 null |
备注: 字段已据实际库核对(8 列,均 NOT NULL 除 synlink 外)。
pg_directory
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储目录对象(DIRECTORY)的元数据,支持 Oracle 兼容语法 CREATE [OR REPLACE] DIRECTORY name AS 'filesystem_path',为外部文件访问(如 BFILE、外部表、导入导出)提供逻辑目录别名。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| dirname | name | 目录对象名称 |
| dirowner | oid | 所有者;引用 pg_authid.oid |
| dirpath | text | 对应的操作系统文件系统路径 |
| diracl | aclitem[] | 访问权限(ACL);未授予时为 null |
备注: 字段已据实际库核对(5 列)。注意本表无 namespace 列,目录对象直接由属主持有。
pg_dblink
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库链接(DATABASE LINK)的元数据,支持 Oracle 兼容语法 CREATE [PUBLIC] DATABASE LINK name CONNECT TO ... USING ...,用于跨库访问远端数据库对象。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| name | name | 数据库链接名称 |
| nspoid | oid | 所属模式;引用 pg_namespace.oid |
| umoid | oid | 关联的用户映射(user mapping);引用 pg_user_mapping.oid |
| dblinksrc | text | 连接源信息(远端连接目标 / 连接描述串) |
备注: 字段已据实际库核对(5 列,均 NOT NULL)。数据库链接通过 umoid 复用 PG 的用户映射机制(pg_user_mapping)来携带远端连接凭据。
pg_dbarecyclebin
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:回收站(RECYCLEBIN),支持 Oracle 兼容的"回收站 / 闪回删除"特性,记录被 DROP 的对象以便 FLASHBACK ... TO BEFORE DROP 恢复、PURGE 清除。对应 Oracle 的 DBA_RECYCLEBIN。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| nameSpace | oid | 对象所在模式;引用 pg_namespace.oid(列名为驼峰式 nameSpace) |
| owner | oid | 对象所有者;引用 pg_authid.oid |
| object_name | name | 回收站中对象的系统生成名(类似 Oracle 的 BIN$...) |
| original_name | name | 对象原始名称 |
| operation | char | 触发进入回收站的操作代码(如 DROP);具体取值以实际库为准 |
| type | char | 对象类型代码(表 / 索引 / 视图等,单字符编码);具体取值以实际库为准 |
| ts | oid | 所在表空间;引用 pg_tablespace.oid |
| createtime | name | 对象创建时间(以文本形式存储) |
| droptime | name | 对象删除(进入回收站)时间(以文本形式存储) |
| can_undrop | bool | 是否可被 FLASHBACK ... TO BEFORE DROP 恢复 |
| can_purge | bool | 是否可被 PURGE 清除 |
| related | oid | 关联对象的 OID(与 Oracle DBA_RECYCLEBIN.RELATED 语义一致) |
| base_object | oid | 关联基对象的 OID;引用 pg_class.oid |
| purge_object | oid | 清除时需一并处理的对象 OID |
| space | int4 | 对象占用空间大小 |
| partition_name | char | 相关分区名(非分区对象为占位字符) |
备注: 字段已据实际库核对(17 列,均 NOT NULL)。createtime、droptime 在目录中以 name 类型文本存储,与 Oracle DBA_RECYCLEBIN 的字符串时间列一致。
pg_package
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 PL/SQL 包(PACKAGE) 的元数据,支持 Oracle 兼容语法 CREATE PACKAGE / CREATE PACKAGE BODY,每行记录一个包及其说明(spec)与体(body)源代码。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| pkgname | name | 包名称 |
| pkgnamespace | oid | 所属模式;引用 pg_namespace.oid |
| pkgowner | oid | 所有者;引用 pg_authid.oid |
| pkgsecdef | bool | 是否以定义者(security definer / setuid)权限执行包内子程序 |
| pkgspec | text | 包说明(PACKAGE SPEC)源代码 |
| pkgbody | text | 包体(PACKAGE BODY)源代码;仅有说明而无体时为 null |
| pkgacl | aclitem[] | 访问权限(ACL);未授予时为 null |
备注: 字段已据实际库核对(8 列)。与早期推断不同,实际表中同时存放 spec 与 body(pkgspec / pkgbody),而非单独的目录;另含 pkgsecdef 执行权限标记。
pg_typebody
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储对象类型体(TYPE BODY)的元数据,支持 Oracle 兼容语法 CREATE TYPE BODY,记录对象类型的构造函数与成员 / 静态过程的 OID 及源代码。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| constructorproc | oidvector | 构造函数(constructor)的 OID 列表;引用 pg_proc.oid;无则为 null |
| memberproc | oidvector | 成员过程 / 函数(MEMBER)的 OID 列表;引用 pg_proc.oid;无则为 null |
| staticproc | oidvector | 静态过程 / 函数(STATIC)的 OID 列表;引用 pg_proc.oid;无则为 null |
| typespec | text | 类型说明(TYPE SPEC)源代码 |
| typebodyspec | text | 类型体(TYPE BODY)源代码;无体时为 null |
备注: 字段已据实际库核对(6 列)。与早期推断不同,实际表并不按"名称 / 模式 / 属主"组织,而是以三组 oidvector(构造 / 成员 / 静态过程)组织成员,并保留 spec / body 源代码。
pg_variable
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储变量的元数据,支持包级 / 会话级变量、常量及带参变量(Oracle 兼容,PL/SQL 包变量、ACCESSIBLE BY 等)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| varname | name | 变量名 |
| varnamespace | oid | 所属模式;引用 pg_namespace.oid |
| vartype | oid | 变量数据类型;引用 pg_type.oid |
| vartypmod | int4 | 类型修饰符(如变长类型的长度) |
| varowner | oid | 所有者;引用 pg_authid.oid |
| varcollation | oid | 排序规则;引用 pg_collation.oid |
| varisnotnull | bool | 是否 NOT NULL |
| varisimmutable | bool | 是否不可变(赋值后不可更改) |
| vareoxaction | char | 事务结束时的动作代码(如 RESET / KEEP);具体取值以实际库为准 |
| varisconst | bool | 是否为常量(CONSTANT) |
| varnargs | int2 | 变量为带参构造时的参数个数 |
| varisbound | bool | 是否已绑定(bound) |
| varresulttype | oid | 带参变量的结果类型;引用 pg_type.oid |
| vardefexpr | pg_node_tree | 默认值 / 初值的表达式树(nodeToString() 表示);无则为 null |
| varargnames | text[] | 参数名数组;无则为 null |
| varargtypes | oid[] | 参数类型数组;引用 pg_type.oid;无则为 null |
| varacl | aclitem[] | 访问权限(ACL);未授予时为 null |
| varaccess | char | 访问控制代码(可空;具体取值以实际库为准) |
备注: 字段已据实际库核对(19 列)。变量语义较推断更丰富:支持常量(varisconst)、不可变(varisimmutable)、事务结束动作(vareoxaction)、带参变量(varnargs / varargnames / varargtypes / varresulttype)等。
pg_viewdef
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:缓存每个视图的定义文本与只读标记。本实例中含 143 行,与当前库视图数一致(每视图一条)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符,对应视图关系的 OID;引用 pg_class.oid |
| definition | text | 视图的可读定义文本 |
| viewreadonly | bool | 是否为只读视图;可空 |
备注: 字段已据实际库核对(3 列)。该表是在 pg_rewrite 规则与标准视图 pg_views 之外,额外保存视图定义文本(与只读属性)的 Halo 专有目录。
pg_model
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:注册库内 AI/ML 模型的定义(名称、类型、提供方、算法及选项),配合 pg_mrt(模型运行时)实现 in-database 模型管理。当前库为空(0 行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| model_name | name | 模型名称 |
| model_type | int4 | 模型类型代码(数值编码) |
| model_provider | oid | 模型提供方(provider)的标识(OID) |
| model_algorithm | int4 | 模型算法代码(数值编码) |
| model_algorithm_desc | text | 算法的文本描述 |
| model_options | text[] | 模型选项("keyword=value" 形式);无则为 null |
| model_acl | aclitem[] | 访问权限(ACL);未授予时为 null |
备注: 字段已据实际库核对(8 列)。model_type / model_algorithm 为数值编码,具体取值以实际库为准。
pg_mrt
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:模型运行时(MRT,Model RunTime)注册表,结构类比 pg_am(访问方法):每行把一个运行时名称映射到其处理器函数。本实例注册了 ggufmrt(处理器 mrt_gguf_handler,处理 GGUF 格式的 LLM 模型文件),与 pg_model 配合提供库内 AI 模型推理运行时。
| 列名 | 类型 | 描述 |
|---|---|---|
| oid | oid | 行标识符 |
| mrtname | name | 模型运行时名称(如 ggufmrt) |
| mrthandler | regproc | 提供该运行时详细信息的处理器函数;引用 pg_proc.oid |
| mrttype | char | 运行时类型代码(本实例为 a);具体取值以实际库为准 |
备注: 字段已据实际库核对(4 列)。"MRT" 在公开资料中暂无明确释义,据本机数据(ggufmrt / mrt_gguf_handler)暂推断为 Model RunTime(库内 AI 模型运行时)的注册表;具体语义以 Halo 官方说明为准。
pg_querymap
类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:记录查询映射 / 改写规则,将一条(常为 Oracle 风格的)SQL 语句映射为另一条等价语句,用于 Oracle 兼容的 SQL 翻译、语句改写或绑定变量映射。当前库为空(0 行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| queryidhi | int4 | 查询 ID 的高 32 位(与 queryidlo 共同构成 64 位查询标识) |
| queryidlo | int4 | 查询 ID 的低 32 位 |
| original_stmt | text | 原始 SQL 语句文本 |
| mapped_stmt | text | 映射 / 改写后的 SQL 语句文本;无改写时为 null |
| autobind | bool | 是否启用自动绑定变量;可空 |
| varmap | int2[] | 变量映射信息数组;可空 |
| createtime | timestamp with time zone | 该映射的创建时间;可空 |
| isvalid | bool | 该映射是否仍然有效;可空 |
备注: 字段已据实际库核对(8 列)。queryidhi / queryidlo 拼接为 64 位查询 ID(与 PG 内部 query id 的双 32 位表示一致)。
pg_available_extension_versions
类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可安装的扩展的各个具体版本。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | name | 扩展名称 |
| version | text | 版本名称 |
| installed | boolean | 若该扩展的此版本当前已安装则为 true |
| superuser | boolean | 若仅允许超级用户安装此扩展则为 true(另见 trusted) |
| trusted | boolean | 若允许具有适当权限的非超级用户安装此扩展则为 true |
| relocatable | boolean | 若扩展可被迁移到其他模式则为 true |
| schema | name | 此扩展必须安装到的模式名称;若部分或完全可迁移则为 NULL |
| requires | name[] | 前置依赖扩展的名称数组;无依赖则为 NULL |
| comment | text | 来自扩展控制文件的注释字符串 |
备注: 该视图只读;每行对应一个可用的扩展版本。
pg_available_extensions
类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可安装的扩展(按扩展而非版本汇总)。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | name | 扩展名称 |
| default_version | text | 默认版本名称;未指定则为 NULL |
| installed_version | text | 该扩展当前已安装的版本;未安装则为 NULL |
| comment | text | 来自扩展控制文件的注释字符串 |
备注: 该视图只读;已安装的扩展信息见 pg_extension 目录。
pg_backend_memory_contexts
类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前会话所连接的服务器进程的全部内存上下文。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 内存上下文名称 |
| ident | text | 内存上下文的标识信息(截断为 1024 字节) |
| parent | text | 此内存上下文的父上下文名称 |
| level | integer | 在上下文树中距离 TopMemoryContext 的层级 |
| total_bytes | bigint | 此内存上下文分配的总字节数 |
| total_nblocks | bigint | 此内存上下文分配的总块数 |
| free_bytes | bigint | 空闲空间字节数 |
| free_chunks | bigint | 空闲块的总数 |
| used_bytes | bigint | 已使用空间字节数 |
备注: 默认仅超级用户或具有 pg_read_all_stats 角色权限的角色可读;每个内存上下文占一行。
pg_config
类型:系统视图(VIEW),pg_catalog 模式 用途:描述当前已安装 PostgreSQL 版本的编译期配置参数。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 参数名称 |
| setting | text | 参数值 |
备注: 默认仅超级用户可读;提供与 pg_config 客户端应用相同的基本信息,便于外部软件包查找头文件和库。
pg_cursors
类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可用的游标。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 游标名称 |
| statement | text | 声明该游标时提交的原始查询字符串 |
| is_holdable | boolean | 若游标可保持(即在声明它的事务提交后仍可访问)则为 true,否则为 false |
| is_binary | boolean | 若游标以 BINARY 方式声明则为 true,否则为 false |
| is_scrollable | boolean | 若游标可滚动(即允许非顺序检索行)则为 true,否则为 false |
| creation_time | timestamp with time zone | 游标被声明的时间 |
备注: 该视图只读;非保持游标仅存在于其创建事务的持续期内。
pg_file_settings
类型:系统视图(VIEW),pg_catalog 模式 用途:汇总服务器配置文件的内容,并对每个 "name = value" 条目标注是否可成功应用。
| 列名 | 类型 | 描述 |
|---|---|---|
| sourcefile | text | 配置文件的完整路径名 |
| sourceline | integer | 该条目在配置文件中出现的行号 |
| seqno | int4 | 条目被处理的顺序(1..n) |
| name | text | 配置参数名称 |
| setting | text | 要赋予该参数的值 |
| applied | boolean | 若该值可成功应用则为 true |
| error | text | 若不为空,则为指示该条目无法应用原因的错误消息 |
备注: 默认仅超级用户可读;反映配置文件当前内容而非服务器上次应用的状态(后者可参考 pg_settings)。
pg_group
类型:系统视图(VIEW),pg_catalog 模式 用途:为向后兼容而保留,模拟 PostgreSQL 8.1 之前存在的目录,显示用作“组”的角色及其成员。
| 列名 | 类型 | 描述 |
|---|---|---|
| groname | name | 组的名称 |
| grosysid | oid | 此组的 ID |
| grolist | oid[] | 包含此组中各角色 ID 的数组 |
备注: 仅展示被标记为 rolcanlogin 为假的角色(即近似地作为组使用的角色)。
pg_hba_file_rules
类型:系统视图(VIEW),pg_catalog 模式 用途:汇总客户端认证配置文件 pg_hba.conf 的内容,每条非空非注释规则占一行并标注是否可成功应用。
| 列名 | 类型 | 描述 |
|---|---|---|
| rule_number | int4 | 此规则的编号(若有效),否则为 NULL;表示认证时逐条匹配直至命中的顺序 |
| file_name | text | 包含此规则的文件名 |
| line_number | int4 | 此规则在 file_name 中的行号 |
| type | text | 连接类型 |
| database | text[] | 此规则适用的数据库名称列表 |
| user_name | text[] | 此规则适用的用户和组名称列表 |
| address | text | 主机名或 IP 地址,或 all/samehost/samenet 之一;本地连接为 NULL |
| netmask | text | IP 地址掩码;不适用时为 NULL |
| auth_method | text | 认证方法 |
| options | text[] | 为认证方法指定的选项(若有) |
| error | text | 若不为空,则为指示该行无法被处理的错误消息 |
备注: 默认仅超级用户可读;反映文件当前内容而非服务器上次加载的状态。
pg_ident_file_mappings
类型:系统视图(VIEW),pg_catalog 模式 用途:汇总客户端用户名映射配置文件 pg_ident.conf 的内容,每条非空非注释映射占一行并标注是否可成功应用。
| 列名 | 类型 | 描述 |
|---|---|---|
| map_number | int4 | 此映射按优先级排序的编号(若有效),否则为 NULL |
| file_name | text | 包含此映射的文件名 |
| line_number | int4 | 此映射在 file_name 中的行号 |
| map_name | text | 映射名称 |
| sys_name | text | 检测到的客户端系统用户名 |
| pg_username | text | 请求的 PostgreSQL 用户名 |
| error | text | 若不为 NULL,则为指示该行无法被处理的错误消息 |
备注: 默认仅超级用户可读;错误行通常仅有 line_number 和 error 字段有值。
pg_indexes
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个索引的有用信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 包含表和索引的模式名称 |
| tablename | name | 该索引所属表的名称 |
| indexname | name | 索引名称 |
| tablespace | name | 包含该索引的表空间名称(若为数据库默认则为 NULL) |
| indexdef | text | 索引定义(重构出的 CREATE INDEX 命令) |
pg_locks
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库服务器内活动进程所持有或等待的锁的信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| locktype | text | 可锁定对象的类型:relation、extend、frozenid、page、tuple、transactionid、virtualxid、spectoken、object、userlock、advisory 或 applytransaction |
| database | oid | 锁目标所在数据库的 OID;共享对象为 0,事务 ID 为 NULL |
| relation | oid | 锁目标关系的 OID;非关系或其部分时为 NULL |
| page | integer | 锁目标在关系内的页号;非关系页或元组时为 NULL |
| tuple | smallint | 锁目标在页内的元组号;非元组时为 NULL |
| virtualxid | text | 锁目标事务的虚拟 ID;非虚拟事务 ID 时为 NULL |
| transactionid | xid | 锁目标事务的 ID;非事务 ID 时为 NULL |
| classid | oid | 包含锁目标的系统目录 OID;非一般数据库对象时为 NULL |
| objid | oid | 锁目标在其系统目录内的 OID;非一般数据库对象时为 NULL |
| objsubid | smallint | 锁目标的列号(其他一般对象为 0);非一般数据库对象时为 NULL |
| virtualtransaction | text | 持有或等待此锁的事务的虚拟 ID |
| pid | integer | 持有或等待此锁的服务器进程 ID;由预备事务持有时为 NULL |
| mode | text | 此进程持有或期望的锁模式名称 |
| granted | boolean | 若锁已持有则为 true,若在等待则为 false |
| fastpath | boolean | 若锁经快速路径获取则为 true,经主锁表获取则为 false |
| waitstart | timestamp with time zone | 服务器进程开始等待此锁的时间;锁已持有时为 NULL |
备注: 同一可锁定对象可能因多进程或不同锁模式而出现多行;当前无锁的对象不会出现。pid 可与 pg_stat_activity.pid 关联以获取会话详情。
pg_matviews
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个物化视图的有用信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 包含物化视图的模式名称 |
| matviewname | name | 物化视图名称 |
| matviewowner | name | 物化视图所有者名称 |
| tablespace | name | 包含物化视图的表空间名称(若为数据库默认则为 NULL) |
| hasindexes | boolean | 若物化视图具有(或最近曾具有)任何索引则为 true |
| ispopulated | boolean | 若物化视图当前已填充数据则为 true |
| definition | text | 物化视图定义(重构出的 SELECT 查询) |
pg_policies
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个行级安全策略的有用信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 包含该策略所属表的模式名称 |
| tablename | name | 该策略所属表的名称 |
| policyname | name | 策略名称 |
| permissive | text | 该策略是 PERMISSIVE(宽容)还是 RESTRICTIVE(限制) |
| roles | name[] | 此策略适用的角色列表 |
| cmd | text | 该策略适用的命令类型 |
| qual | text | 为该策略适用的查询添加到安全屏障条件的表达式 |
| with_check | text | 为该策略适用的、尝试向表添加行的查询添加到 WITH CHECK 条件的表达式 |
pg_prepared_statements
类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前会话中可用的所有预备语句(prepared statement)。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 预备语句的标识符 |
| statement | text | 客户端创建该预备语句时提交的查询字符串。通过 SQL 的 PREPARE 创建时为该 PREPARE 语句;通过前端/后端协议创建时为预备语句本身的文本 |
| prepare_time | timestamp with time zone | 该预备语句的创建时间 |
| parameter_types | regtype[] | 预备语句的期望参数类型数组(元素为 regtype);将元素转换为 oid 可得到对应类型 OID |
| result_types | regtype[] | 预备语句返回列的类型数组(元素为 regtype)。若不返回结果(如 DML 语句),则为 NULL |
| from_sql | boolean | 若通过 PREPARE SQL 命令创建则为 true;若通过前端/后端协议创建则为 false |
| generic_plans | bigint | 选用通用计划(generic plan)的次数 |
| custom_plans | bigint | 选用自定义计划(custom plan)的次数 |
备注: 每个预备语句一行;新建时加入,释放(如 DEALLOCATE)时移除。该视图只读。
pg_prepared_xacts
类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前已为两阶段提交(two-phase commit)预备好的事务。
| 列名 | 类型 | 描述 |
|---|---|---|
| transaction | xid | 预备事务的数字事务标识符 |
| gid | text | 为该事务分配的全局事务标识符 |
| prepared | timestamp with time zone | 该事务被预备(PREPARE)提交的时间 |
| owner | name | 执行该事务的用户名(引用 pg_authid.rolname) |
| database | name | 该事务所在的数据库名(引用 pg_database.datname) |
备注: 事务提交或回滚后对应行被删除。访问该视图时会短暂锁住内部事务管理数据结构并拷贝一份以保持结果一致。
pg_publication_tables
类型:系统视图(VIEW),pg_catalog 模式 用途:显示逻辑发布(publication)与其所包含表之间的映射关系。
| 列名 | 类型 | 描述 |
|---|---|---|
| pubname | name | 发布名称(引用 pg_publication.pubname) |
| schemaname | name | 表所属的模式名(引用 pg_namespace.nspname) |
| tablename | name | 表名(引用 pg_class.relname) |
| attnames | name[] | 发布中包含的表列名数组(引用 pg_attribute.attname)。若用户未为该表指定列清单,则包含该表的全部列 |
| rowfilter | text | 该表在发布中的行过滤条件表达式 |
备注: 与底层目录 pg_publication_rel 不同,该视图会展开 FOR ALL TABLES 与 FOR TABLES IN SCHEMA 形式定义的发布,使每个符合条件的表各占一行。
pg_replication_origin_status
类型:系统视图(VIEW),pg_catalog 模式 用途:显示各复制源(replication origin)的重放进度信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| local_id | oid | 内部节点标识符(引用 pg_replication_origin.roident) |
| external_id | text | 外部节点标识符(引用 pg_replication_origin.roname) |
| remote_lsn | pg_lsn | 源节点上已复制到的 LSN 位置 |
| local_lsn | pg_lsn | 本节点上对应 remote_lsn 已被重放到的本地 LSN。用于异步提交时在持久化数据前先刷新提交记录 |
pg_replication_slots
类型:系统视图(VIEW),pg_catalog 模式 用途:列出数据库集群上当前存在的所有复制槽(replication slot)及其当前状态。
| 列名 | 类型 | 描述 |
|---|---|---|
| slot_name | name | 复制槽在全集群范围内唯一的标识符 |
| plugin | name | 该逻辑槽所用输出插件所在共享对象的基名;物理槽为 NULL |
| slot_type | text | 槽类型:physical 或 logical |
| datoid | oid | 该槽关联的数据库 OID(引用 pg_database.oid);仅逻辑槽有关联数据库,否则为 NULL |
| database | name | 该槽关联的数据库名(引用 pg_database.datname);仅逻辑槽有,否则为 NULL |
| temporary | boolean | 是否为临时复制槽。临时槽不写入磁盘,出错或会话结束时自动删除 |
| active | boolean | 该槽当前是否正被使用 |
| active_pid | integer | 当前正使用该槽的会话进程 PID;未激活时为 NULL |
| xmin | xid | 该槽需要数据库保留的最老事务。VACUUM 不能移除任何更晚事务删除的元组 |
| catalog_xmin | xid | 该槽需要数据库保留的影响系统目录的最老事务 |
| restart_lsn | pg_lsn | 该槽消费者可能仍需要的最老 WAL 的 LSN。若从未预留则为 NULL |
| confirmed_flush_lsn | pg_lsn | 逻辑槽消费者已确认接收到的 LSN。物理槽为 NULL |
| wal_status | text | 该槽所占用 WAL 文件的可用性。取值:reserved(在 max_wal_size 内)、extended(超过 max_wal_size 但仍保留)、unreserved(不再保留所需 WAL,下次 checkpoint 将移除部分)、lost(槽已不可用) |
| safe_wal_size | bigint | 在该槽不致进入 lost 状态前可再写入的 WAL 字节数。lost 槽或 max_slot_wal_keep_size 为 -1 时为 NULL |
| two_phase | boolean | 是否启用对该槽的已预备事务进行解码。物理槽恒为 false |
| conflicting | boolean | 该逻辑槽是否与恢复冲突而被失效。物理槽恒为 NULL |
pg_roles
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库角色的相关信息,是 pg_authid 的公开可读视图(口令字段被置空)。
| 列名 | 类型 | 描述 |
|---|---|---|
| rolname | name | 角色名 |
| rolsuper | boolean | 该角色是否拥有超级用户权限 |
| rolinherit | boolean | 该角色是否自动继承其所成员角色的权限 |
| rolcreaterole | boolean | 该角色是否可以创建更多角色 |
| rolcreatedb | boolean | 该角色是否可以创建数据库 |
| rolcanlogin | boolean | 该角色是否可以登录(即可作为会话初始授权标识符) |
| rolreplication | boolean | 该角色是否为复制角色,可发起复制连接并创建/删除复制槽 |
| rolconnlimit | integer | 对于可登录角色,其最大并发连接数;-1 表示无限制 |
| rolpassword | text | 非口令内容(始终读为 ********) |
| rolvaliduntil | timestamp with time zone | 口令过期时间(仅用于口令认证);无过期则为 NULL |
| rolbypassrls | boolean | 该角色是否绕过所有行级安全(RLS)策略 |
| rolconfig | text[] | 该角色针对运行时配置变量的角色级默认值 |
| oid | oid | 角色 ID(引用 pg_authid.oid) |
pg_rules
类型:系统视图(VIEW),pg_catalog 模式 用途:提供查询重写规则(rewrite rule)的相关信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 表所属的模式名(引用 pg_namespace.nspname) |
| tablename | name | 规则所作用的表名(引用 pg_class.relname) |
| rulename | name | 规则名(引用 pg_rewrite.rulename) |
| definition | text | 规则的定义(重构出的创建命令) |
备注: 该视图不包含视图和物化视图的 ON SELECT 规则,这些可在 pg_views 和 pg_matviews 中查看。
pg_seclabels
类型:系统视图(VIEW),pg_catalog 模式 用途:提供安全标签(security label)信息,是 pg_seclabel 目录更易查询的版本。
| 列名 | 类型 | 描述 |
|---|---|---|
| objoid | oid | 该安全标签所附属对象的 OID |
| classoid | oid | 该对象所在系统目录的 OID(引用 pg_class.oid) |
| objsubid | integer | 对于表列上的安全标签,这是列号(objoid 与 classoid 指代表本身);其他对象类型则为 0 |
| objtype | text | 该标签所适用对象的类型(文本形式) |
| objnamespace | oid | 该对象所在命名空间的 OID(引用 pg_namespace.oid),不适用时为 NULL |
| objname | text | 该标签所适用对象的名称(文本形式) |
| provider | text | 与该标签关联的标签提供方(引用 pg_seclabel.provider) |
| label | text | 应用到该对象的安全标签(引用 pg_seclabel.label) |
pg_sequences
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个序列的相关信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 序列所属的模式名(引用 pg_namespace.nspname) |
| sequencename | name | 序列名(引用 pg_class.relname) |
| sequenceowner | name | 序列的所有者名(引用 pg_authid.rolname) |
| data_type | regtype | 序列的数据类型(引用 pg_type.oid) |
| start_value | bigint | 序列的起始值 |
| min_value | bigint | 序列的最小值 |
| max_value | bigint | 序列的最大值 |
| increment_by | bigint | 序列的增量值 |
| cycle | boolean | 序列是否循环 |
| cache_size | bigint | 序列的缓存大小 |
| last_value | bigint | 最近写入磁盘的序列值。若使用缓存,该值可能大于已分配出的最后一个值 |
备注: 当下列任一条件成立时,last_value 读取为 NULL:序列尚未被读取过;当前用户对该序列无 USAGE 或 SELECT 权限;序列为 unlogged 且当前服务器为备库。
pg_settings
类型:系统视图(VIEW),pg_catalog 模式 用途:提供服务器运行时参数的访问,是 SHOW/SET 命令的另一种接口,并可查看 SHOW 无法直接得到的取值范围等信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 运行时配置参数名 |
| setting | text | 该参数的当前值 |
| unit | text | 该参数的隐式单位 |
| category | text | 该参数所属的逻辑分组 |
| short_desc | text | 该参数的简要描述 |
| extra_desc | text | 该参数更详细的补充描述 |
| context | text | 设置该参数值所需的上下文(如 internal、postmaster、sighup、superuser、user 等) |
| vartype | text | 参数类型(bool、enum、integer、real 或 string) |
| source | text | 当前参数值的来源 |
| min_val | text | 参数允许的最小值(非数值类型为 NULL) |
| max_val | text | 参数允许的最大值(非数值类型为 NULL) |
| enumvals | text[] | 枚举型参数的允许取值(非枚举类型为 NULL) |
| boot_val | text | 未另行设置时服务器启动所采用的参数值 |
| reset_val | text | 当前会话执行 RESET 后该参数将恢复为的值 |
| sourcefile | text | 当前值所在的配置文件(来自非配置文件来源、或查询者既非超级用户也无 pg_read_all_settings 权限时为 NULL) |
| sourceline | integer | 当前值在配置文件中所处的行号(同上为 NULL 的条件) |
| pending_restart | boolean | 若该值已在配置文件中被修改但需要重启服务器才生效则为 true,否则为 false |
备注: 该视图不可 INSERT/DELETE,但可 UPDATE(等价于对该参数执行 SET,仅作用于当前会话)。
pg_shadow
类型:系统视图(VIEW),pg_catalog 模式 用途:为向后兼容而保留,显示所有可登录角色(rolcanlogin)的属性。
| 列名 | 类型 | 描述 |
|---|---|---|
| usename | name | 用户名(引用 pg_authid.rolname) |
| usesysid | oid | 该用户的 ID(引用 pg_authid.oid) |
| usecreatedb | boolean | 该用户能否创建数据库 |
| usesuper | boolean | 该用户是否为超级用户 |
| userepl | boolean | 该用户能否发起流复制并使系统进入/退出备份模式 |
| usebypassrls | boolean | 该用户是否绕过所有行级安全(RLS)策略 |
| passwd | text | 口令(可能已加密);无则为 NULL |
| valuntil | timestamp with time zone | 口令过期时间(仅用于口令认证) |
| useconfig | text[] | 运行时配置变量的会话默认值 |
备注: 因包含口令,该视图不应对 public 可读;pg_user 是在其上屏蔽口令字段后的公开可读视图。
pg_shmem_allocations
类型:系统视图(VIEW),pg_catalog 模式 用途:显示服务器主共享内存段中的分配情况。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 共享内存分配的名称。未使用内存为 NULL;匿名分配为 |
| off | bigint | 该分配起始处的偏移量。匿名分配为 NULL(其细节未知) |
| size | bigint | 该分配的字节大小 |
| allocated_size | bigint | 该分配包含填充(padding)在内的字节大小。对匿名分配及空闲内存,该列与 size 相等 |
备注: 该视图不包含通过动态共享内存(dynamic shared memory)基础设施分配的内存。默认仅超级用户或具有 pg_read_all_stats 权限的角色可读。
pg_stat_activity
类型:系统视图(VIEW),pg_catalog 模式 用途:每个服务器进程一行,显示与该进程当前活动(如状态、正在执行的查询)相关的信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| datid | oid | 该后端连接的数据库 OID |
| datname | name | 该后端连接的数据库名 |
| pid | integer | 该后端的进程 ID |
| leader_pid | integer | 若本进程为并行查询 worker,则为并行组 leader 的 PID;若为并行 apply worker,则为 leader apply worker 的 PID。NULL 表示本进程是 leader 或不参与任何并行操作 |
| usesysid | oid | 登录该后端的用户 OID |
| usename | name | 登录该后端的用户名 |
| application_name | text | 连接到该后端的应用名 |
| client_addr | inet | 连接客户端的 IP 地址。为 NULL 表示经 Unix 套接字连接或为内部进程(如 autovacuum) |
| client_hostname | text | 客户端主机名(由 client_addr 反向 DNS 得到)。仅启用 log_hostname 且为 IP 连接时非 NULL |
| client_port | integer | 客户端用于通信的 TCP 端口号;使用 Unix 套接字时为 -1;内部进程时为 NULL |
| backend_start | timestamp with time zone | 该进程的启动时间。对客户端后端即客户端连接服务器的时间 |
| xact_start | timestamp with time zone | 当前事务开始时间;无活动事务时为 NULL。若当前查询是该事务第一条,则等于 query_start |
| query_start | timestamp with time zone | 当前活动查询的开始时间;若 state 非 active,则为上一条查询的开始时间 |
| state_change | timestamp with time zone | state 最近一次变化的时间 |
| wait_event_type | text | 后端正在等待的事件类型(如 Lock、LWLock、IO 等);无等待时为 NULL |
| wait_event | text | 后端正在等待时的事件名称;否则为 NULL |
| state | text | 后端当前总体状态:active、idle、idle in transaction、idle in transaction (aborted)、fastpath function call、disabled |
| backend_xid | xid | 该后端的顶层事务标识符(若有) |
| backend_xmin | xid | 该后端当前的 xmin 水平线 |
| query_id | bigint | 该后端最近一次查询的标识符。默认不计算查询 ID,除非启用 compute_query_id 或配置了相关第三方模块,否则为 NULL |
| query | text | 该后端最近一次查询的文本。默认在 1024 字节处截断(由 track_activity_query_size 控制) |
| backend_type | text | 当前后端类型(如 client backend、autovacuum worker、background writer、walsender、walwriter、checkpointer 等) |
备注: 仅超级用户及具有 pg_read_all_stats 角色权限的角色可查看全部会话的全部信息;普通用户仅能完整查看自身所属角色的会话,对其他会话的多数列将为 NULL。wait_event 与 state 相互独立:active 状态下也可能正在等待某事件。
pg_stat_archiver
类型:系统视图(VIEW),pg_catalog 模式 用途:报告集群 WAL 归档进程的活动统计(仅一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| archived_count | bigint | 已成功归档的 WAL 文件数量 |
| last_archived_wal | text | 最近一次成功归档的 WAL 文件名 |
| last_archived_time | timestamp with time zone | 最近一次成功归档的时间 |
| failed_count | bigint | 归档 WAL 文件失败的次数 |
| last_failed_wal | text | 最近一次失败的归档操作所对应的 WAL 文件名 |
| last_failed_time | timestamp with time zone | 最近一次失败归档操作的时间 |
| stats_reset | timestamp with time zone | 这些统计信息上次被重置的时间 |
备注: WAL 文件通常按从旧到新的顺序归档,但在备用提升(promote)或崩溃恢复等特殊情况下并不保证;因此不能假定所有早于 last_archived_wal 的文件都已成功归档。
pg_stat_bgwriter
类型:系统视图(VIEW),pg_catalog 模式 用途:报告集群后台写进程(background writer)及检查点相关的全局统计(仅一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| checkpoints_timed | bigint | 已执行的定时(计划内)检查点数量 |
| checkpoints_req | bigint | 已执行的请求(非定时)检查点数量 |
| checkpoint_write_time | double precision | 检查点处理中将文件写入磁盘所花费的总时间(毫秒) |
| checkpoint_sync_time | double precision | 检查点处理中将文件同步(fsync)到磁盘所花费的总时间(毫秒) |
| buffers_checkpoint | bigint | 在检查点期间写入的缓冲区数量 |
| buffers_clean | bigint | 由后台写进程写入的缓冲区数量 |
| maxwritten_clean | bigint | 后台写进程因一次扫描写出过多缓冲区而提前停止扫描的次数 |
| buffers_backend | bigint | 由后端进程直接写入的缓冲区数量 |
| buffers_backend_fsync | bigint | 后端进程被迫自行执行 fsync 的次数 |
| buffers_alloc | bigint | 已分配的缓冲区数量 |
| stats_reset | timestamp with time zone | 这些统计信息上次被重置的时间 |
pg_stat_database
类型:系统视图(VIEW),pg_catalog 模式 用途:按数据库显示数据库范围的统计(每个数据库一行,并额外包含一行共享对象)。
| 列名 | 类型 | 描述 |
|---|---|---|
| datid | oid | 该数据库的 OID;对共享关系而言为 0 |
| datname | name | 该数据库的名称;对共享对象为 NULL |
| numbackends | integer | 当前连接到该数据库的后端进程数(共享对象为 NULL)。此列反映当前状态,其余列均为自上次重置以来的累计值 |
| xact_commit | bigint | 该数据库中已提交的事务数 |
| xact_rollback | bigint | 该数据库中已回滚的事务数 |
| blks_read | bigint | 该数据库从磁盘读取的磁盘块数 |
| blks_hit | bigint | 该数据库在缓冲区缓存中命中、从而无需读取磁盘的次数(仅含 PostgreSQL 缓冲缓存命中,不含操作系统文件系统缓存) |
| tup_returned | bigint | 顺序扫描返回的活行数与索引扫描返回的索引项数 |
| tup_fetched | bigint | 索引扫描取出的活行数 |
| tup_inserted | bigint | 该数据库中查询插入的行数 |
| tup_updated | bigint | 该数据库中查询更新的行数 |
| tup_deleted | bigint | 该数据库中查询删除的行数 |
| conflicts | bigint | 该数据库中因与恢复冲突而被取消的查询数(仅在备用服务器上发生;详见 pg_stat_database_conflicts) |
| temp_files | bigint | 该数据库中查询创建的临时文件数(无论出于何种原因创建,且不受 log_temp_files 设置影响) |
| temp_bytes | bigint | 该数据库中查询写入临时文件的数据总量(字节) |
| deadlocks | bigint | 该数据库中检测到的死锁数 |
| checksum_failures | bigint | 该数据库(或共享对象)中检测到的数据页校验和失败次数;未启用数据校验和时为 NULL |
| checksum_last_failure | timestamp with time zone | 该数据库(或共享对象)中最近一次检测到数据页校验和失败的时间;未启用时为 NULL |
| blk_read_time | double precision | 该数据库后端读取数据文件块所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| blk_write_time | double precision | 该数据库后端写入数据文件块所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| session_time | double precision | 该数据库中会话花费的总时间(毫秒)。仅在会话状态变化时更新,长时间空闲的会话其空闲时间不会被计入 |
| active_time | double precision | 该数据库中执行 SQL 语句所花费的时间(毫秒,对应 pg_stat_activity 中的 active 与 fastpath function call 状态) |
| idle_in_transaction_time | double precision | 该数据库中事务内处于空闲状态的时间(毫秒,对应 idle in transaction 与 idle in transaction (aborted) 状态) |
| sessions | bigint | 建立到该数据库的会话总数 |
| sessions_abandoned | bigint | 因与客户端连接丢失而终止的会话数 |
| sessions_fatal | bigint | 因致命错误而终止的会话数 |
| sessions_killed | bigint | 因管理员干预而终止的会话数 |
| stats_reset | timestamp with time zone | 这些统计信息上次被重置的时间 |
pg_stat_database_conflicts
类型:系统视图(VIEW),pg_catalog 模式 用途:按数据库显示备用服务器上因与恢复冲突而被取消的查询统计(每个数据库一行,仅备用服务器有数据)。
| 列名 | 类型 | 描述 |
|---|---|---|
| datid | oid | 数据库的 OID |
| datname | name | 该数据库的名称 |
| confl_tablespace | bigint | 该数据库中因删除表空间而被取消的查询数 |
| confl_lock | bigint | 该数据库中因锁超时而被取消的查询数 |
| confl_snapshot | bigint | 该数据库中因快照过旧而被取消的查询数 |
| confl_bufferpin | bigint | 该数据库中因缓冲区被占用(pinned)而被取消的查询数 |
| confl_deadlock | bigint | 该数据库中因死锁而被取消的查询数 |
| confl_active_logicalslot | bigint | 该数据库中因快照过旧或主库 wal_level 过低而被取消的逻辑复制槽使用次数 |
备注: 该视图仅在备用服务器上有意义,因为主服务器上不会发生恢复冲突。
pg_stat_gssapi
类型:系统视图(VIEW),pg_catalog 模式 用途:按连接显示 GSSAPI 认证与加密使用情况(每个后端/WAL 发送进程一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端进程的进程 ID |
| gss_authenticated | boolean | 若该连接使用了 GSSAPI 认证则为真 |
| principal | text | 用于认证该连接的 principal;未使用 GSSAPI 认证时为 NULL(若长于 NAMEDATALEN,标准构建为 64 字符,则被截断) |
| encrypted | boolean | 若该连接上启用了 GSSAPI 加密则为真 |
| credentials_delegated | boolean | 若该连接上发生了 GSSAPI 凭据委派则为真 |
备注: 可通过 pid 列与 pg_stat_activity 或 pg_stat_replication 联接以获取连接的更多细节。
pg_stat_io
类型:系统视图(VIEW),pg_catalog 模式 用途:按后端类型、I/O 上下文与目标对象组合显示集群范围的 I/O 统计(每个有意义的组合一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| backend_type | text | 后端类型(如 background writer、autovacuum worker 等,详见 pg_stat_activity)。某些类型不累计 I/O 统计,不会出现在视图中 |
| object | text | I/O 操作的目标对象;取值为 relation(永久关系)或 temp relation(临时关系) |
| context | text | I/O 操作的上下文;取值为 normal(默认)、vacuum(在共享缓冲区之外清理/分析永久关系)、bulkread(如大表顺序扫描等大批量读)、bulkwrite(如 COPY 等大批量写) |
| reads | bigint | 读操作次数,每次大小为 op_bytes |
| read_time | double precision | 读操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| writes | bigint | 写操作次数,每次大小为 op_bytes |
| write_time | double precision | 写操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| writebacks | bigint | 进程请求内核写出(writeback)到持久存储的 op_bytes 大小单元数 |
| writeback_time | double precision | writeback 操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零),包含排队与实际写出的时间 |
| extends | bigint | 关系扩展(extend)操作次数,每次大小为 op_bytes |
| extend_time | double precision | 扩展操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| op_bytes | bigint | 每次 I/O 读、写或扩展单元的字节数;关系数据默认按 BLCKSZ(构建期参数,默认 8192)为单位 |
| hits | bigint | 请求的块在共享缓冲区中被命中的次数 |
| evictions | bigint | 为腾出缓冲区供他用而将块从共享或本地缓冲区写出的次数。normal 上下文下指被替换;bulkwrite/bulkread/vacuum 上下文下指为加入环形缓冲区而从共享缓冲区移除 |
| reuses | bigint | 在 bulkread/bulkwrite/vacuum 上下文中复用共享缓冲区之外环形缓冲区里已有缓冲区的次数 |
| fsyncs | bigint | fsync 调用次数;仅在 normal 上下文跟踪 |
| fsync_time | double precision | fsync 操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零) |
| stats_reset | timestamp with time zone | 这些统计信息上次被重置的时间 |
备注: 当某后端类型不会在某对象或某上下文执行某种 I/O 时,对应单元为 NULL(如临时表不会被 fsync,后台写进程不做读操作)。evictions 偏高可提示增大 shared_buffers;客户端后端出现大量 fsync 或写操作可能提示共享缓冲区或检查点配置不当。
pg_stat_progress_analyze
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 ANALYZE 的后端(含 autovacuum worker)显示当前进度(每个后端一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端进程的进程 ID |
| datid | oid | 该后端所连接数据库的 OID |
| datname | name | 该后端所连接数据库的名称 |
| relid | oid | 正在分析的表的 OID |
| phase | text | 当前处理阶段(如 initializing、acquiring sample rows、acquiring inherited sample rows、computing statistics、computing extended statistics、finalizing analyze) |
| sample_blks_total | bigint | 将要采样的堆块总数 |
| sample_blks_scanned | bigint | 已扫描的堆块数 |
| ext_stats_total | bigint | 扩展统计对象的总数 |
| ext_stats_computed | bigint | 已计算的扩展统计数(仅在 computing extended statistics 阶段递增) |
| child_tables_total | bigint | 子表数量 |
| child_tables_done | bigint | 已扫描的子表数(仅在 acquiring inherited sample rows 阶段递增) |
| current_child_table_relid | oid | 当前正在扫描的子表 OID(仅在 acquiring inherited sample rows 阶段有效) |
备注: 对分区表执行 ANALYZE 时会递归分析其分区,进度会先报告父表(收集继承统计),再依次报告各分区。
pg_stat_progress_basebackup
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在执行 BASE_BACKUP 复制命令并流式传输基础备份的 WAL 发送进程显示进度(每个 WAL 发送进程一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | WAL 发送进程的进程 ID |
| phase | text | 当前处理阶段(如 initializing、waiting for checkpoint to finish、estimating backup size、streaming database files、waiting for wal archiving to finish、transferring wal files) |
| backup_total | bigint | 将要流式传输的数据总量(估算值,在 streaming database files 阶段开始时报告;在 pg_basebackup 用 --no-estimate-size 禁用估算时为 NULL) |
| backup_streamed | bigint | 已流式传输的数据量(仅在 streaming database files 或 transferring wal files 阶段递增) |
| tablespaces_total | bigint | 将要流式传输的表空间总数 |
| tablespaces_streamed | bigint | 已流式传输的表空间数(仅在 streaming database files 阶段递增) |
备注: backup_total 仅为估算值,备份期间数据库可能变化;当已传输量超过估算总量后,该列将与 backup_streamed 保持一致。
pg_stat_progress_cluster
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 CLUSTER 或 VACUUM FULL 的后端显示当前进度(每个后端一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端进程的进程 ID |
| datid | oid | 该后端所连接数据库的 OID |
| datname | name | 该后端所连接数据库的名称 |
| relid | oid | 正在进行聚簇(cluster)的表的 OID |
| command | text | 正在运行的命令,取值为 CLUSTER 或 VACUUM FULL |
| phase | text | 当前处理阶段(如 initializing、seq scanning heap、index scanning heap、sorting tuples、writing new heap、swapping relation files、rebuilding index、performing final cleanup) |
| cluster_index_relid | oid | 若使用索引扫描聚簇,则为所用索引的 OID;否则为零 |
| heap_tuples_scanned | bigint | 已扫描的堆元组数(仅在 seq scanning heap、index scanning heap 或 writing new heap 阶段递增) |
| heap_tuples_written | bigint | 已写入的堆元组数(仅在 seq scanning heap、index scanning heap 或 writing new heap 阶段递增) |
| heap_blks_total | bigint | 表中堆块的总数(在 seq scanning heap 阶段开始时报告) |
| heap_blks_scanned | bigint | 已扫描的堆块数(仅在 seq scanning heap 阶段递增) |
| index_rebuild_count | bigint | 已重建的索引数(仅在 rebuilding index 阶段递增) |
备注: VACUUM FULL 也通过此视图报告进度,因其与 CLUSTER 一样会重写表;普通 VACUUM 的进度则通过 pg_stat_progress_vacuum 报告。
pg_stat_progress_copy
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 COPY 的后端显示当前进度(每个后端一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端进程的进程 ID |
| datid | oid | 该后端所连接数据库的 OID |
| datname | name | 该后端所连接数据库的名称 |
| relid | oid | 执行 COPY 的目标表 OID;若从 SELECT 查询复制则为 0 |
| command | text | 正在运行的命令:COPY FROM 或 COPY TO |
| type | text | 数据读出或写入的 I/O 类型:FILE、PROGRAM、PIPE(用于 COPY FROM STDIN/COPY TO STDOUT)或 CALLBACK(例如逻辑复制初始表同步时使用) |
| bytes_processed | bigint | COPY 命令已处理的字节数 |
| bytes_total | bigint | COPY FROM 源文件的大小(字节);不可用时为 0 |
| tuples_processed | bigint | COPY 命令已处理的元组数 |
| tuples_excluded | bigint | 因被 COPY 语句的 WHERE 子句排除而未处理的元组数 |
pg_stat_progress_create_index
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 CREATE INDEX 或 REINDEX 的后端显示当前进度(每个后端一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 创建索引的后端进程 ID |
| datid | oid | 该后端所连接数据库的 OID |
| datname | name | 该后端所连接数据库的名称 |
| relid | oid | 正在创建索引的目标表的 OID |
| index_relid | oid | 正在创建或重建的索引的 OID;非并发 CREATE INDEX 期间为 0 |
| command | text | 具体命令类型:CREATE INDEX、CREATE INDEX CONCURRENTLY、REINDEX 或 REINDEX CONCURRENTLY |
| phase | text | 当前索引创建的处理阶段(如 initializing、waiting for writers before build、building index、waiting for writers before validation、index validation: scanning index、index validation: sorting tuples、index validation: scanning table、waiting for old snapshots、waiting for readers before marking dead、waiting for readers before dropping) |
| lockers_total | bigint | 适用时需等待的锁持有者总数 |
| lockers_done | bigint | 已等待完成的锁持有者数量 |
| current_locker_pid | bigint | 当前正在等待的锁持有者进程 ID |
| blocks_total | bigint | 当前阶段需要处理的块总数 |
| blocks_done | bigint | 当前阶段已处理的块数 |
| tuples_total | bigint | 当前阶段需要处理的元组总数 |
| tuples_done | bigint | 当前阶段已处理的元组数 |
| partitions_total | bigint | 将要创建或附加索引的分区总数(含直接与间接分区);REINDEX 或非分区索引时为 0 |
| partitions_done | bigint | 已创建或附加索引的分区数(含直接与间接分区);REINDEX 或非分区索引时为 0 |
pg_stat_progress_vacuum
类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 VACUUM 的后端(含 autovacuum worker)显示当前进度(每个后端一行)。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端进程的进程 ID |
| datid | oid | 该后端所连接数据库的 OID |
| datname | name | 该后端所连接数据库的名称 |
| relid | oid | 正在清理(vacuum)的表的 OID |
| phase | text | 当前清理的处理阶段(如 initializing、scanning heap、vacuuming indexes、vacuuming heap、cleaning up indexes、truncating heap、performing final cleanup) |
| heap_blks_total | bigint | 表中堆块的总数(在扫描开始时报告;之后新增的块不会被访问) |
| heap_blks_scanned | bigint | 已扫描的堆块数。借助可见性图优化,部分块会被跳过;跳过的块也计入此总数,扫描完成后等于 heap_blks_total(仅在 scanning heap 阶段递增) |
| heap_blks_vacuumed | bigint | 已清理的堆块数;表有索引时仅在 vacuuming heap 阶段递增,不含死元组的块会被跳过,可能大幅跳跃 |
| index_vacuum_count | bigint | 已完成的索引清理(index vacuum)循环次数 |
| max_dead_tuples | bigint | 在需要进行一次索引清理循环之前可存储的死元组数(基于 maintenance_work_mem) |
| num_dead_tuples | bigint | 自上次索引清理循环以来收集到的死元组数 |
备注: VACUUM FULL 不通过此视图报告进度,而是通过 pg_stat_progress_cluster 报告,因为 VACUUM FULL 会重写表。
pg_stat_recovery_prefetch
类型:系统视图(VIEW),pg_catalog 模式 用途:显示备库在恢复(recovery)期间对 WAL 引用块进行预取(prefetch)的统计信息,用于评估 recovery_prefetch 的效果;该视图始终只有一行。
| 列名 | 类型 | 描述 |
|---|---|---|
| stats_reset | timestamp with time zone | 这些统计信息上次被重置的时间 |
| prefetch | bigint | 恢复期间被预取的块数 |
| hit | bigint | 因块已在缓冲池中而未预取的块数 |
| skip_init | bigint | 因块会在内存中被零初始化而未预取的块数 |
| skip_new | bigint | 因块在磁盘上尚不存在(新页)而未预取的块数 |
| skip_fpw | bigint | 因 WAL 记录中已包含整页镜像(full-page image)而未预取的块数 |
| skip_rep | bigint | 因块近期已被预取过而未预取的块数 |
| wal_distance | integer | 预取器当前在 WAL 中领先的字节数 |
| block_distance | integer | 预取器当前领先的块数 |
| io_depth | integer | 当前正在进行的 I/O 请求数 |
备注: WAL 预取默认关闭,需将 recovery_prefetch 设为 on 才启用;仅在提供有效 posix_fadvise 的系统上可用。该视图于 PostgreSQL 15 引入,PG16 中保留。
pg_stat_replication
类型:系统视图(VIEW),pg_catalog 模式 用途:每个 WAL sender 进程一行,显示与该发送进程连接的备库之间的复制统计信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | WAL sender 进程的进程 ID |
| usesysid | oid | 登录该 WAL sender 进程的用户的 OID |
| usename | name | 登录该 WAL sender 进程的用户名 |
| application_name | text | 连接到该 WAL sender 的应用程序名称 |
| client_addr | inet | 连接到该 WAL sender 的客户端 IP 地址;为空表示客户端通过 Unix 套接字连接 |
| client_hostname | text | 客户端主机名(由 client_addr 反向 DNS 解析得到);仅在 IP 连接且启用 log_hostname 时非空 |
| client_port | integer | 客户端与该 WAL sender 通信所用的 TCP 端口号;使用 Unix 套接字时为 -1 |
| backend_start | timestamp with time zone | 该进程启动时间,即客户端连接到该 WAL sender 的时间 |
| backend_xmin | xid | 由 hot_standby_feedback 报告的该备库的 xmin 可见性边界 |
| state | text | 当前 WAL sender 状态,取值:startup、catchup、streaming、backup、stopping |
| sent_lsn | pg_lsn | 在此连接上最后发送的预写日志位置 |
| write_lsn | pg_lsn | 该备库写入磁盘的最后预写日志位置 |
| flush_lsn | pg_lsn | 该备库刷写到磁盘的最后预写日志位置 |
| replay_lsn | pg_lsn | 该备库回放到数据库的最后预写日志位置 |
| write_lag | interval | 本地刷写最近 WAL 与收到备库已写入(尚未刷写或应用)通知之间经过的时间 |
| flush_lag | interval | 本地刷写最近 WAL 与收到备库已写入并刷写(尚未应用)通知之间经过的时间 |
| replay_lag | interval | 本地刷写最近 WAL 与收到备库已写入、刷写并应用通知之间经过的时间 |
| sync_priority | integer | 在基于优先级的同步复制中该备库被选为同步备库的优先级;基于法定人数(quorum)的同步复制中无意义 |
| sync_state | text | 该备库的同步状态,取值:async、potential、sync、quorum |
| reply_time | timestamp with time zone | 收到来自备库的最后回复消息的发送时间 |
备注: lag 列度量的是最近 WAL 被写入/刷写/回放并被发送方知晓所需的时间,仅在物理复制中自动工作;仅列出直连备库,不包含下游级联备库。备库完全追上后短时间内仍显示上次值,随后变为 NULL。
pg_stat_replication_slots
类型:系统视图(VIEW),pg_catalog 模式 用途:每个逻辑复制槽一行,显示该复制槽的使用统计信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| slot_name | text | 复制槽的唯一集群级标识符 |
| spill_txns | bigint | 当逻辑解码从 WAL 解码变更所耗内存超过 logical_decoding_work_mem 时被溢写到磁盘的事务数;顶层事务和子事务均计数 |
| spill_count | bigint | 该槽解码 WAL 变更时事务被溢写到磁盘的次数;每次溢出都会计数,同一事务可能被多次溢出 |
| spill_bytes | bigint | 该槽解码 WAL 变更时溢写到磁盘的已解码事务数据量(字节);用于评估逻辑解码期间的 I/O 并辅助调整 logical_decoding_work_mem |
| stream_txns | bigint | 该槽解码变更所耗内存超过 logical_decoding_work_mem 后流式发送到解码输出插件的进行中事务数;仅对顶层事务计数(子事务不能独立流式传输) |
| stream_count | bigint | 该槽解码 WAL 变更时进行中事务被流式发送到解码输出插件的次数;每次流式传输都计数,同一事务可能被多次流式传输 |
| stream_bytes | bigint | 该槽解码 WAL 变更时为流式传输进行中事务而发送到解码输出插件的已解码事务数据量(字节);用于辅助调整 logical_decoding_work_mem |
| total_txns | bigint | 该槽解码并发送到解码输出插件的事务数;仅计顶层事务(不包含子事务),含被流式传输和/或溢写的事务 |
| total_bytes | bigint | 该槽解码 WAL 变更时为发送到解码输出插件而解码的事务数据量(字节);含被流式传输和/或溢写的数据 |
| stats_reset | timestamp with time zone | 该统计信息上次被重置的时间 |
备注: 各 spill/stream 计数器(spill_txns、spill_count、spill_bytes、stream_txns、stream_count、stream_bytes)在 PG 15 引入;可结合 spill/stream 相关字段调整 logical_decoding_work_mem 以减少 I/O。
pg_stat_slru
类型:系统视图(VIEW),pg_catalog 模式 用途:每个 SLRU(简单最近最少使用)缓存一行,显示对该缓存页面的访问统计。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | SLRU 的名称 |
| blks_zeroed | bigint | 初始化期间被清零的块数 |
| blks_hit | bigint | 磁盘块已在 SLRU 中命中、因此无需读盘的次数(仅统计 SLRU 命中,不含操作系统文件系统缓存) |
| blks_read | bigint | 该 SLRU 从磁盘读取的块数 |
| blks_written | bigint | 该 SLRU 写入磁盘的块数 |
| blks_exists | bigint | 该 SLRU 中检查某块是否存在的次数 |
| flushes | bigint | 该 SLRU 刷写脏数据的次数 |
| truncates | bigint | 该 SLRU 执行截断(truncate)的次数 |
| stats_reset | timestamp with time zone | 该统计信息上次被重置的时间 |
备注: SLRU 用于访问 clog(事务状态)、commit timestamp、multixact、notify、serial、subtrans 等磁盘信息。
pg_stat_ssl
类型:系统视图(VIEW),pg_catalog 模式 用途:每个后端或 WAL sender 进程一行,显示该连接上 SSL 的使用信息;可与 pg_stat_activity 或 pg_stat_replication 通过 pid 列关联。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | 后端或 WAL sender 进程的进程 ID |
| ssl | boolean | 该连接是否使用了 SSL |
| version | text | 正在使用的 SSL 版本;该连接未使用 SSL 时为 NULL |
| cipher | text | 正在使用的 SSL 加密套件名称;未使用 SSL 时为 NULL |
| bits | integer | 所用加密算法的位数;未使用 SSL 时为 NULL |
| client_dn | text | 客户端证书中的 DN(标识名)字段;未提供客户端证书或未使用 SSL 时为 NULL。该字段在 DN 超过 NAMEDATALEN(标准构建为 64 字符)时会被截断 |
| client_serial | numeric | 客户端证书的序列号;未提供客户端证书或未使用 SSL 时为 NULL。证书序列号与颁发者组合可唯一标识一张证书(除非颁发者错误地复用序列号) |
| issuer_dn | text | 客户端证书颁发者的 DN;未提供客户端证书或未使用 SSL 时为 NULL。同 client_dn 一样会被截断 |
备注: 仅当启用 SSL 连接时该视图内容才有意义;可通过 pid 关联到会话或复制连接的详细信息。
pg_stat_subscription
类型:系统视图(VIEW),pg_catalog 模式 用途:每个订阅至少一行,显示订阅工作进程(apply leader、并行 apply worker、表同步 worker)的信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| subid | oid | 订阅的 OID |
| subname | name | 订阅的名称 |
| pid | integer | 订阅工作进程的进程 ID |
| leader_pid | integer | 当本进程为并行 apply worker 时其 leader apply worker 的进程 ID;当本进程为 leader apply worker 或同步 worker 时为 NULL |
| relid | oid | 该 worker 正在同步的关系的 OID;对于 leader apply worker 与并行 apply worker 为 NULL |
| received_lsn | pg_lsn | 最后接收到的预写日志位置,初值为 0;对于并行 apply worker 为 NULL |
| last_msg_send_time | timestamp with time zone | 收到来自源 WAL sender 的最后消息的发送时间;并行 apply worker 为 NULL |
| last_msg_receipt_time | timestamp with time zone | 收到来自源 WAL sender 的最后消息的接收时间;并行 apply worker 为 NULL |
| latest_end_lsn | pg_lsn | 报告给源 WAL sender 的最后预写日志位置;并行 apply worker 为 NULL |
| latest_end_time | timestamp with time zone | 报告给源 WAL sender 的最后预写日志位置的时间;并行 apply worker 为 NULL |
备注: 每个订阅至少有一行(对应 leader apply worker);表同步期间会为每个正在同步的表额外产生一行;启用 parallel apply 时还会产生并行 apply worker 行。
pg_stat_subscription_stats
类型:系统视图(VIEW),pg_catalog 模式 用途:每个订阅一行,显示订阅在应用更改与初始表同步过程中发生错误的统计。
| 列名 | 类型 | 描述 |
|---|---|---|
| subid | oid | 订阅的 OID |
| subname | name | 订阅的名称 |
| apply_error_count | bigint | 在应用更改时发生错误的次数 |
| sync_error_count | bigint | 在初始表同步期间发生错误的次数 |
| stats_reset | timestamp with time zone | 该统计信息上次被重置的时间 |
备注: 可用 pg_stat_reset_subscription_stats(oid) 重置单个或全部(参数为 NULL)订阅的计数器。
pg_stat_wal
类型:系统视图(VIEW),pg_catalog 模式 用途:仅有一行,显示集群的 WAL 活动统计信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| wal_records | bigint | 生成的 WAL 记录总数 |
| wal_fpi | bigint | 生成的 WAL 全页镜像(full page image)总数 |
| wal_bytes | numeric | 生成的 WAL 总字节数 |
| wal_buffers_full | bigint | 因 WAL 缓冲区已满而将 WAL 数据写入磁盘的次数 |
| wal_write | bigint | 通过 XLogWrite 请求将 WAL 缓冲区写出磁盘的次数 |
| wal_sync | bigint | 通过 issue_xlog_fsync 请求将 WAL 文件同步(fsync)到磁盘的次数(仅当 fsync 为 on 且 wal_sync_method 为 fdatasync/fsync/fsync_writethrough 时统计,否则为 0) |
| wal_write_time | double precision | 通过 XLogWrite 请求将 WAL 缓冲区写入磁盘所花费的总时间(毫秒,需启用 track_wal_io_timing,否则为 0);当 wal_sync_method 为 open_datasync 或 open_sync 时包含同步时间 |
| wal_sync_time | double precision | 通过 issue_xlog_fsync 请求将 WAL 文件同步到磁盘所花费的总时间(毫秒,需启用 track_wal_io_timing、fsync 为 on 且 wal_sync_method 为 fdatasync/fsync/fsync_writethrough,否则为 0) |
| stats_reset | timestamp with time zone | 该统计信息上次被重置的时间 |
备注: 可用 pg_stat_reset_shared('wal') 重置。计时类列仅在 track_wal_io_timing 开启时非零。
pg_stat_wal_receiver
类型:系统视图(VIEW),pg_catalog 模式 用途:仅有一行,显示从所连接的服务器接收 WAL 的 WAL receiver 进程的统计信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| pid | integer | WAL receiver 进程的进程 ID |
| status | text | WAL receiver 进程的活动状态 |
| receive_start_lsn | pg_lsn | WAL receiver 启动时使用的第一个预写日志位置 |
| receive_start_tli | integer | WAL receiver 启动时使用的第一个时间线(timeline)号 |
| written_lsn | pg_lsn | 已接收并写入磁盘(但未刷写)的最后预写日志位置;不应用于数据完整性检查 |
| flushed_lsn | pg_lsn | 已接收并刷写到磁盘的最后预写日志位置;初值为 WAL receiver 启动时使用的第一个日志位置 |
| received_tli | integer | 已接收并刷写到磁盘的最后预写日志位置的时间线号;初值为启动时第一个日志位置的时间线号 |
| last_msg_send_time | timestamp with time zone | 收到来自源 WAL sender 的最后消息的发送时间 |
| last_msg_receipt_time | timestamp with time zone | 收到来自源 WAL sender 的最后消息的接收时间 |
| latest_end_lsn | pg_lsn | 报告给源 WAL sender 的最后预写日志位置 |
| latest_end_time | timestamp with time zone | 报告给源 WAL sender 的最后预写日志位置的时间 |
| slot_name | text | 该 WAL receiver 使用的复制槽名称 |
| sender_host | text | 该 WAL receiver 所连接的 PostgreSQL 实例的主机(主机名、IP 地址,或 Unix 套接字目录路径;路径总是以 / 开头的绝对路径) |
| sender_port | integer | 该 WAL receiver 所连接的 PostgreSQL 实例的端口号 |
| conninfo | text | 该 WAL receiver 使用的连接串(敏感字段已脱敏) |
备注: 该视图仅在作为流复制备库(含 WAL receiver 进程)时有数据。
pg_stat_user_functions
类型:系统视图(VIEW),pg_catalog 模式 用途:每个被跟踪的函数一行,显示该函数执行的统计信息。track_functions 参数控制具体跟踪哪些函数。
| 列名 | 类型 | 描述 |
|---|---|---|
| funcid | oid | 函数的 OID |
| schemaname | name | 该函数所在模式的名称 |
| funcname | name | 函数名称 |
| calls | bigint | 该函数被调用的次数 |
| total_time | double precision | 在该函数及其调用的所有其他函数中花费的总时间(毫秒) |
| self_time | double precision | 仅在该函数自身(不含其调用的其他函数)花费的总时间(毫秒) |
备注: 默认 track_functions 关闭;设置为 pl 或 all 才会统计。
pg_stat_xact_user_functions
类型:系统视图(VIEW),pg_catalog 模式 用途:与 pg_stat_user_functions 类似,但仅统计当前事务内发生的调用(这些调用尚未计入 pg_stat_user_functions)。列与 pg_stat_user_functions 完全相同。
| 列名 | 类型 | 描述 |
|---|---|---|
| funcid | oid | 函数的 OID |
| schemaname | name | 该函数所在模式的名称 |
| funcname | name | 函数名称 |
| calls | bigint | 当前事务内该函数被调用的次数 |
| total_time | double precision | 当前事务内在该函数及其调用的所有其他函数中花费的总时间(毫秒) |
| self_time | double precision | 当前事务内仅在该函数自身(不含其调用的其他函数)花费的总时间(毫秒) |
备注: 该视图数值在事务期间持续更新(不像累计统计视图那样在事务内为静态快照)。
pg_stats
类型:系统视图(VIEW),pg_catalog 模式 用途:以可读形式展示存储在 pg_statistic 目录表中的列级统计信息;仅返回用户有读权限的表对应的行,因此可安全地公开访问。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 表所在模式的名称 |
| tablename | name | 表的名称 |
| attname | name | 该行所描述列的名称 |
| inherited | bool | 为 true 时,本行包含子表的值,而不仅仅是指定表的值 |
| null_frac | float4 | 该列中为 NULL 的条目比例 |
| avg_width | int4 | 该列条目的平均宽度(字节) |
| n_distinct | float4 | 大于零时为列中不同值的估计数量;小于零时为不同值数量除以行数后的负值(ANALYZE 认为不同值数会随表增长而增加时用负值形式;固定可能值时用正值)。例如 -1 表示唯一列(不同值数等于行数) |
| most_common_vals | anyarray | 该列中最常见值的列表(若无值比其他值更常见则为 NULL) |
| most_common_freqs | float4[] | 最常见值的频率列表,即各值出现次数除以总行数(most_common_vals 为 NULL 时为 NULL) |
| histogram_bounds | anyarray | 将该列值划分为近似等大小群体的值列表;most_common_vals 中的值(若存在)不参与此直方图计算(列类型无 < 操作符或 most_common_vals 覆盖了全部取值时为 NULL) |
| correlation | float4 | 物理行顺序与逻辑列值顺序之间的统计相关性,范围 -1 到 +1;接近 -1 或 +1 时对该列的索引扫描估计更廉价(列类型无 < 操作符时为 NULL) |
| most_common_elems | anyarray | 该列值中最常出现的非空元素值列表(标量类型为 NULL) |
| most_common_elem_freqs | float4[] | 最常见元素值的频率列表,即包含至少一个该值的行所占比例;后面还会附带两到三个额外值,分别是上述频率的最小值和最大值,以及(可选的)NULL 元素频率(most_common_elems 为 NULL 时为 NULL) |
| elem_count_histogram | float4[] | 该列值中不同非空元素计数的直方图,后接不同非空元素的平均数(标量类型为 NULL) |
备注: 数组字段的最大条目数可按列通过 ALTER TABLE SET STATISTICS 控制,或全局通过 default_statistics_target 控制。
pg_stats_ext
类型:系统视图(VIEW),pg_catalog 模式 用途:以可读形式展示每个扩展统计对象的信息,合并 pg_statistic_ext 与 pg_statistic_ext_data 目录表的内容;仅返回用户所拥有表对应的行,因此可安全公开访问。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 表所在模式的名称 |
| tablename | name | 表的名称 |
| statistics_schemaname | name | 扩展统计对象所在模式的名称 |
| statistics_name | name | 扩展统计对象的名称 |
| statistics_owner | name | 扩展统计对象的所有者 |
| attnames | name[] | 包含在该扩展统计对象中的列名列表 |
| exprs | text[] | 包含在该扩展统计对象中的表达式列表 |
| kinds | char[] | 为该记录启用的扩展统计对象类型 |
| inherited | bool | 为 true 时,统计信息包含子表的值,而不仅仅是指定关系的值 |
| n_distinct | pg_ndistinct | 列值组合的 N-distinct 计数;大于零时为该组合的不同值估计数,小于零时为不同值数除以行数的负值。例如 -1 表示唯一的列组合(不同组合数等于行数) |
| dependencies | pg_dependencies | 函数依赖统计 |
| most_common_vals | text[] | 各列中最常见值组合的列表(若无组合比其他更常见则为 NULL) |
| most_common_val_nulls | bool[] | 最常见值组合对应的 NULL 标志列表(most_common_vals 为 NULL 时为 NULL) |
| most_common_freqs | float8[] | 最常见值组合的频率列表,即各组合出现次数除以总行数(most_common_vals 为 NULL 时为 NULL) |
| most_common_base_freqs | float8[] | 最常见值组合的基础频率列表,即各单值频率的乘积(most_common_vals 为 NULL 时为 NULL) |
备注: 数组字段的最大条目数可按列通过 ALTER TABLE SET STATISTICS 控制,或全局通过 default_statistics_target 控制。
pg_stats_ext_exprs
类型:系统视图(VIEW),pg_catalog 模式 用途:以可读形式展示扩展统计对象中包含的每个表达式的统计信息,合并 pg_statistic_ext 与 pg_statistic_ext_data 目录表的内容;仅返回用户所拥有表对应的行,因此可安全公开访问。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 表所在模式的名称 |
| tablename | name | 该统计对象所定义的表的名称 |
| statistics_schemaname | name | 扩展统计对象所在模式的名称 |
| statistics_name | name | 扩展统计对象的名称 |
| statistics_owner | name | 扩展统计对象的所有者 |
| expr | text | 包含在该扩展统计对象中的表达式 |
| inherited | bool | 为 true 时,统计信息包含子表的值,而不仅仅是指定关系的值 |
| null_frac | float4 | 该表达式条目为 NULL 的比例 |
| avg_width | int4 | 该表达式条目的平均宽度(字节) |
| n_distinct | float4 | 大于零时为表达式中不同值的估计数;小于零时为不同值数除以行数的负值。例如 -1 表示唯一表达式(不同值数等于行数) |
| most_common_vals | anyarray | 该表达式中最常见值的列表(若无值比其他更常见则为 NULL) |
| most_common_freqs | float4[] | 最常见值的频率列表,即各值出现次数除以总行数(most_common_vals 为 NULL 时为 NULL) |
| histogram_bounds | anyarray | 将该表达式的值划分为近似等大小群体的值列表;most_common_vals 中的值(若存在)不参与此直方图计算(表达式类型无 < 操作符或 most_common_vals 覆盖全部取值时为 NULL) |
| correlation | float4 | 物理行顺序与表达式逻辑值顺序之间的统计相关性,范围 -1 到 +1;接近 -1 或 +1 时对该表达式的索引扫描估计更廉价(表达式类型无 < 操作符时为 NULL) |
| most_common_elems | anyarray | 该表达式值中最常出现的非空元素值列表(标量类型为 NULL) |
| most_common_elem_freqs | float4[] | 最常见元素值的频率列表,即包含至少一个该值的行所占比例;后面附带两到三个额外值,为上述频率的最小值与最大值,以及(可选的)NULL 元素频率(most_common_elems 为 NULL 时为 NULL) |
| elem_count_histogram | float4[] | 该表达式值中不同非空元素计数的直方图,后接不同非空元素的平均数(标量类型为 NULL) |
备注: 数组字段的最大条目数可按列通过 ALTER TABLE SET STATISTICS 控制,或全局通过 default_statistics_target 控制。
pg_stat_all_tables / pg_stat_sys_tables / pg_stat_user_tables
类型:系统视图(VIEW),pg_catalog 模式 用途:当前数据库中每个表(含 TOAST 表)一行,展示对该表的访问与 VACUUM/ANALYZE 累积统计。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 表的 OID |
| schemaname | name | 该表所在的模式名 |
| relname | name | 表名 |
| seq_scan | bigint | 在此表上发起的顺序扫描(sequential scan)次数 |
| last_seq_scan | timestamp with time zone | 最近一次顺序扫描该表的时间,基于最近一次事务停止时间 |
| seq_tup_read | bigint | 顺序扫描从该表读取的存活行数 |
| idx_scan | bigint | 在此表上发起的索引扫描次数(对该表全部索引求和) |
| last_idx_scan | timestamp with time zone | 最近一次索引扫描该表的时间,基于最近一次事务停止时间(取该表所有索引中的最大值) |
| idx_tup_fetch | bigint | 索引扫描从该表取回的存活行数 |
| n_tup_ins | bigint | 插入的总行数 |
| n_tup_upd | bigint | 更新的总行数(含 HOT 更新、newpage 更新以及其余非 HOT 更新) |
| n_tup_del | bigint | 删除的总行数 |
| n_tup_hot_upd | bigint | HOT 更新的行数(此类更新无需在索引中产生后续版本) |
| n_tup_newpage_upd | bigint | 更新后新版本落入新堆页的行数,旧版本留下指向另一堆页的 t_ctid;这类更新总是非 HOT 更新 |
| n_live_tup | bigint | 估计的存活行数 |
| n_dead_tup | bigint | 估计的死行数 |
| n_mod_since_analyze | bigint | 自上次 ANALYZE 以来估计被修改的行数(尚未反映在下一次 ANALYZE 的统计中) |
| n_ins_since_vacuum | bigint | 自上次 VACUUM 以来估计插入的行数 |
| last_vacuum | timestamp with time zone | 最近一次手动 VACUUM 该表的时间(不含 VACUUM FULL) |
| last_autovacuum | timestamp with time zone | autovacuum 守护进程最近一次清理该表的时间 |
| last_analyze | timestamp with time zone | 最近一次手动 ANALYZE 该表的时间 |
| last_autoanalyze | timestamp with time zone | autovacuum 守护进程最近一次分析该表的时间 |
| vacuum_count | bigint | 该表被手动 VACUUM 的次数(不含 VACUUM FULL) |
| autovacuum_count | bigint | 该表被 autovacuum 清理的次数 |
| analyze_count | bigint | 该表被手动 ANALYZE 的次数 |
| autoanalyze_count | bigint | 该表被 autovacuum 分析的次数 |
备注: n_tup_newpage_upd 为 PostgreSQL 16 新增列,用于细化更新统计——n_tup_hot_upd + n_tup_newpage_upd 是非 HOT 更新的拆分,二者合起来包含于 n_tup_upd 之中。
pg_stat_xact_all_tables / pg_stat_xact_sys_tables / pg_stat_xact_user_tables
类型:系统视图(VIEW),pg_catalog 模式 用途:与 pg_stat_all_tables 类似,但统计的是当前事务内已发生但尚未刷入共享统计的动作,随事务推进实时更新。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 表的 OID |
| schemaname | name | 该表所在的模式名 |
| relname | name | 表名 |
| seq_scan | bigint | 当前事务内在此表上发起的顺序扫描次数 |
| seq_tup_read | bigint | 当前事务内顺序扫描从该表读取的存活行数 |
| idx_scan | bigint | 当前事务内在此表上发起的索引扫描次数(对该表全部索引求和) |
| idx_tup_fetch | bigint | 当前事务内索引扫描从该表取回的存活行数 |
| n_tup_ins | bigint | 当前事务内插入的行数 |
| n_tup_upd | bigint | 当前事务内更新的行数(含 HOT 更新、newpage 更新以及其余非 HOT 更新) |
| n_tup_del | bigint | 当前事务内删除的行数 |
| n_tup_hot_upd | bigint | 当前事务内 HOT 更新的行数 |
| n_tup_newpage_upd | bigint | 当前事务内更新后新版本落入新堆页的行数(总是非 HOT 更新) |
备注: 相比 pg_stat_all_tables,此视图不含 last_seq_scan / last_idx_scan 等扫描时间戳,也不含存活/死行估计(n_live_tup、n_dead_tup、n_mod_since_analyze、n_ins_since_vacuum)以及 VACUUM/ANALYZE 相关列;它仅统计当前事务内的本地计数器,事务结束时即合并到对应的全局视图中。
pg_statio_all_tables / pg_statio_sys_tables / pg_statio_user_tables
类型:系统视图(VIEW),pg_catalog 模式 用途:当前数据库中每个表(含 TOAST 表)一行,展示该表及其索引、TOAST 表的缓冲区 I/O 统计。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 表的 OID |
| schemaname | name | 该表所在的模式名 |
| relname | name | 表名 |
| heap_blks_read | bigint | 从该表堆读取的磁盘块数(即未在缓冲区命中而产生的读取) |
| heap_blks_hit | bigint | 该表堆在缓冲区中的命中次数 |
| idx_blks_read | bigint | 从该表全部索引读取的磁盘块数 |
| idx_blks_hit | bigint | 该表全部索引在缓冲区中的命中次数 |
| toast_blks_read | bigint | 从该表的 TOAST 表(如有)读取的磁盘块数 |
| toast_blks_hit | bigint | 该表的 TOAST 表(如有)在缓冲区中的命中次数 |
| tidx_blks_read | bigint | 从该表 TOAST 表的索引(如有)读取的磁盘块数 |
| tidx_blks_hit | bigint | 该表 TOAST 表的索引(如有)在缓冲区中的命中次数 |
备注: *_read 与 *_hit 之和即为对该对象发起的总块读取请求数;命中率可用于评估共享缓冲区是否充分。注意此视图统计的是从内核发起 read() 的请求数与缓冲命中数,并不区分实际物理磁盘读取与操作系统页缓存命中。
pg_stat_all_indexes / pg_stat_sys_indexes / pg_stat_user_indexes
类型:系统视图(VIEW),pg_catalog 模式 用途:当前数据库中每个索引一行,展示对该索引的访问统计,可用于判断索引是否被使用及其效率。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 该索引所属表的 OID |
| indexrelid | oid | 该索引本身的 OID |
| schemaname | name | 该索引所在的模式名 |
| relname | name | 该索引所属表的名称 |
| indexrelname | name | 该索引的名称 |
| idx_scan | bigint | 在此索引上发起的扫描次数 |
| last_idx_scan | timestamp with time zone | 最近一次扫描该索引的时间,基于最近一次事务停止时间 |
| idx_tup_read | bigint | 扫描从该索引取回的索引项数量 |
| idx_tup_fetch | bigint | 通过简单索引扫描从表中取回的存活行数 |
备注: 位图索引扫描会累加所用各索引的 idx_tup_read 及对应表的 idx_tup_fetch,但不会累加各索引自身的 idx_tup_fetch;此外 idx_tup_read 计索引项、idx_tup_fetch 计实际从表取回的存活行,因死行/未提交行或索引仅扫描(index-only scan)的存在二者可能不等。
pg_statio_all_indexes / pg_statio_sys_indexes / pg_statio_user_indexes
类型:系统视图(VIEW),pg_catalog 模式 用途:当前数据库中每个索引一行,展示该索引的缓冲区 I/O 统计。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 该索引所属表的 OID |
| indexrelid | oid | 该索引本身的 OID |
| schemaname | name | 该索引所在的模式名 |
| relname | name | 该索引所属表的名称 |
| indexrelname | name | 该索引的名称 |
| idx_blks_read | bigint | 从该索引读取的磁盘块数(即未在缓冲区命中而产生的读取) |
| idx_blks_hit | bigint | 该索引在缓冲区中的命中次数 |
备注: idx_blks_read 与 idx_blks_hit 之和即为对该索引发起的总块读取请求数,可用于评估索引的缓冲命中情况。
pg_statio_all_sequences / pg_statio_sys_sequences / pg_statio_user_sequences
类型:系统视图(VIEW),pg_catalog 模式 用途:按序列显示当前数据库中序列的 I/O 统计信息(磁盘块读取与缓冲区命中情况)。
| 列名 | 类型 | 描述 |
|---|---|---|
| relid | oid | 序列的 OID |
| schemaname | name | 序列所在的模式名 |
| relname | name | 序列名 |
| blks_read | bigint | 从该序列读取的磁盘块数 |
| blks_hit | bigint | 在该序列上的缓冲区命中次数(命中即无需磁盘读取) |
pg_tables
类型:系统视图(VIEW),pg_catalog 模式 用途:提供当前数据库中每个表的有用信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 表所在模式的名称(引用 pg_namespace.nspname) |
| tablename | name | 表名(引用 pg_class.relname) |
| tableowner | name | 表的属主名称(引用 pg_authid.rolname) |
| tablespace | name | 表所在表空间的名称(引用 pg_tablespace.spcname);若为数据库默认表空间则为 NULL |
| hasindexes | bool | 若表拥有(或近期曾拥有)任何索引,则为真 |
| hasrules | bool | 若表拥有(或曾经拥有)规则(rule),则为真 |
| hastriggers | bool | 若表拥有(或曾经拥有)触发器,则为真 |
| rowsecurity | bool | 若该表已启用行级安全(row security),则为真 |
pg_timezone_abbrevs
类型:系统视图(VIEW),pg_catalog 模式 用途:列出日期/时间输入例程当前可识别的时区缩写;其内容随 timezone_abbreviations 运行时参数的变化而改变。
| 列名 | 类型 | 描述 |
|---|---|---|
| abbrev | text | 时区缩写 |
| utc_offset | interval | 相对 UTC 的偏移量(正值表示位于格林尼治以东) |
| is_dst | bool | 若为夏令时(daylight-savings)缩写,则为真 |
备注: 大多数时区缩写表示固定的 UTC 偏移量,但少数缩写在历史上取值会变化(详见官方文档 Section B.4);此类情况下本视图展示的是其当前含义。
pg_timezone_names
类型:系统视图(VIEW),pg_catalog 模式 用途:列出可被 SET TIMEZONE 识别的时区名称,并给出其对应的缩写、UTC 偏移量与夏令时状态。
| 列名 | 类型 | 描述 |
|---|---|---|
| name | text | 时区名称 |
| abbrev | text | 时区缩写 |
| utc_offset | interval | 相对 UTC 的偏移量(正值表示位于格林尼治以东) |
| is_dst | bool | 若当前正处于夏令时观测期间,则为真 |
备注: 与 pg_timezone_abbrevs 中固定偏移的缩写不同,这里的许多名称隐含一组夏令时切换日期规则,因此相关信息会随本地 DST 边界变化;所展示的信息基于 CURRENT_TIMESTAMP 的当前值计算。
pg_user
类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库用户的信息;本质上是一个公开可读的 pg_shadow 视图,但将口令字段置空。
| 列名 | 类型 | 描述 |
|---|---|---|
| usename | name | 用户名 |
| usesysid | oid | 该用户的 ID |
| usecreatedb | bool | 用户可以创建数据库 |
| usesuper | bool | 用户为超级用户 |
| userepl | bool | 用户可以发起流复制并使系统进入/退出备份模式 |
| usebypassrls | bool | 用户绕过所有行级安全(RLS)策略(详见官方文档 Section 5.8) |
| passwd | text | 非真实口令(始终读取为 ********) |
| valuntil | timestamptz | 口令过期时间(仅用于口令认证) |
| useconfig | text[] | 运行时配置变量的会话默认值 |
pg_user_mappings
类型:系统视图(VIEW),pg_catalog 模式 用途:提供用户映射(user mapping)的信息;本质上是 pg_user_mapping 的公开可读视图,当用户无权使用选项字段时会省略该字段。
| 列名 | 类型 | 描述 |
|---|---|---|
| umid | oid | 用户映射的 OID(引用 pg_user_mapping.oid) |
| srvid | oid | 包含此映射的外部服务器的 OID(引用 pg_foreign_server.oid) |
| srvname | name | 外部服务器的名称(引用 pg_foreign_server.srvname) |
| umuser | oid | 被映射的本地角色的 OID;若该用户映射是公共(PUBLIC)映射,则为零 |
| usename | name | 被映射的本地用户名 |
| umoptions | text[] | 用户映射特定的选项,以 “keyword=value” 字符串形式表示 |
备注: 为保护作为用户映射选项存储的口令信息,除非满足以下条件之一,否则 umoptions 列读取为 NULL:当前用户即是被映射的用户,且其拥有该服务器或对其持有 USAGE 权限;当前用户是服务器属主且该映射为 PUBLIC;当前用户是超级用户。
pg_views
类型:系统视图(VIEW),pg_catalog 模式 用途:提供当前数据库中每个视图的有用信息。
| 列名 | 类型 | 描述 |
|---|---|---|
| schemaname | name | 视图所在模式的名称(引用 pg_namespace.nspname) |
| viewname | name | 视图名(引用 pg_class.relname) |
| viewowner | name | 视图属主的名称(引用 pg_authid.rolname) |
| definition | text | 视图定义(重构出的 SELECT 查询语句) |