跳到主要内容

系统表参考

本文档列出 Halo 数据库的系统目录表(pg_catalog 模式)与系统视图,按字母顺序排列, 提供每个对象的类型、用途说明及其列的详细信息。

pg_aggregate​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储聚合函数的信息,每行扩展自 pg_proc 中对应的一条记录,记录聚合的转移函数、终值函数、移动聚合模式等元数据。

列名类型描述
aggfnoidregproc聚合函数的 pg_proc OID;引用 pg_proc.oid
aggkindchar聚合类型:n 普通聚合,o 有序集聚合,h 假想集聚合
aggnumdirectargsint2有序集/假想集聚合的直接(非聚合)参数个数,可变数组按一个参数计;等于 pronargs 时聚合必须为可变参数。普通聚合恒为 0
aggtransfnregproc转移(状态转移)函数;引用 pg_proc.oid
aggfinalfnregproc终值函数(无则为零);引用 pg_proc.oid
aggcombinefnregproc合并函数(无则为零);引用 pg_proc.oid
aggserialfnregproc序列化函数(无则为零);引用 pg_proc.oid
aggdeserialfnregproc反序列化函数(无则为零);引用 pg_proc.oid
aggmtransfnregproc移动聚合模式的前向转移函数(无则为零);引用 pg_proc.oid
aggminvtransfnregproc移动聚合模式的反向转移函数(无则为零);引用 pg_proc.oid
aggmfinalfnregproc移动聚合模式的终值函数(无则为零);引用 pg_proc.oid
aggfinalextrabool是否向 aggfinalfn 传递额外的哑参数
aggmfinalextrabool是否向 aggmfinalfn 传递额外的哑参数
aggfinalmodifycharaggfinalfn 是否修改转移状态:r 只读,s 调用后不能再应用 aggtransfn,w 写入
aggmfinalmodifychar同 aggfinalmodify,但针对 aggmfinalfn
aggsortopoid关联的排序操作符(无则为零);引用 pg_operator.oid
aggtranstypeoid聚合内部转移(状态)数据的数据类型;引用 pg_type.oid
aggtransspaceint4转移状态数据的近似平均字节数,0 表示使用默认估计
aggmtranstypeoid移动聚合模式的内部转移状态数据类型(无则为零);引用 pg_type.oid
aggmtransspaceint4移动聚合模式转移状态数据的近似平均字节数,0 表示使用默认估计
agginitvaltext转移状态的初始值(外部字符串表示形式);为 null 时状态初值为 null
aggminitvaltext移动聚合模式转移状态的初始值(外部字符串表示形式);为 null 时状态初值为 null

备注: 该表无 oid 列;主键由 aggfnoid 隐含标识,是 pg_proc 条目的扩展信息。

pg_am​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储关系访问方法(access method)的信息,目前仅表(含物化视图)和索引有访问方法。

列名类型描述
oidoid行标识符
amnamename访问方法名称
amhandlerregproc负责提供该访问方法详细信息的处理器函数的 OID;引用 pg_proc.oid
amtypechar访问方法类型:t 表(含物化视图),i 索引

备注: 自 PostgreSQL 9.6 起,原索引访问方法属性列被移除,需通过 pg_index_column_has_property() 等函数查询。

pg_amop​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储与访问方法操作符族相关联的操作符信息,每个操作符族成员(搜索或排序操作符)对应一行。

列名类型描述
oidoid行标识符
amopfamilyoid该项所属的操作符族;引用 pg_opfamily.oid
amoplefttypeoid操作符的左输入数据类型;引用 pg_type.oid
amoprighttypeoid操作符的右输入数据类型;引用 pg_type.oid
amopstrategyint2操作符的策略号
amoppurposechar操作符用途:s 搜索,o 排序
amopoproid操作符的 OID;引用 pg_operator.oid
amopmethodoid该操作符族所属的索引访问方法;引用 pg_am.oid
amopsortfamilyoid排序操作符所依据的 B-tree 操作符族;搜索操作符为 0;引用 pg_opfamily.oid

pg_amproc​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储与访问方法操作符族相关联的支持函数(support function)信息,每个支持函数对应一行。

列名类型描述
oidoid行标识符
amprocfamilyoid该项所属的操作符族;引用 pg_opfamily.oid
amproclefttypeoid关联操作符的左输入数据类型;引用 pg_type.oid
amprocrighttypeoid关联操作符的右输入数据类型;引用 pg_type.oid
amprocnumint2支持函数编号
amprocregproc该支持函数的 OID;引用 pg_proc.oid

pg_attrdef​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储列的默认值表达式;只有显式设置了默认值的列才会在此表中存在记录,列的其它信息存于 pg_attribute。

列名类型描述
oidoid行标识符
adrelidoid该列所属的表;引用 pg_class.oid
adnumint2列编号;引用 pg_attribute.attnum
adbinpg_node_tree列默认值的 nodeToString() 内部表示;可用 pg_get_expr(adbin, adrelid) 转换为 SQL 表达式

pg_attribute​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表(及索引、视图、序列、物化视图、外部表等关系)每一列的详细信息,每个列(含已删除列与系统列)恰好对应一行。

列名类型描述
attrelidoid该列所属的表;引用 pg_class.oid
attnamename列名
atttypidoid该列的数据类型(已删除列为零);引用 pg_type.oid
attlenint2该列类型的 pg_type.typlen 副本
attnumint2列编号;普通列从 1 开始,系统列(如 ctid)使用负数
attcacheoffint4存储中恒为 -1;加载到内存的行描述符中可能被更新以缓存该属性在行内的偏移
atttypmodint4建表时记录的类型相关数据(如 varchar 最大长度),传递给类型输入和长度强制函数;不需要时通常为 -1
attndimsint2若为数组类型,维度数;否则为 0(当前不强制维度数,非零即视为数组)
attbyvalbool该列类型的 pg_type.typbyval 副本
attalignchar该列类型的 pg_type.typalign 副本
attstoragechar通常为该列类型的 pg_type.typstorage 副本;对 TOAST 可用类型,可在建列后调整存储策略
attcompressionchar当前列的压缩方法:\0 使用默认,p pglz,l LZ4;当 attstorage 不允许压缩时忽略
attnotnullbool表示该列有 NOT NULL 约束
atthasdefbool该列有默认表达式或生成表达式(对应 pg_attrdef 中的记录;结合 attgenerated 判断是默认值还是生成表达式)
atthasmissingbool该列在行中完全缺失时所用的占位值存在(见 attmissingval),用于带非易失 DEFAULT 新增列的旧行
attidentitychar零字节表示非身份列;否则 a 总是生成,d 默认生成
attgeneratedchar零字节表示非生成列;否则 s 存储(将来可能新增其他值)
attisdroppedbool该列已删除并失效;仍物理存在于表中,但解析器忽略,无法通过 SQL 访问
attislocalbool该列在当前关系中本地定义(注意:可同时本地定义并被继承)
attinhcountint2该列的直接祖先数;非零时不能删除或重命名
attstattargetint2控制 ANALYZE 为该列收集统计信息的详细程度;0 不收集,负值用系统默认,正值含义与类型相关
attcollationoid该列定义的排序规则;不可排序类型为 0;引用 pg_collation.oid
attaclaclitem[]列级访问权限(仅当专门授予时存在)
attoptionstext[]属性级选项,形如 “keyword=value” 字符串
attfdwoptionstext[]属性级外部数据包装器(FDW)选项,形如 “keyword=value” 字符串
attmissingvalanyarray单元素数组,存放行缺失该列时使用的值(用于带非易失 DEFAULT 新增列的旧行);仅当 atthasmissing 为真时使用,否则为 null

备注: 该表无 oid 列;按 (attrelid, attnum) 标识列,每个关系的每一列(含已删除列与系统列)都恰好一行。

pg_auth_members​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:显示角色之间的成员关系(角色包含哪些角色作为成员),允许任意无环关系。

列名类型描述
oidoid行标识符
roleidoid拥有成员的角色 ID;引用 pg_authid.oid
memberoid作为 roleid 成员的角色 ID;引用 pg_authid.oid
grantoroid授予该成员关系的角色 ID;引用 pg_authid.oid
admin_optionbool为真时 member 可将 roleid 的成员资格授予他人
inherit_optionbool为真时该成员自动继承所授予角色的权限
set_optionbool为真时该成员可以 SET ROLE 切换到所授予的角色

备注: 因用户身份在整个集群内有效,该表为集群级共享表(cluster-wide),每个集群仅一份。

pg_authid​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库授权标识符(角色)信息;角色涵盖了“用户”与“组”的概念,可登录角色即用户。

列名类型描述
oidoid行标识符
rolnamename角色名称
rolsuperbool该角色拥有超级用户权限
rolinheritbool该角色自动继承其所属角色的权限
rolcreaterolebool该角色可以创建更多角色
rolcreatedbbool该角色可以创建数据库
rolcanloginbool该角色可以登录(可作为会话初始授权标识符)
rolreplicationbool该角色为复制角色,可发起复制连接并创建/删除复制槽
rolbypassrlsbool该角色绕过所有行级安全(RLS)策略
rolconnlimitint4可登录角色的最大并发连接数;-1 表示无限制
rolpasswordtext加密后的口令;无则为 null。格式取决于所用的加密方式
rolvaliduntiltimestamptz口令过期时间(仅用于口令认证);无过期则为 null

备注: 因包含口令,该表不可公开读取;公开视图 pg_roles 会将口令字段置空。集群级共享表(cluster-wide),每个集群仅一份。

pg_cast​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据类型转换路径(内置与用户定义);只记录无法从通用规则推导出的转换(如域与其基类型、I/O 自动转换不在此表)。

列名类型描述
oidoid行标识符
castsourceoid源数据类型的 OID;引用 pg_type.oid
casttargetoid目标数据类型的 OID;引用 pg_type.oid
castfuncoid执行此转换所用函数的 OID;若转换方法不需要函数则为 0;引用 pg_proc.oid
castcontextchar转换可调用的上下文:e 仅显式转换(CAST/::),a 赋值时隐式(也可显式),i 表达式中隐式(及其它情形)
castmethodchar转换方式:f 使用 castfunc 指定的函数,i 使用输入/输出函数,b 类型间二进制可强制转换无需转换

pg_class​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述表及类似表的对象(索引、视图、序列、物化视图、复合类型、外部表、TOAST 表等),是几乎所有关系型对象的核心目录。

列名类型描述
oidoid行标识符
relnamename表、索引、视图等对象的名称
relnamespaceoid包含该关系的命名空间 OID;引用 pg_namespace.oid
reltypeoid与该表行类型对应的数据类型 OID(无则为零,如索引、序列、TOAST 表);引用 pg_type.oid
reloftypeoid对类型化表(typed table),底层复合类型的 OID;其它关系为 0;引用 pg_type.oid
relowneroid该关系的属主;引用 pg_authid.oid
relamoid表或索引所用的访问方法(heap、B-tree、hash 等);否则为 0;引用 pg_am.oid
relfilenodeoid该关系在磁盘上的文件名节点;0 表示“映射”关系,磁盘文件名由低层状态决定
reltablespaceoid该关系所在的表空间;0 表示数据库默认表空间;引用 pg_tablespace.oid
relpagesint4该关系在磁盘上占用的大小(以 BLCKSZ 页为单位),仅为优化器估计值,由 VACUUM/ANALYZE/部分 DDL 更新
reltuplesfloat4表中存活行数的估计值,由 VACUUM/ANALYZE/部分 DDL 更新;从未清理或分析则为 -1 表示未知
relallvisibleint4可见性映射中标记为 all-visible 的页数估计值,由 VACUUM/ANALYZE/部分 DDL 更新
reltoastrelidoid与该表关联的 TOAST 表 OID(无则为 0);引用 pg_class.oid
relhasindexbool为真表示该表已(或最近曾有)索引
relissharedbool为真表示该表在整个集群的所有数据库间共享
relpersistencechar持久性:p 永久表/序列,u unlogged,t 临时
relkindchar关系类型:r 普通表,i 索引,S 序列,t TOAST 表,v 视图,m 物化视图,c 复合类型,f 外部表,p 分区表,I 分区索引
relnattsint2关系中用户列的数目(不含系统列),须与 pg_attribute 中对应条目数一致
relchecksint2表上 CHECK 约束的数目(见 pg_constraint)
relhasrulesbool为真表示该表已(或曾有)规则(见 pg_rewrite)
relhastriggersbool为真表示该表已(或曾有)触发器(见 pg_trigger)
relhassubclassbool为真表示该表或索引已(或曾有)继承子表/分区
relrowsecuritybool为真表示该表启用了行级安全(见 pg_policy)
relforcerowsecuritybool为真表示行级安全(启用时)也作用于表属主(见 pg_policy)
relispopulatedbool为真表示该关系已填充数据(除部分物化视图外均为真)
relreplidentchar行的“副本标识”所用列:d 默认(若有主键),n 无,f 所有列,i 设了 indisreplident 的索引
relispartitionbool为真表示该表或索引是一个分区
relrewriteoidDDL 期间需要重写表时新建关系的原始关系 OID;否则为 0;引用 pg_class.oid
relfrozenxidxid此事务 ID 之前的所有事务 ID 已在该表中被替换为永久(冻结)ID;非表关系为 0(InvalidTransactionId)
relminmxidxid此 multixact ID 之前的所有 multixact ID 已在该表中被替换;非表关系为 0(InvalidMultiXactId)
relaclaclitem[]访问权限列表
reloptionstext[]访问方法特定的选项,形如 “keyword=value” 字符串
relpartboundpg_node_tree若该表为分区(见 relispartition),存放分区边界的内部表示

pg_collation​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述可用的排序规则(collation),本质上是 SQL 名称到操作系统 locale 类别的映射。

列名类型描述
oidoid行标识符
collnamename排序规则名称(在同一命名空间和编码内唯一)
collnamespaceoid包含该排序规则的命名空间 OID;引用 pg_namespace.oid
collowneroid该排序规则的属主;引用 pg_authid.oid
collproviderchar提供方:d 数据库默认,c libc,i ICU
collisdeterministicbool是否为确定性排序规则
collencodingint4该排序规则适用的编码;-1 表示适用于任意编码
collcollatetext该排序规则对象的 LC_COLLATE
collctypetext该排序规则对象的 LC_CTYPE
colliculocaletext该排序规则对象的 ICU locale ID
collicurulestext该排序规则对象的 ICU 排序规则
collversiontext排序规则提供方特定的版本,创建时记录并在使用时校验,以发现可能导致数据损坏的定义变更

备注: 唯一键为 (collname, collencoding, collnamespace);initdb 在集群初始化时为系统所有可用 locale 填入条目,故需容纳所有可能的编码。

pg_constraint​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表上的 CHECK、主键、唯一、外键、排他约束,以及域上的 CHECK 约束。列级约束不会被特殊处理,通常会等价转换为表级约束记录。注意:NOT NULL 约束不在本表中,而由 pg_attribute.attnotnull 表示。

列名类型描述
oidoid行标识符
connamename约束名(不一定唯一)
connamespaceoid包含此约束的命名空间的 OID;引用 pg_namespace.oid
contypechar约束类型:c = 检查约束,f = 外键,p = 主键,u = 唯一约束,t = 约束触发器,x = 排他约束
condeferrablebool约束是否可延迟(deferrable)
condeferredbool约束默认是否延迟到事务末尾检查
convalidatedbool约束是否已验证;目前只有外键和 CHECK 约束可能为 false
conrelidoid此约束所在的表;非表约束则为 0;引用 pg_class.oid
contypidoid此约束所在的域;非域约束则为 0;引用 pg_type.oid
conindidoid支持此约束的索引(唯一、主键、外键或排他约束时);否则为 0;引用 pg_class.oid
conparentidoid若为分区上的约束,指对应父分区表的约束;否则为 0;引用 pg_constraint.oid
confrelidoid外键引用的表;非外键则为 0;引用 pg_class.oid
confupdtypechar外键更新动作代码:a = NO ACTION,r = RESTRICT,c = CASCADE,n = SET NULL,d = SET DEFAULT
confdeltypechar外键删除动作代码:a = NO ACTION,r = RESTRICT,c = CASCADE,n = SET NULL,d = SET DEFAULT
confmatchtypechar外键匹配类型:f = FULL,p = PARTIAL,s = SIMPLE
conislocalbool此约束是为此关系本地定义的(注意:约束可以同时是本地定义和继承的)
coninhcountint2此约束直接继承祖先的数量;非 0 时不能直接删除或重命名
connoinheritbool此约束为本地定义且不可继承
conkeyint2[]若为表约束(含外键,不含约束触发器),受约束列的 attnum 列表;引用 pg_attribute.attnum
confkeyint2[]若为外键,被引用列的 attnum 列表;引用 pg_attribute.attnum
conpfeqopoid[]若为外键,PK = FK 比较时使用的相等操作符列表;引用 pg_operator.oid
conppeqopoid[]若为外键,PK = PK 比较时使用的相等操作符列表;引用 pg_operator.oid
conffeqopoid[]若为外键,FK = FK 比较时使用的相等操作符列表;引用 pg_operator.oid
confdelsetcolsint2[]若为带 SET NULL/SET DEFAULT 删除动作的外键,将被更新的列;为 NULL 表示更新所有引用列;引用 pg_attribute.attnum
conexclopoid[]若为排他约束,每列的排他操作符列表;引用 pg_operator.oid
conbinpg_node_tree若为检查约束,表达式的内部表示(建议用 pg_get_constraintdef() 提取定义)

备注: oid 为行标识符。约束名在命名空间内不保证唯一。

pg_conversion​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:描述编码转换函数(详见 CREATE CONVERSION)

列名类型描述
oidoid行标识符
connamename转换名(在命名空间内唯一)
connamespaceoid包含此转换的命名空间的 OID;引用 pg_namespace.oid
conowneroid转换的属主;引用 pg_authid.oid
conforencodingint4源编码 ID(可用 pg_encoding_to_char() 转为编码名)
contoencodingint4目标编码 ID(可用 pg_encoding_to_char() 转为编码名)
conprocregproc转换函数;引用 pg_proc.oid
condefaultbool是否为默认转换

备注: oid 为行标识符。

pg_database​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储集群中可用数据库的信息(由 CREATE DATABASE 创建)

列名类型描述
oidoid行标识符
datnamename数据库名
datdbaoid数据库属主(通常为创建者);引用 pg_authid.oid
encodingint4数据库的字符编码(可用 pg_encoding_to_char() 转为编码名)
datlocproviderchar本地化提供程序:c = libc,i = icu
datistemplatebool为 true 时任何有 CREATEDB 权限的用户都可克隆此库;为 false 时仅超级用户或属主可克隆
datallowconnbool为 false 时无人可连接此库(用于保护 template0 免被修改)
datconnlimitint4允许到此库的最大并发连接数;-1 表示无限制,-2 表示数据库无效
datfrozenxidxid此数据库中所有更早的事务 ID 均已被替换为永久("frozen")事务 ID;用于跟踪是否需要 VACUUM 以防止事务 ID 回绕;等于各表 pg_class.relfrozenxid 的最小值
datminmxidxid此数据库中所有更早的多事务 ID 均已被替换为事务 ID;用于跟踪是否需要 VACUUM 以防止多事务 ID 回绕;等于各表 pg_class.relminmxid 的最小值
dattablespaceoid数据库的默认表空间;引用 pg_tablespace.oid
datcollatetext此数据库的 LC_COLLATE
datctypetext此数据库的 LC_CTYPE
daticulocaletext此数据库的 ICU 区域设置 ID
daticurulestext此数据库的 ICU 排序规则
datcollversiontext排序规则的提供程序特定版本;创建时记录,使用时检查以检测可能导致数据损坏的排序规则定义变化
dataclaclitem[]访问权限

备注: oid 为行标识符。与多数系统目录不同,pg_database 在整个集群中共享:每个集群只有一份,而非每个数据库一份。

pg_db_role_setting​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录为每个角色与数据库组合设置的运行时配置变量默认值

列名类型描述
setdatabaseoid此设置适用的数据库 OID,若非数据库特定则为 0;引用 pg_database.oid
setroleoid此设置适用的角色 OID,若非角色特定则为 0;引用 pg_authid.oid
setconfigtext[]运行时配置变量的默认值

备注: 与多数系统目录不同,pg_db_role_setting 在整个集群中共享:每个集群只有一份,而非每个数据库一份。

pg_default_acl​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储新建对象时要赋予的初始权限

列名类型描述
oidoid行标识符
defaclroleoid此条目关联的角色 OID;引用 pg_authid.oid
defaclnamespaceoid此条目关联的命名空间 OID,无则为 0;引用 pg_namespace.oid
defaclobjtypechar此条目适用的对象类型:r = 关系(表、视图),S = 序列,f = 函数,T = 类型,n = 模式
defaclaclaclitem[]此类型对象在创建时应具有的访问权限

备注: oid 为行标识符。defaclnamespace 为 0 的"全局"条目会覆盖该对象类型的硬编码默认权限;"按模式"条目则在全局/硬编码默认权限之外追加权限。该目录仅在对象创建时被参考。

pg_depend​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录数据库对象之间的依赖关系,使 DROP 命令能确定 CASCADE 要删除哪些对象或 RESTRICT 要阻止哪些删除

列名类型描述
classidoid依赖对象所在的系统目录 OID;引用 pg_class.oid
objidoid具体依赖对象的 OID(引用任意 OID 列)
objsubidint4对于表列,为列号(objid/classid 指代表本身);其他对象类型为 0
refclassidoid被引用对象所在的系统目录 OID;引用 pg_class.oid
refobjidoid具体被引用对象的 OID(引用任意 OID 列)
refobjsubidint4对于表列,为列号(refobjid/refclassid 指代表本身);其他对象类型为 0
deptypechar定义此依赖关系具体语义的代码;见正文

备注: 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 命令查看

列名类型描述
objoidoid此描述所属对象的 OID(引用任意 OID 列)
classoidoid此对象所在的系统目录 OID;引用 pg_class.oid
objsubidint4对于表列注释,为列号(objoid/classoid 指代表本身);其他对象类型为 0
descriptiontext作为此对象描述的任意文本

备注: 涉及集群共享对象描述的对应目录为 pg_shdescription。

pg_enum​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储每个枚举类型的枚举值及其文本标签;枚举值的内部表示实际上是其对应行的 OID

列名类型描述
oidoid行标识符
enumtypidoid拥有此枚举值的 pg_type 条目 OID;引用 pg_type.oid
enumsortorderfloat4此枚举值在其枚举类型内的排序位置
enumlabelname此枚举值的文本标签

备注: oid 为行标识符。pg_enum 行的 OID 遵循特殊规则:偶数 OID 保证与其枚举类型的排序顺序一致(同一枚举类型中较小偶数 OID 的 enumsortorder 较小),以便比较例程避免目录查找。新增成员可能获得负数或小数的 enumsortorder,仅需在枚举类型内正确排序且唯一。

pg_event_trigger​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储事件触发器的信息

列名类型描述
oidoid行标识符
evtnamename触发器名(必须唯一)
evteventname标识此触发器触发的事件
evtowneroid事件触发器的属主;引用 pg_authid.oid
evtfoidoid被调用的函数;引用 pg_proc.oid
evtenabledchar控制在哪些 session_replication_role 模式下触发:O = "origin" 和 "local" 模式触发,D = 禁用,R = "replica" 模式触发,A = 始终触发
evttagstext[]此触发器触发的命令标签列表;为 NULL 表示不基于命令标签限制触发

备注: oid 为行标识符。

pg_extension​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储已安装扩展的信息(详见附录D 扩展模块)

列名类型描述
oidoid行标识符
extnamename扩展名
extowneroid扩展的属主;引用 pg_authid.oid
extnamespaceoid包含扩展导出对象的模式;引用 pg_namespace.oid
extrelocatablebool为 true 表示扩展可迁移到其他模式
extversiontext扩展的版本名
extconfigoid[]扩展配置表的 regclass OID 数组;无则为 NULL;引用 pg_class.oid
extconditiontext[]扩展配置表的 WHERE 子句过滤条件数组;无则为 NULL

备注: oid 为行标识符。与多数含 "namespace" 列的目录不同,extnamespace 并不表示扩展属于该模式(扩展名从不带模式限定),而是指示包含扩展大部分或全部对象的模式;当 extrelocatable 为 true 时,该模式必须包含扩展所有可加模式限定的对象。

pg_foreign_data_wrapper​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部数据包装器(FDW)的定义,FDW 是访问驻留在外部服务器上外部数据的机制

列名类型描述
oidoid行标识符
fdwnamename外部数据包装器名
fdwowneroid外部数据包装器的属主;引用 pg_authid.oid
fdwhandleroid负责为 FDW 提供执行例程的处理函数;无则为 0;引用 pg_proc.oid
fdwvalidatoroid负责校验 FDW 以及使用它的外部服务器和用户映射选项有效性的验证函数;无则为 0;引用 pg_proc.oid
fdwaclaclitem[]访问权限
fdwoptionstext[]FDW 特定选项,以 "keyword=value" 字符串形式给出

备注: oid 为行标识符。

pg_foreign_server​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部服务器(foreign server)定义,一个外部服务器描述外部数据源(如远程服务器),通过外部数据包装器(FDW)访问。

列名类型描述
oidoid行标识符
srvnamename外部服务器名称
srvowneroid外部服务器的属主;引用 pg_authid.oid
srvfdwoid该外部服务器所使用的外部数据包装器的 OID;引用 pg_foreign_data_wrapper.oid
srvtypetext服务器类型(可选)
srvversiontext服务器版本(可选)
srvaclaclitem[]访问权限(ACL)
srvoptionstext[]外部服务器特有选项,以 "keyword=value" 字符串形式存储

pg_foreign_table​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储外部表(foreign table)的附加信息;外部表主体由 pg_class 条目表示,本表只保存专属于外部表的关系信息。

列名类型描述
ftrelidoid该外部表在 pg_class 中条目的 OID;引用 pg_class.oid
ftserveroid该外部表所关联的外部服务器的 OID;引用 pg_foreign_server.oid
ftoptionstext[]外部表选项,以 "keyword=value" 字符串形式存储

pg_index​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储索引的部分信息(其余信息主要保存在 pg_class 中)。

列名类型描述
indexrelidoid该索引在 pg_class 中条目的 OID;引用 pg_class.oid
indrelidoid该索引所属表在 pg_class 中条目的 OID;引用 pg_class.oid
indnattsint2索引列总数(含键列与 INCLUDED 列,与 pg_class.relnatts 重复)
indnkeyattsint2索引的键列数,不含仅存储而不参与索引语义的 INCLUDED 列
indisuniquebool为 true 表示这是一个唯一索引
indnullsnotdistinctbool仅用于唯一索引;为 true 时将 NULL 视为相等(每列仅允许一个 NULL),为 false 时(默认)NULL 视为互异
indisprimarybool为 true 表示该索引代表表的主键(此时 indisunique 必为 true)
indisexclusionbool为 true 表示该索引支持一个排他约束(exclusion constraint)
indimmediatebool为 true 表示唯一性检查在插入时立即生效(indisunique 为 false 时无意义)
indisclusteredbool为 true 表示表最近一次以此索引进行了 CLUSTER
indisvalidbool为 true 表示该索引用于查询是有效的;为 false 表示索引可能未完成,必须继续被 INSERT/UPDATE 维护但不能安全用于查询,唯一性也不保证
indcheckxminbool为 true 表示在当前行的 xmin 低于查询的 TransactionXmin 事件视界之前查询不得使用该索引,因为表中可能存在不相容的破损 HOT 链
indisreadybool为 true 表示该索引已准备好接受插入;为 false 时 INSERT/UPDATE 必须忽略此索引
indislivebool为 false 表示该索引正在被删除,应在所有用途中(含 HOT 安全判定)被忽略
indisreplidentbool为 true 表示该索引已被 ALTER TABLE ... REPLICA IDENTITY USING INDEX ... 选为 "副本标识"
indkeyint2vector长度为 indnatts 的数组,指示索引所索引的表列编号;0 表示对应属性为表达式而非简单列引用;键列排在非键(INCLUDED)列之前;引用 pg_attribute.attnum
indcollationoidvector长度为 indnkeyatts 的数组,给出每个索引键列所用的排序规则 OID,不可排序类型为 0;引用 pg_collation.oid
indclassoidvector长度为 indnkeyatts 的数组,给出每个索引键列所用的操作符类 OID;引用 pg_opclass.oid
indoptionint2vector长度为 indnkeyatts 的数组,存放每列的标志位,含义由索引访问方法定义
indexprspg_node_tree非简单列引用的索引属性的表达式树(nodeToString() 表示),与 indkey 中为 0 的项一一对应;全部为简单列引用时为 NULL
indpredpg_node_tree部分索引(partial index)谓词的表达式树(nodeToString() 表示);非部分索引时为 NULL

pg_inherits​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录表和索引的继承层次关系,对每个直接父子关系(含声明式分区)存一条记录。

列名类型描述
inhrelidoid子表或子索引的 OID;引用 pg_class.oid
inhparentoid父表或父索引的 OID;引用 pg_class.oid
inhseqnoint4当子表有多个直接父表(多继承)时,指示继承列的排列顺序,从 1 开始计数;索引不能多继承(仅声明式分区时索引才会继承)
inhdetachpendingbool为 true 表示该分区正处于分离过程中(detach pending);否则为 false

pg_init_privs​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录系统中对象的初始权限(由 initdb 初始化或 CREATE EXTENSION 脚本中的 GRANT 设置)。

列名类型描述
objoidoid具体对象的 OID
classoidoid该对象所在系统目录的 OID;引用 pg_class.oid
objsubidint4对于表列,为列编号(objoid/classoid 指代表本身);对其他对象类型,此列为 0
privtypechar标识初始权限类型的代码:i = 由 initdb 设置,e = 由 CREATE EXTENSION 设置
initprivsaclitem[]初始访问权限(ACL)

备注: 该目录为当前数据库内对象的初始权限记录(数据库级目录,非集群共享),用于区分对象创建时的默认权限与后续权限变更。

pg_language​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:注册可用于编写函数或存储过程的语言(如 SQL、PL/pgSQL 等)。

列名类型描述
oidoid行标识符
lannamename语言名称
lanowneroid语言的属主;引用 pg_authid.oid
lanisplbool为 false 表示内部语言(如 SQL),为 true 表示用户定义语言;目前 pg_dump 仍据此判断是否需要转储
lanpltrustedbool为 true 表示这是受信任语言(不授予 SQL 执行环境之外的权限);只有超级用户能在非受信任语言中创建函数
lanplcallfoidoid对非内部语言,指向语言处理函数(负责执行该语言所有函数的特殊函数);内部语言为 0;引用 pg_proc.oid
laninlineoid指向负责执行内联匿名代码块(DO 块)的函数;不支持时为 0;引用 pg_proc.oid
lanvalidatoroid指向语言校验函数,用于在创建新函数时检查语法和有效性;无校验器时为 0;引用 pg_proc.oid
lanaclaclitem[]访问权限(ACL)

pg_largeobject​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:保存"大对象"(large object)的实际数据;每个大对象被切分为若干页(每页 LOBLKSIZE,通常 2 kB)分行存储。

列名类型描述
loidoid该页所属大对象的标识符;引用 pg_largeobject_metadata.oid
pagenoint4该页在大对象中的页号(从 0 开始计数)
databytea实际存储的数据,绝不会超过 LOBLKSIZE 字节,也可能更少

备注: 该目录保存当前数据库中大对象的实际数据页(数据库级目录,非集群共享);支持稀疏存储,缺失区域读取为零。每行对应一个大对象的一页,起始字节偏移为 pageno * LOBLKSIZE。

pg_largeobject_metadata​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:保存与大对象相关联的元数据(属主和权限);大对象的实际数据保存在 pg_largeobject 中。

列名类型描述
oidoid行标识符(即该大对象的 OID)
lomowneroid大对象的属主;引用 pg_authid.oid
lomaclaclitem[]访问权限(ACL)

备注: 该目录保存当前数据库中大对象的元数据(属主与权限,数据库级目录,非集群共享);实际数据存储在 pg_largeobject 中。

pg_namespace​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储命名空间(namespace),命名空间是 SQL 模式(schema)的底层结构,使不同模式可拥有独立的关系、类型等集合而互不冲突。

列名类型描述
oidoid行标识符
nspnamename命名空间名称
nspowneroid命名空间的属主;引用 pg_authid.oid
nspparentoid🔵 父命名空间的 OID;引用 pg_namespace.oid(Halo 扩展列,PG16 无;支持命名空间 / 模式的层级结构)
nspinheritbool🔵 该命名空间是否继承父命名空间的对象(Halo 扩展列,PG16 无)
nspaclaclitem[]访问权限(ACL)

备注: 该目录存储当前数据库内的命名空间 / 模式信息(数据库级目录,非集群共享)。Halo 在 PG16 基础上新增了 nspparent、nspinherit 两列,以支持命名空间(模式)的层级与继承。

pg_opclass​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:定义索引访问方法的操作符类(operator class),每个操作符类为特定数据类型与特定索引访问方法定义索引列的语义。

列名类型描述
oidoid行标识符
opcmethodoid该操作符类所属的索引访问方法;引用 pg_am.oid
opcnamename操作符类名称
opcnamespaceoid操作符类所在的命名空间;引用 pg_namespace.oid
opcowneroid操作符类的属主;引用 pg_authid.oid
opcfamilyoid包含该操作符类的操作符族;引用 pg_opfamily.oid
opcintypeoid该操作符类所索引的数据类型;引用 pg_type.oid
opcdefaultbool为 true 表示该操作符类是其 opcintype 的默认操作符类
opckeytypeoid索引中存储的数据类型;与 opcintype 相同时为 0;引用 pg_type.oid

备注: 操作符类的 opcmethod 必须与其所属操作符族的 opfmethod 一致;对任意 (opcmethod, opcintype) 组合,至多只有一个 opcdefault 为 true 的操作符类。

pg_operator​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储操作符(operator)的相关信息。

列名类型描述
oidoid行标识符
oprnamename操作符名称
oprnamespaceoid操作符所在的命名空间;引用 pg_namespace.oid
oprowneroid操作符的属主;引用 pg_authid.oid
oprkindchar操作符类型:b = 中缀("both"),l = 前缀("left")
oprcanmergebool为 true 表示该操作符支持 merge join
oprcanhashbool为 true 表示该操作符支持 hash join
oprleftoid左操作数类型;前缀操作符为 0;引用 pg_type.oid
oprrightoid右操作数类型;引用 pg_type.oid
oprresultoid结果类型;尚未定义的 "shell" 操作符为 0;引用 pg_type.oid
oprcomoid该操作符的交换子(commutator);无则为 0;引用 pg_operator.oid
oprnegateoid该操作符的否定子(negator);无则为 0;引用 pg_operator.oid
oprcoderegproc实现该操作符的函数;尚未定义的 "shell" 操作符为 0;引用 pg_proc.oid
oprrestregproc该操作符的限制选择率估算函数;无则为 0;引用 pg_proc.oid
oprjoinregproc该操作符的连接选择率估算函数;无则为 0;引用 pg_proc.oid

pg_opfamily​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:定义操作符族(operator family),即某索引访问方法所用的一组相互兼容的操作符及支持函数的集合。

列名类型描述
oidoid行标识符
opfmethodoid该操作符族所属的索引访问方法;引用 pg_am.oid
opfnamename操作符族名称
opfnamespaceoid操作符族所在的命名空间;引用 pg_namespace.oid
opfowneroid操作符族的所有者;引用 pg_authid.oid

备注: 操作符族的具体内容(操作符与支持函数)并不在此表中,而是分别存储于 pg_amop、pg_amproc 和 pg_opclass。

pg_parameter_acl​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录已被授予一个或多个角色权限的配置参数(仅记录非默认权限的参数)。

列名类型描述
oidoid行标识符
parnametext被授予权限的配置参数名称
paraclaclitem[]访问权限列表(ACL)

备注: 与多数系统目录不同,pg_parameter_acl 在整个集群的所有数据库间共享,每个集群仅有一份。

pg_partitioned_table​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储分区表的分区方式信息(分区策略、分区键等)。

列名类型描述
partrelidoid该分区表在 pg_class 中的条目 OID;引用 pg_class.oid
partstratchar分区策略:h = 哈希分区,l = 列表分区,r = 范围分区
partnattsint2分区键中的列数
partdefidoid该分区表的默认分区在 pg_class 中的 OID,无默认分区时为零;引用 pg_class.oid
partattrsint2vector长度为 partnatts 的数组,指示分区键由哪些表列构成(如 1 3 表示第 1、3 列);其中 0 表示对应的分区键列为表达式而非简单列引用;引用 pg_attribute.attnum
partclassoidvector分区键各列所使用的操作符类 OID;引用 pg_opclass.oid
partcollationoidvector分区键各列所使用的排序规则 OID,不可排序类型为 0;引用 pg_collation.oid
partexprspg_node_tree分区键中非简单列引用部分的表达式树(nodeToString() 表示),与 partattrs 中每个 0 一一对应;全为简单列引用时为 null

备注: 通过 partrelid 与 pg_class 一一对应;该表本身无独立 oid 列,主键即 partrelid。

pg_policy​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表的行级安全(Row-Level Security)策略。

列名类型描述
oidoid行标识符
polnamename策略名称
polrelidoid该策略所作用的表;引用 pg_class.oid
polcmdchar策略适用的命令类型:r=SELECT,a=INSERT,w=UPDATE,d=DELETE,*=全部
polpermissivebool是否为宽容策略(true 为宽容型,false 为限制型)
polrolesoid[]策略适用的角色数组,0 表示 PUBLIC(通常单独出现在数组中);引用 pg_authid.oid
polqualpg_node_tree作为安全屏障条件添加到使用该表的查询中的表达式树
polwithcheckpg_node_tree作为 WITH CHECK 条件添加到试图向表中添加行的查询中的表达式树

备注: 仅当表的 pg_class.relrowsecurity 为 true 时,pg_policy 中的策略才会生效。

pg_proc​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储函数、过程、聚合函数和窗口函数(统称 routine)的相关信息。

列名类型描述
oidoid行标识符
pronamename函数名称
pronamespaceoid函数所在的命名空间;引用 pg_namespace.oid
proowneroid函数所有者;引用 pg_authid.oid
prolangoid实现语言或调用接口;引用 pg_language.oid
procostfloat4估算执行代价(单位为 cpu_operator_cost);若 proretset 为真,则为每行返回的代价
prorowsfloat4估算结果行数(非 proretset 时为 0)
provariadicoid可变参数数组元素的数据类型,无可变参数时为 0;引用 pg_type.oid
prosupportregproc该函数的规划器支持函数;无则为 0;引用 pg_proc.oid
prokindchar函数种类:f=普通函数,p=过程,a=聚合,w=窗口函数
prosecdefbool是否为 security definer("setuid")函数
proleakproofbool是否为 leakproof(无副作用,且除返回值外不泄露任何参数信息)
proisstrictbool是否为 strict 函数(任一参数为 NULL 即直接返回 NULL,不被实际调用)
proretsetbool是否返回集合(即返回指定类型的多个值)
provolatilechar易变性:i=immutable(同样输入恒定结果),s=stable(单次扫描内恒定),v=volatile(结果随时可能变化,含副作用)
proparallelchar并行安全性:s=并行安全,r=仅在并行 leader 中受限运行,u=并行不安全(强制串行计划)
pronargsint2输入参数个数
pronargdefaultsint2具有默认值的参数个数
prorettypeoid返回值数据类型;引用 pg_type.oid
proaccesschar🔵 访问控制代码(Halo 扩展列,PG16 无;对应 Oracle 兼容的函数 / 过程访问控制,如 ACCESSIBLE BY 子句相关;具体取值以实际库为准)
proargtypesoidvector函数参数类型数组(仅含输入参数,含 INOUT 和 VARIADIC),代表函数调用签名;下标从 0 开始;引用 pg_type.oid
proallargtypesoid[]全部参数(含 OUT、INOUT)的类型数组;全部为 IN 参数时为 null;下标从 1 开始;引用 pg_type.oid
proargmodeschar[]参数模式数组:i=IN,o=OUT,b=INOUT,v=VARIADIC,t=TABLE;全部为 IN 参数时为 null;下标对应 proallargtypes
proargnamestext[]参数名称数组,无名的参数为空字符串;全部无名时为 null;下标对应 proallargtypes
proargdefaultspg_node_tree默认值的表达式树(nodeToString() 表示),共 pronargdefaults 个元素,对应最后 N 个输入参数;无默认值时为 null
protrftypesoid[]通过 TRANSFORM 子句需要应用 transform 的参数/结果类型数组;无则为 null;引用 pg_type.oid
prosrctext告知函数处理器如何调用该函数的内容(可能是源代码、链接符号、文件名等,视语言而定)
probintext关于如何调用函数的附加信息(含义与语言相关)
prosqlbodypg_node_tree预解析的 SQL 函数体;仅用于以 SQL 标准语法书写的 SQL 语言函数,其他情况为 null
proconfigtext[]函数局部的运行时配置变量设置
proaclaclitem[]访问权限列表(ACL)
proreadonlybool🔵 是否为只读(read-only)函数 / 过程(Halo 扩展列,PG16 无;可空)

备注: proargtypes 由于历史原因下标从 0 开始,而 proallargtypes、proargmodes、proargnames 下标从 1 开始。Halo 在 PG16 基础上新增了 proaccess、proreadonly 两列,提供函数 / 过程的访问控制与只读语义。

pg_publication​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储当前数据库中创建的所有逻辑复制 publication(发布)。

列名类型描述
oidoid行标识符
pubnamename发布名称
pubowneroid发布所有者;引用 pg_authid.oid
puballtablesbool为 true 时,该发布自动包含数据库中的所有表(含未来创建的表)
pubinsertbool为 true 时,发布中的表会复制 INSERT 操作
pubupdatebool为 true 时,发布中的表会复制 UPDATE 操作
pubdeletebool为 true 时,发布中的表会复制 DELETE 操作
pubtruncatebool为 true 时,发布中的表会复制 TRUNCATE 操作
pubviarootbool为 true 时,对叶子分区的操作会通过其在发布中提及的最顶层分区祖先的身份和模式进行复制

备注: 该表为 per-database(每个数据库一份)。

pg_publication_namespace​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 schema 与 publication 之间的多对多映射。

列名类型描述
oidoid行标识符
pnpubidoid对应的 publication;引用 pg_publication.oid
pnnspidoid对应的 schema;引用 pg_namespace.oid

备注: 用于实现 PUBLICATION ... FOR TABLES IN SCHEMA 的映射关系。

pg_publication_rel​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 relation 与 publication 之间的多对多映射。

列名类型描述
oidoid行标识符
prpubidoid对应的 publication;引用 pg_publication.oid
prrelidoid对应的 relation;引用 pg_class.oid
prqualpg_node_tree该 relation 的发布过滤条件表达式树(nodeToString() 表示);无过滤条件时为 null
prattrsint2vector指示发布包含哪些表列的数组(如 1 3 表示发布第 1、3 列);为 null 表示发布全部列;引用 pg_attribute.attnum

备注: prqual 与 prattrs 用于支持发布的行过滤与列列表;该能力在 PostgreSQL 15 引入,PG16 继续保留。

pg_range​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 range 类型相关信息,是对 pg_type 中 range 类型条目的补充。

列名类型描述
rngtypidoidrange 类型的 OID;引用 pg_type.oid
rngsubtypeoid该 range 类型的元素类型(子类型)OID;引用 pg_type.oid
rngmultitypidoid该 range 类型对应的多范围(multirange)类型 OID;引用 pg_type.oid
rngcollationoidrange 比较所用排序规则的 OID,无则为 0;引用 pg_collation.oid
rngsubopcoid子类型比较所用操作符类的 OID;引用 pg_opclass.oid
rngcanonicalregproc将 range 值转换为规范形式的函数 OID,无则为 0;引用 pg_proc.oid
rngsubdiffregproc返回两个元素值之差(double precision)的函数 OID,无则为 0;引用 pg_proc.oid

备注: rngsubopc(若元素可排序再加上 rngcollation)决定 range 类型的排序;rngcanonical 用于离散元素类型;rngsubdiff 可选,但提供后可提升该 range 类型上 GiST 索引的性能。

pg_replication_origin​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储所有已创建的复制源(replication origin)。

列名类型描述
roidentoid复制源在集群范围内唯一的标识符,不应离开系统
ronametext复制源的外部、用户自定义名称

备注: 与多数系统目录不同,pg_replication_origin 在整个集群的所有数据库间共享,每个集群仅有一份。

pg_rewrite​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表和视图的重写规则(rewrite rule)。

列名类型描述
oidoid行标识符
rulenamename规则名称
ev_classoid该规则所属的表;引用 pg_class.oid
ev_typechar规则所针对的事件类型:1=SELECT,2=UPDATE,3=INSERT,4=DELETE
ev_enabledchar控制规则在哪些 session_replication_role 模式下触发:O=origin 和 local 模式触发,D=禁用,R=replica 模式触发,A=始终触发
is_insteadbool为 true 表示该规则是 INSTEAD 规则
ev_qualpg_node_tree规则限定条件的表达式树(nodeToString() 表示)
ev_actionpg_node_tree规则动作的查询树(nodeToString() 表示)

备注: 当表在此目录中存在任何规则时,对应的 pg_class.relhasrules 必须为 true。

pg_seclabel​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库对象上的安全标签(security label),由 SECURITY LABEL 命令维护。

列名类型描述
objoidoid此安全标签所属对象的 OID;引用任意 OID 列
classoidoid该对象所在的系统目录的 OID;引用 pg_class.oid
objsubidint4若是对表列的安全标签,则为列号(objoid/classoid 指代表本身);其他对象类型为零
providertext与此标签关联的标签提供者(label provider)
labeltext应用于此对象的安全标签

备注: 仅存储本数据库内对象的安全标签;集群范围内共享对象的安全标签见 pg_shseclabel。

pg_sequence​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储序列(sequence)的定义信息;序列名称、模式等位于 pg_class。

列名类型描述
seqrelidoid此序列在 pg_class 中对应项的 OID;引用 pg_class.oid
seqtypidoid序列的数据类型;引用 pg_type.oid
seqstartint8序列的起始值
seqincrementint8序列的步长(增量)
seqmaxint8序列的最大值
seqminint8序列的最小值
seqcacheint8序列的缓存大小
seqcyclebool序列是否循环(达到边界后回绕)

pg_shdepend​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:记录数据库对象与共享对象(如角色、表空间)之间的依赖关系,用于在删除共享对象前确保其未被引用。

列名类型描述
dbidoid依赖对象所在的数据库 OID,共享对象则为零;引用 pg_database.oid
classidoid依赖对象所在的系统目录 OID;引用 pg_class.oid
objidoid具体依赖对象的 OID;引用任意 OID 列
objsubidint4若是表列,则为列号(objid/classid 指代表本身);其他对象类型为零
refclassidoid被引用对象所在的系统目录 OID(必须是共享目录);引用 pg_class.oid
refobjidoid具体被引用对象的 OID;引用任意 OID 列
deptypechar标识依赖关系语义类型的代码:o=所有者、a=ACL、r=policy 目标、t=表空间引用

备注: 集群范围内共享(每个集群仅一份)。dep 目标目前仅支持角色与表空间;initdb 期间创建的对象被视为"pinned",不在此目录中记录。

pg_shdescription​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储共享数据库对象的可选描述(注释),由 COMMENT 命令维护。

列名类型描述
objoidoid此描述所属对象的 OID;引用任意 OID 列
classoidoid该对象所在的系统目录 OID;引用 pg_class.oid
descriptiontext作为此对象描述的任意文本

备注: 集群范围内共享(每个集群仅一份);单库内对象的描述见 pg_description。

pg_shseclabel​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储共享数据库对象上的安全标签,由 SECURITY LABEL 命令维护。

列名类型描述
objoidoid此安全标签所属对象的 OID;引用任意 OID 列
classoidoid该对象所在的系统目录 OID;引用 pg_class.oid
providertext与此标签关联的标签提供者
labeltext应用于此对象的安全标签

备注: 集群范围内共享(每个集群仅一份);单库内对象的安全标签见 pg_seclabel。

pg_statistic​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储关于数据库内容的统计信息,由 ANALYZE 写入并被查询规划器使用。

列名类型描述
starelidoid所描述列所属的表或索引;引用 pg_class.oid
staattnumint2所描述列的列号;引用 pg_attribute.attnum
stainheritbool为 true 时表示统计包含子表(继承/分区)的值,而非仅指定关系本身
stanullfracfloat4该列中为 NULL 的项所占比例
stawidthint4非 NULL 项的平均存储宽度(字节)
stadistinctfloat4列中不同非 NULL 值的数量:正值表示实际不同值数;负值为行数的乘子的相反数(如 -0.4 表示约 80% 非空且每值平均出现约两次);零表示未知
stakind1int2第 1 个"槽位"中存储的统计类型代码
stakind2int2第 2 个"槽位"中存储的统计类型代码
stakind3int2第 3 个"槽位"中存储的统计类型代码
stakind4int2第 4 个"槽位"中存储的统计类型代码
stakind5int2第 5 个"槽位"中存储的统计类型代码
staop1oid用于推导第 1 个槽位统计的运算符(如直方图的 <),不需要时为零;引用 pg_operator.oid
staop2oid用于推导第 2 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid
staop3oid用于推导第 3 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid
staop4oid用于推导第 4 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid
staop5oid用于推导第 5 个槽位统计的运算符,不需要时为零;引用 pg_operator.oid
stacoll1oid用于推导第 1 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid
stacoll2oid用于推导第 2 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid
stacoll3oid用于推导第 3 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid
stacoll4oid用于推导第 4 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid
stacoll5oid用于推导第 5 个槽位统计的排序规则,非可排序数据为零;引用 pg_collation.oid
stanumbers1float4[]第 1 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL
stanumbers2float4[]第 2 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL
stanumbers3float4[]第 3 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL
stanumbers4float4[]第 4 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL
stanumbers5float4[]第 5 个槽位对应类型的数值型统计;该类型不涉及数值时为 NULL
stavalues1anyarray第 1 个槽位对应类型的列数据值统计,不存储数据值时为 NULL(元素实际为该列类型或相关类型)
stavalues2anyarray第 2 个槽位对应类型的列数据值统计,不存储数据值时为 NULL
stavalues3anyarray第 3 个槽位对应类型的列数据值统计,不存储数据值时为 NULL
stavalues4anyarray第 4 个槽位对应类型的列数据值统计,不存储数据值时为 NULL
stavalues5anyarray第 5 个槽位对应类型的列数据值统计,不存储数据值时为 NULL

备注: 通常每个被分析列有一条 stainherit=false 记录;存在继承/分区子表时另有一条 stainherit=true 记录。索引表达式也按虚拟列方式记录。该表不对 PUBLIC 可读,公开视图为 pg_stats。

pg_statistic_ext​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放扩展规划器统计(statistics object)的定义,每行对应一个由 CREATE STATISTICS 创建的统计对象。

列名类型描述
oidoid行标识符
stxrelidoid包含被统计列的表;引用 pg_class.oid
stxnamename统计对象的名称
stxnamespaceoid包含此统计对象的命名空间 OID;引用 pg_namespace.oid
stxowneroid统计对象的所有者;引用 pg_authid.oid
stxstattargetint4控制 ANALYZE 为此对象收集统计的详细程度:零表示不收集;负值表示取被引用列统计目标的最大值或系统默认值;正值决定要收集的最常见值目标数
stxkeysint2vector此统计对象覆盖的表列属性号数组,如 1 3 表示覆盖第 1、3 列;引用 pg_attribute.attnum
stxkindchar[]启用的统计类型代码数组:d=n-distinct、f=函数依赖、m=MCV 列表、e=表达式统计
stxexprspg_node_tree非简单列引用的统计对象属性的表达式树(nodeToString() 表示),每表达式一个元素的列表;全部为简单引用时为 NULL

备注: 在 CREATE STATISTICS 时填入完整定义,但实际统计值由后续 ANALYZE 计算并写入 pg_statistic_ext_data。

pg_statistic_ext_data​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放 pg_statistic_ext 中定义的扩展统计对象被 ANALYZE 计算出的实际统计数据。

列名类型描述
stxoidoid此数据所属的扩展统计对象(提供定义);引用 pg_statistic_ext.oid
stxdinheritbool为 true 时表示统计包含子表的值,而非仅指定关系本身
stxdndistinctpg_ndistinctN-distinct 计数,序列化为 pg_ndistinct 类型
stxddependenciespg_dependencies函数依赖统计,序列化为 pg_dependencies 类型
stxdmcvpg_mcv_list最常见值(MCV)列表统计,序列化为 pg_mcv_list 类型
stxdexprpg_statistic[]每个表达式的统计信息,序列化为 pg_statistic 类型的数组

备注: 通常每个已分析的统计对象有一条 stxdinherit=false 记录;存在继承/分区子表时另有一条 stxdinherit=true 记录。该表不对 PUBLIC 可读,公开视图为 pg_stats_ext(与 pg_statistic_ext 连接)。

pg_subscription​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放集群中所有现存的逻辑复制订阅(logical replication subscription)。

列名类型描述
oidoid行标识符
subdbidoid订阅所在的数据库的 OID;引用 pg_database.oid
subskiplsnpg_lsn待跳过其更改的事务的结束 LSN(有效时);否则为 0/0
subnamename订阅的名称
subowneroid订阅的所有者;引用 pg_authid.oid
subenabledbool为 true 时订阅已启用,应进行复制
subbinarybool为 true 时订阅请求发布者以二进制格式发送数据
substreamchar控制进行中事务的流式处理方式:f=不允许、t=落盘并在提交后一次性应用、p=在可用时由并行 apply worker 直接应用(不可用时同 t)
subtwophasestatechar两阶段模式状态码:d=禁用、p=待启用、e=已启用
subdisableonerrbool为 true 时,若其某个 worker 检测到错误则禁用该订阅
subpasswordrequiredbool为 true 时订阅必须指定用于认证的密码
subrunasownerbool为 true 时订阅以订阅所有者的权限运行
subconninfotext到上游数据库的连接串(普通用户不可访问,可能含明文密码)
subslotnamename上游数据库中复制槽的名称(同时用作本地复制源名称);NULL 表示 NONE
subsynccommittext订阅 worker 使用的 synchronous_commit 设置
subpublicationstext[]已订阅的发布名称数组,引用上游数据库中定义的发布
suborigintext源过滤值:none 表示仅请求无来源的更改,any 表示不论来源都发送(默认 any)

备注: 集群范围内共享(每个集群仅一份)。subconninfo 列对普通用户撤销了访问权限。

pg_subscription_rel​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存放每个订阅中每个被复制关系(表)的状态,是一个多对多映射。

列名类型描述
srsubidoid对订阅的引用;引用 pg_subscription.oid
srrelidoid对关系(表)的引用;引用 pg_class.oid
srsubstatechar状态码:i=初始化、d=数据复制中、f=表复制完成、s=已同步、r=就绪(正常复制)
srsublsnpg_lsn用于同步协调的状态变更远程 LSN(处于 s 或 r 状态时),否则为 NULL

备注: 仅包含在执行 CREATE SUBSCRIPTION 或 ALTER SUBSCRIPTION ... REFRESH PUBLICATION 后订阅已知的表。

pg_tablespace​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储集群中可用表空间的信息,便于将表放置到不同物理位置以管理磁盘布局。

列名类型描述
oidoid行标识符
spcnamename表空间名称
spcowneroid表空间属主,通常为创建该表空间的用户;引用 pg_authid.oid
spcaclaclitem[]访问权限(ACL)
spcoptionstext[]表空间级选项,以“keyword=value”字符串形式存储

备注: 与大多数系统目录不同,pg_tablespace 在整个集群范围内共享,每个集群只有一份副本,而非每个数据库各一份。

pg_transform​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储 transform(变换)信息,transform 是一种将数据类型适配到过程语言的机制。

列名类型描述
oidoid行标识符
trftypeoid此 transform 所针对的数据类型 OID;引用 pg_type.oid
trflangoid此 transform 所针对的语言 OID;引用 pg_language.oid
trffromsqlregproc将该数据类型转换为过程语言输入(如函数参数)时所用函数的 OID,为 0 时表示使用默认行为;引用 pg_proc.oid
trftosqlregproc将过程语言输出(如返回值)转换为该数据类型时所用函数的 OID,为 0 时表示使用默认行为;引用 pg_proc.oid

备注: 同一(数据类型,语言)组合在表中唯一,参见 CREATE TRANSFORM。

pg_trigger​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储表和视图上的触发器信息。

列名类型描述
oidoid行标识符
tgrelidoid此触发器所属的表;引用 pg_class.oid
tgparentidoid此触发器被克隆自的父触发器(在分区创建或挂接到分区表时发生);非克隆时为 0;引用 pg_trigger.oid
tgnamename触发器名称(在同一表内须唯一)
tgfoidoid触发器调用的函数;引用 pg_proc.oid
tgtypeint2标识触发时机的位掩码(事件与动作的组合)
tgenabledchar控制在哪些 session_replication_role 模式下触发:O=origin/local 模式触发,D=禁用,R=replica 模式触发,A=总是触发
tgisinternalbool为 true 表示该触发器由系统内部生成(通常用于实现 tgconstraint 所指约束)
tgconstrrelidoid引用完整性约束所引用的表(非此类约束触发器时为 0);引用 pg_class.oid
tgconstrindidoid支持唯一、主键、引用完整性或排他约束的索引(非此类约束触发器时为 0);引用 pg_class.oid
tgconstraintoid与此触发器关联的 pg_constraint 条目(非约束触发器时为 0);引用 pg_constraint.oid
tgdeferrablebool为 true 表示该约束触发器是可延迟的
tginitdeferredbool为 true 表示该约束触发器初始为延迟执行
tgnargsint2传递给触发器函数的参数字符串个数
tgattrint2vector列特定触发器涉及的列号;否则为空数组;引用 pg_attribute.attnum
tgargsbytea传递给触发器的参数字符串,每个以 NULL 结尾
tgqualpg_node_tree触发器 WHEN 条件的表达式树(nodeToString() 表示),无则为 null
tgoldtablenameREFERENCING 子句中 OLD TABLE 的名称,无则为 null
tgnewtablenameREFERENCING 子句中 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 的词典列表。

列名类型描述
oidoid行标识符
cfgnamename文本搜索配置名称
cfgnamespaceoid包含此配置的命名空间 OID;引用 pg_namespace.oid
cfgowneroid配置的属主;引用 pg_authid.oid
cfgparseroid此配置所用的文本搜索解析器 OID;引用 pg_ts_parser.oid

备注: token 到词典的映射由 pg_ts_config_map 中的附属条目定义。

pg_ts_config_map​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索配置中针对解析器输出的每种 token 类型应依次查询哪些词典的映射条目。

列名类型描述
mapcfgoid拥有此映射条目的 pg_ts_config 条目 OID;引用 pg_ts_config.oid
maptokentypeint4配置所用解析器输出的一种 token 类型
mapseqnoint4查询此条目的顺序(mapseqno 较小者先查询)
mapdictoid要查询的文本搜索词典 OID;引用 pg_ts_dict.oid

备注: 一个配置对同一 token 类型可有多条按 mapseqno 排序的映射条目。

pg_ts_dict​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索词典条目;词典依赖文本搜索模板,由词典提供模板所支持的用户可设参数值。

列名类型描述
oidoid行标识符
dictnamename文本搜索词典名称
dictnamespaceoid包含此词典的命名空间 OID;引用 pg_namespace.oid
dictowneroid词典的属主;引用 pg_authid.oid
dicttemplateoid此词典所用的文本搜索模板 OID;引用 pg_ts_template.oid
dictinitoptiontext模板的初始化选项字符串

备注: 实现函数由模板提供,参数值由词典以文本字符串 dictinitoption 给出,其格式与含义取决于具体模板;这种分工使非特权用户也能创建词典。

pg_ts_parser​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索解析器条目;解析器负责将输入文本切分为词素并为每个词素分配类型。

列名类型描述
oidoid行标识符
prsnamename文本搜索解析器名称
prsnamespaceoid包含此解析器的命名空间 OID;引用 pg_namespace.oid
prsstartregproc解析器启动函数的 OID;引用 pg_proc.oid
prstokenregproc解析器取下一 token 函数的 OID;引用 pg_proc.oid
prsendregproc解析器关闭函数的 OID;引用 pg_proc.oid
prsheadlineregproc解析器 headline(摘要高亮)函数的 OID,无则为 0;引用 pg_proc.oid
prslextyperegproc解析器 lextype(词素类型)函数的 OID;引用 pg_proc.oid

备注: 解析器必须由 C 语言函数实现,因此新建解析器仅限数据库超级用户。

pg_ts_template​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储文本搜索模板条目;模板是一类文本搜索词典的实现骨架。

列名类型描述
oidoid行标识符
tmplnamename文本搜索模板名称
tmplnamespaceoid包含此模板的命名空间 OID;引用 pg_namespace.oid
tmplinitregproc模板初始化函数的 OID,无则为 0;引用 pg_proc.oid
tmpllexizeregproc模板 lexize(词素归一化)函数的 OID;引用 pg_proc.oid

备注: 模板必须由 C 语言函数实现,因此新建模板仅限数据库超级用户。

pg_type​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据类型的信息(基类型、枚举类型、域、复合类型、伪类型、范围类型、多范围类型等)。

列名类型描述
oidoid行标识符
typnamename数据类型名称
typnamespaceoid包含此类型的命名空间 OID;引用 pg_namespace.oid
typowneroid类型的属主;引用 pg_authid.oid
typlenint2固定长度类型为内部表示的字节数;变长类型为负数:-1 表示 varlena 类型(带长度字),-2 表示以 NULL 结尾的 C 字符串
typbyvalbool内部例程是否按值传递该类型(true 按值,false 按引用);变长类型恒为按引用
typtypechar类型种类:b=基类型,c=复合类型,d=域,e=枚举,p=伪类型,r=范围类型,m=多范围类型
typcategorychar解析器用于确定隐式转换“首选”目标类型的任意分类码
typispreferredbool为 true 表示此类型是其 typcategory 中首选的转换目标
typisdefinedbool为 true 表示类型已定义;为 false 表示这是尚未定义类型的占位条目
typdelimchar解析数组输入时分隔两个本类型值的字符(与数组元素类型相关,而非数组类型)
typrelidoid若为复合类型,指向定义对应表的 pg_class 条目;非复合类型为 0;引用 pg_class.oid
typsubscriptregproc下标处理函数的 OID,不支持下标则为 0;真正的数组类型此值为 array_subscript_handler;引用 pg_proc.oid
typelemoid非 0 时标识 pg_type 中另一行,定义下标取值结果类型;typsubscript 为 0 时应为 0;引用 pg_type.oid
typarrayoid非 0 时标识 pg_type 中以本类型为元素的“真正”数组类型;引用 pg_type.oid
typinputregproc输入转换函数(文本格式);引用 pg_proc.oid
typoutputregproc输出转换函数(文本格式);引用 pg_proc.oid
typreceiveregproc输入转换函数(二进制格式),无则为 0;引用 pg_proc.oid
typsendregproc输出转换函数(二进制格式),无则为 0;引用 pg_proc.oid
typmodinregproc类型修饰符输入函数,不支持修饰符则为 0;引用 pg_proc.oid
typmodoutregproc类型修饰符输出函数,为 0 则使用标准格式;引用 pg_proc.oid
typanalyzeregproc自定义 ANALYZE 函数,为 0 则使用标准函数;引用 pg_proc.oid
typalignchar存储该类型值时所需对齐方式:c=char(无对齐),s=short(2 字节),i=int(4 字节),d=double(8 字节)
typstoragechar针对 varlena 类型(typlen=-1)的 TOAST 策略:p=plain 始终行内存储,e=external 可外存到 TOAST 表,m=main 可压缩并尽量行内存储,x=extended 可压缩或外存(默认)
typnotnullbool类型的 NOT NULL 约束(仅用于域)
typbasetypeoid若为域,标识其所基于的类型;非域则为 0;引用 pg_type.oid
typtypmodint4域记录要应用到基类型的 typmod(基类型不用 typmod 时为 -1);非域为 -1
typndimsint4基于数组的域的数组维度数;其他类型为 0
typcollationoid类型的排序规则 OID;不支持排序规则时为 0;引用 pg_collation.oid
typaccesschar🔵 访问控制代码(Halo 扩展列,PG16 无;对应 Oracle 兼容的类型访问控制,如 ACCESSIBLE BY 子句相关;具体取值以实际库为准)
typdefaultbinpg_node_tree若非 null,则是类型默认表达式的 nodeToString() 表示(仅用于域)
typdefaulttext类型的默认值;typdefaultbin 非 null 时为其人类可读版本;否则为默认值的外部表示,可为 null
typaclaclitem[]访问权限(ACL)

备注: 复合类型与 pg_class 关联(见 typrelid);域的相关列(typbasetype、typtypmod、typndims、typdefaultbin、typnotnull)仅对域有意义。Halo 在 PG16 基础上新增了 typaccess 列,提供类型的访问控制语义。

pg_user_mapping​

类型:系统目录表(BASE TABLE),pg_catalog 模式 用途:存储本地用户到外部远程用户的映射,用于外部数据封装(FDW)。

列名类型描述
oidoid行标识符
umuseroid被映射的本地角色 OID,公共映射则为 0;引用 pg_authid.oid
umserveroid包含此映射的外部服务器 OID;引用 pg_foreign_server.oid
umoptionstext[]用户映射特定的选项,以“keyword=value”字符串形式存储

备注: 普通用户对该目录的访问受限,应改用视图 pg_user_mappings 查询。

pg_synonym​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储同义词(SYNONYM)对象的元数据,支持 Oracle 兼容语法 CREATE [PUBLIC] SYNONYM name FOR schema.obj,为本库或远端对象(表、视图、序列、函数、包等)建立别名。

列名类型描述
oidoid行标识符
synnamename同义词名称
synnamespaceoid同义词所属模式;引用 pg_namespace.oid
synowneroid同义词所有者;引用 pg_authid.oid
synobjschemaname目标对象所在模式名
synobjnamename目标对象名称
synspectext同义词定义的原始说明文本(CREATE SYNONYM 语句的 spec)
synlinktext关联信息(如指向数据库链接 / 远端对象时的引用串);无则为 null

备注: 字段已据实际库核对(8 列,均 NOT NULL 除 synlink 外)。

pg_directory​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储目录对象(DIRECTORY)的元数据,支持 Oracle 兼容语法 CREATE [OR REPLACE] DIRECTORY name AS 'filesystem_path',为外部文件访问(如 BFILE、外部表、导入导出)提供逻辑目录别名。

列名类型描述
oidoid行标识符
dirnamename目录对象名称
dirowneroid所有者;引用 pg_authid.oid
dirpathtext对应的操作系统文件系统路径
diraclaclitem[]访问权限(ACL);未授予时为 null

备注: 字段已据实际库核对(5 列)。注意本表无 namespace 列,目录对象直接由属主持有。

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储数据库链接(DATABASE LINK)的元数据,支持 Oracle 兼容语法 CREATE [PUBLIC] DATABASE LINK name CONNECT TO ... USING ...,用于跨库访问远端数据库对象。

列名类型描述
oidoid行标识符
namename数据库链接名称
nspoidoid所属模式;引用 pg_namespace.oid
umoidoid关联的用户映射(user mapping);引用 pg_user_mapping.oid
dblinksrctext连接源信息(远端连接目标 / 连接描述串)

备注: 字段已据实际库核对(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。

列名类型描述
oidoid行标识符
nameSpaceoid对象所在模式;引用 pg_namespace.oid(列名为驼峰式 nameSpace)
owneroid对象所有者;引用 pg_authid.oid
object_namename回收站中对象的系统生成名(类似 Oracle 的 BIN$...)
original_namename对象原始名称
operationchar触发进入回收站的操作代码(如 DROP);具体取值以实际库为准
typechar对象类型代码(表 / 索引 / 视图等,单字符编码);具体取值以实际库为准
tsoid所在表空间;引用 pg_tablespace.oid
createtimename对象创建时间(以文本形式存储)
droptimename对象删除(进入回收站)时间(以文本形式存储)
can_undropbool是否可被 FLASHBACK ... TO BEFORE DROP 恢复
can_purgebool是否可被 PURGE 清除
relatedoid关联对象的 OID(与 Oracle DBA_RECYCLEBIN.RELATED 语义一致)
base_objectoid关联基对象的 OID;引用 pg_class.oid
purge_objectoid清除时需一并处理的对象 OID
spaceint4对象占用空间大小
partition_namechar相关分区名(非分区对象为占位字符)

备注: 字段已据实际库核对(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)源代码。

列名类型描述
oidoid行标识符
pkgnamename包名称
pkgnamespaceoid所属模式;引用 pg_namespace.oid
pkgowneroid所有者;引用 pg_authid.oid
pkgsecdefbool是否以定义者(security definer / setuid)权限执行包内子程序
pkgspectext包说明(PACKAGE SPEC)源代码
pkgbodytext包体(PACKAGE BODY)源代码;仅有说明而无体时为 null
pkgaclaclitem[]访问权限(ACL);未授予时为 null

备注: 字段已据实际库核对(8 列)。与早期推断不同,实际表中同时存放 spec 与 body(pkgspec / pkgbody),而非单独的目录;另含 pkgsecdef 执行权限标记。

pg_typebody​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储对象类型体(TYPE BODY)的元数据,支持 Oracle 兼容语法 CREATE TYPE BODY,记录对象类型的构造函数与成员 / 静态过程的 OID 及源代码。

列名类型描述
oidoid行标识符
constructorprocoidvector构造函数(constructor)的 OID 列表;引用 pg_proc.oid;无则为 null
memberprocoidvector成员过程 / 函数(MEMBER)的 OID 列表;引用 pg_proc.oid;无则为 null
staticprocoidvector静态过程 / 函数(STATIC)的 OID 列表;引用 pg_proc.oid;无则为 null
typespectext类型说明(TYPE SPEC)源代码
typebodyspectext类型体(TYPE BODY)源代码;无体时为 null

备注: 字段已据实际库核对(6 列)。与早期推断不同,实际表并不按"名称 / 模式 / 属主"组织,而是以三组 oidvector(构造 / 成员 / 静态过程)组织成员,并保留 spec / body 源代码。

pg_variable​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:存储变量的元数据,支持包级 / 会话级变量、常量及带参变量(Oracle 兼容,PL/SQL 包变量、ACCESSIBLE BY 等)。

列名类型描述
oidoid行标识符
varnamename变量名
varnamespaceoid所属模式;引用 pg_namespace.oid
vartypeoid变量数据类型;引用 pg_type.oid
vartypmodint4类型修饰符(如变长类型的长度)
varowneroid所有者;引用 pg_authid.oid
varcollationoid排序规则;引用 pg_collation.oid
varisnotnullbool是否 NOT NULL
varisimmutablebool是否不可变(赋值后不可更改)
vareoxactionchar事务结束时的动作代码(如 RESET / KEEP);具体取值以实际库为准
varisconstbool是否为常量(CONSTANT)
varnargsint2变量为带参构造时的参数个数
varisboundbool是否已绑定(bound)
varresulttypeoid带参变量的结果类型;引用 pg_type.oid
vardefexprpg_node_tree默认值 / 初值的表达式树(nodeToString() 表示);无则为 null
varargnamestext[]参数名数组;无则为 null
varargtypesoid[]参数类型数组;引用 pg_type.oid;无则为 null
varaclaclitem[]访问权限(ACL);未授予时为 null
varaccesschar访问控制代码(可空;具体取值以实际库为准)

备注: 字段已据实际库核对(19 列)。变量语义较推断更丰富:支持常量(varisconst)、不可变(varisimmutable)、事务结束动作(vareoxaction)、带参变量(varnargs / varargnames / varargtypes / varresulttype)等。

pg_viewdef​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:缓存每个视图的定义文本与只读标记。本实例中含 143 行,与当前库视图数一致(每视图一条)。

列名类型描述
oidoid行标识符,对应视图关系的 OID;引用 pg_class.oid
definitiontext视图的可读定义文本
viewreadonlybool是否为只读视图;可空

备注: 字段已据实际库核对(3 列)。该表是在 pg_rewrite 规则与标准视图 pg_views 之外,额外保存视图定义文本(与只读属性)的 Halo 专有目录。

pg_model​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:注册库内 AI/ML 模型的定义(名称、类型、提供方、算法及选项),配合 pg_mrt(模型运行时)实现 in-database 模型管理。当前库为空(0 行)。

列名类型描述
oidoid行标识符
model_namename模型名称
model_typeint4模型类型代码(数值编码)
model_provideroid模型提供方(provider)的标识(OID)
model_algorithmint4模型算法代码(数值编码)
model_algorithm_desctext算法的文本描述
model_optionstext[]模型选项("keyword=value" 形式);无则为 null
model_aclaclitem[]访问权限(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 模型推理运行时。

列名类型描述
oidoid行标识符
mrtnamename模型运行时名称(如 ggufmrt)
mrthandlerregproc提供该运行时详细信息的处理器函数;引用 pg_proc.oid
mrttypechar运行时类型代码(本实例为 a);具体取值以实际库为准

备注: 字段已据实际库核对(4 列)。"MRT" 在公开资料中暂无明确释义,据本机数据(ggufmrt / mrt_gguf_handler)暂推断为 Model RunTime(库内 AI 模型运行时)的注册表;具体语义以 Halo 官方说明为准。

pg_querymap​

类型:Halo 扩展系统目录表(BASE TABLE),pg_catalog 模式 用途:记录查询映射 / 改写规则,将一条(常为 Oracle 风格的)SQL 语句映射为另一条等价语句,用于 Oracle 兼容的 SQL 翻译、语句改写或绑定变量映射。当前库为空(0 行)。

列名类型描述
queryidhiint4查询 ID 的高 32 位(与 queryidlo 共同构成 64 位查询标识)
queryidloint4查询 ID 的低 32 位
original_stmttext原始 SQL 语句文本
mapped_stmttext映射 / 改写后的 SQL 语句文本;无改写时为 null
autobindbool是否启用自动绑定变量;可空
varmapint2[]变量映射信息数组;可空
createtimetimestamp with time zone该映射的创建时间;可空
isvalidbool该映射是否仍然有效;可空

备注: 字段已据实际库核对(8 列)。queryidhi / queryidlo 拼接为 64 位查询 ID(与 PG 内部 query id 的双 32 位表示一致)。

pg_available_extension_versions​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可安装的扩展的各个具体版本。

列名类型描述
namename扩展名称
versiontext版本名称
installedboolean若该扩展的此版本当前已安装则为 true
superuserboolean若仅允许超级用户安装此扩展则为 true(另见 trusted)
trustedboolean若允许具有适当权限的非超级用户安装此扩展则为 true
relocatableboolean若扩展可被迁移到其他模式则为 true
schemaname此扩展必须安装到的模式名称;若部分或完全可迁移则为 NULL
requiresname[]前置依赖扩展的名称数组;无依赖则为 NULL
commenttext来自扩展控制文件的注释字符串

备注: 该视图只读;每行对应一个可用的扩展版本。

pg_available_extensions​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可安装的扩展(按扩展而非版本汇总)。

列名类型描述
namename扩展名称
default_versiontext默认版本名称;未指定则为 NULL
installed_versiontext该扩展当前已安装的版本;未安装则为 NULL
commenttext来自扩展控制文件的注释字符串

备注: 该视图只读;已安装的扩展信息见 pg_extension 目录。

pg_backend_memory_contexts​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前会话所连接的服务器进程的全部内存上下文。

列名类型描述
nametext内存上下文名称
identtext内存上下文的标识信息(截断为 1024 字节)
parenttext此内存上下文的父上下文名称
levelinteger在上下文树中距离 TopMemoryContext 的层级
total_bytesbigint此内存上下文分配的总字节数
total_nblocksbigint此内存上下文分配的总块数
free_bytesbigint空闲空间字节数
free_chunksbigint空闲块的总数
used_bytesbigint已使用空间字节数

备注: 默认仅超级用户或具有 pg_read_all_stats 角色权限的角色可读;每个内存上下文占一行。

pg_config​

类型:系统视图(VIEW),pg_catalog 模式 用途:描述当前已安装 PostgreSQL 版本的编译期配置参数。

列名类型描述
nametext参数名称
settingtext参数值

备注: 默认仅超级用户可读;提供与 pg_config 客户端应用相同的基本信息,便于外部软件包查找头文件和库。

pg_cursors​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出当前可用的游标。

列名类型描述
nametext游标名称
statementtext声明该游标时提交的原始查询字符串
is_holdableboolean若游标可保持(即在声明它的事务提交后仍可访问)则为 true,否则为 false
is_binaryboolean若游标以 BINARY 方式声明则为 true,否则为 false
is_scrollableboolean若游标可滚动(即允许非顺序检索行)则为 true,否则为 false
creation_timetimestamp with time zone游标被声明的时间

备注: 该视图只读;非保持游标仅存在于其创建事务的持续期内。

pg_file_settings​

类型:系统视图(VIEW),pg_catalog 模式 用途:汇总服务器配置文件的内容,并对每个 "name = value" 条目标注是否可成功应用。

列名类型描述
sourcefiletext配置文件的完整路径名
sourcelineinteger该条目在配置文件中出现的行号
seqnoint4条目被处理的顺序(1..n)
nametext配置参数名称
settingtext要赋予该参数的值
appliedboolean若该值可成功应用则为 true
errortext若不为空,则为指示该条目无法应用原因的错误消息

备注: 默认仅超级用户可读;反映配置文件当前内容而非服务器上次应用的状态(后者可参考 pg_settings)。

pg_group​

类型:系统视图(VIEW),pg_catalog 模式 用途:为向后兼容而保留,模拟 PostgreSQL 8.1 之前存在的目录,显示用作“组”的角色及其成员。

列名类型描述
gronamename组的名称
grosysidoid此组的 ID
grolistoid[]包含此组中各角色 ID 的数组

备注: 仅展示被标记为 rolcanlogin 为假的角色(即近似地作为组使用的角色)。

pg_hba_file_rules​

类型:系统视图(VIEW),pg_catalog 模式 用途:汇总客户端认证配置文件 pg_hba.conf 的内容,每条非空非注释规则占一行并标注是否可成功应用。

列名类型描述
rule_numberint4此规则的编号(若有效),否则为 NULL;表示认证时逐条匹配直至命中的顺序
file_nametext包含此规则的文件名
line_numberint4此规则在 file_name 中的行号
typetext连接类型
databasetext[]此规则适用的数据库名称列表
user_nametext[]此规则适用的用户和组名称列表
addresstext主机名或 IP 地址,或 all/samehost/samenet 之一;本地连接为 NULL
netmasktextIP 地址掩码;不适用时为 NULL
auth_methodtext认证方法
optionstext[]为认证方法指定的选项(若有)
errortext若不为空,则为指示该行无法被处理的错误消息

备注: 默认仅超级用户可读;反映文件当前内容而非服务器上次加载的状态。

pg_ident_file_mappings​

类型:系统视图(VIEW),pg_catalog 模式 用途:汇总客户端用户名映射配置文件 pg_ident.conf 的内容,每条非空非注释映射占一行并标注是否可成功应用。

列名类型描述
map_numberint4此映射按优先级排序的编号(若有效),否则为 NULL
file_nametext包含此映射的文件名
line_numberint4此映射在 file_name 中的行号
map_nametext映射名称
sys_nametext检测到的客户端系统用户名
pg_usernametext请求的 PostgreSQL 用户名
errortext若不为 NULL,则为指示该行无法被处理的错误消息

备注: 默认仅超级用户可读;错误行通常仅有 line_number 和 error 字段有值。

pg_indexes​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个索引的有用信息。

列名类型描述
schemanamename包含表和索引的模式名称
tablenamename该索引所属表的名称
indexnamename索引名称
tablespacename包含该索引的表空间名称(若为数据库默认则为 NULL)
indexdeftext索引定义(重构出的 CREATE INDEX 命令)

pg_locks​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库服务器内活动进程所持有或等待的锁的信息。

列名类型描述
locktypetext可锁定对象的类型:relation、extend、frozenid、page、tuple、transactionid、virtualxid、spectoken、object、userlock、advisory 或 applytransaction
databaseoid锁目标所在数据库的 OID;共享对象为 0,事务 ID 为 NULL
relationoid锁目标关系的 OID;非关系或其部分时为 NULL
pageinteger锁目标在关系内的页号;非关系页或元组时为 NULL
tuplesmallint锁目标在页内的元组号;非元组时为 NULL
virtualxidtext锁目标事务的虚拟 ID;非虚拟事务 ID 时为 NULL
transactionidxid锁目标事务的 ID;非事务 ID 时为 NULL
classidoid包含锁目标的系统目录 OID;非一般数据库对象时为 NULL
objidoid锁目标在其系统目录内的 OID;非一般数据库对象时为 NULL
objsubidsmallint锁目标的列号(其他一般对象为 0);非一般数据库对象时为 NULL
virtualtransactiontext持有或等待此锁的事务的虚拟 ID
pidinteger持有或等待此锁的服务器进程 ID;由预备事务持有时为 NULL
modetext此进程持有或期望的锁模式名称
grantedboolean若锁已持有则为 true,若在等待则为 false
fastpathboolean若锁经快速路径获取则为 true,经主锁表获取则为 false
waitstarttimestamp with time zone服务器进程开始等待此锁的时间;锁已持有时为 NULL

备注: 同一可锁定对象可能因多进程或不同锁模式而出现多行;当前无锁的对象不会出现。pid 可与 pg_stat_activity.pid 关联以获取会话详情。

pg_matviews​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个物化视图的有用信息。

列名类型描述
schemanamename包含物化视图的模式名称
matviewnamename物化视图名称
matviewownername物化视图所有者名称
tablespacename包含物化视图的表空间名称(若为数据库默认则为 NULL)
hasindexesboolean若物化视图具有(或最近曾具有)任何索引则为 true
ispopulatedboolean若物化视图当前已填充数据则为 true
definitiontext物化视图定义(重构出的 SELECT 查询)

pg_policies​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个行级安全策略的有用信息。

列名类型描述
schemanamename包含该策略所属表的模式名称
tablenamename该策略所属表的名称
policynamename策略名称
permissivetext该策略是 PERMISSIVE(宽容)还是 RESTRICTIVE(限制)
rolesname[]此策略适用的角色列表
cmdtext该策略适用的命令类型
qualtext为该策略适用的查询添加到安全屏障条件的表达式
with_checktext为该策略适用的、尝试向表添加行的查询添加到 WITH CHECK 条件的表达式

pg_prepared_statements​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前会话中可用的所有预备语句(prepared statement)。

列名类型描述
nametext预备语句的标识符
statementtext客户端创建该预备语句时提交的查询字符串。通过 SQL 的 PREPARE 创建时为该 PREPARE 语句;通过前端/后端协议创建时为预备语句本身的文本
prepare_timetimestamp with time zone该预备语句的创建时间
parameter_typesregtype[]预备语句的期望参数类型数组(元素为 regtype);将元素转换为 oid 可得到对应类型 OID
result_typesregtype[]预备语句返回列的类型数组(元素为 regtype)。若不返回结果(如 DML 语句),则为 NULL
from_sqlboolean若通过 PREPARE SQL 命令创建则为 true;若通过前端/后端协议创建则为 false
generic_plansbigint选用通用计划(generic plan)的次数
custom_plansbigint选用自定义计划(custom plan)的次数

备注: 每个预备语句一行;新建时加入,释放(如 DEALLOCATE)时移除。该视图只读。

pg_prepared_xacts​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示当前已为两阶段提交(two-phase commit)预备好的事务。

列名类型描述
transactionxid预备事务的数字事务标识符
gidtext为该事务分配的全局事务标识符
preparedtimestamp with time zone该事务被预备(PREPARE)提交的时间
ownername执行该事务的用户名(引用 pg_authid.rolname)
databasename该事务所在的数据库名(引用 pg_database.datname)

备注: 事务提交或回滚后对应行被删除。访问该视图时会短暂锁住内部事务管理数据结构并拷贝一份以保持结果一致。

pg_publication_tables​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示逻辑发布(publication)与其所包含表之间的映射关系。

列名类型描述
pubnamename发布名称(引用 pg_publication.pubname)
schemanamename表所属的模式名(引用 pg_namespace.nspname)
tablenamename表名(引用 pg_class.relname)
attnamesname[]发布中包含的表列名数组(引用 pg_attribute.attname)。若用户未为该表指定列清单,则包含该表的全部列
rowfiltertext该表在发布中的行过滤条件表达式

备注: 与底层目录 pg_publication_rel 不同,该视图会展开 FOR ALL TABLES 与 FOR TABLES IN SCHEMA 形式定义的发布,使每个符合条件的表各占一行。

pg_replication_origin_status​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示各复制源(replication origin)的重放进度信息。

列名类型描述
local_idoid内部节点标识符(引用 pg_replication_origin.roident)
external_idtext外部节点标识符(引用 pg_replication_origin.roname)
remote_lsnpg_lsn源节点上已复制到的 LSN 位置
local_lsnpg_lsn本节点上对应 remote_lsn 已被重放到的本地 LSN。用于异步提交时在持久化数据前先刷新提交记录

pg_replication_slots​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出数据库集群上当前存在的所有复制槽(replication slot)及其当前状态。

列名类型描述
slot_namename复制槽在全集群范围内唯一的标识符
pluginname该逻辑槽所用输出插件所在共享对象的基名;物理槽为 NULL
slot_typetext槽类型:physical 或 logical
datoidoid该槽关联的数据库 OID(引用 pg_database.oid);仅逻辑槽有关联数据库,否则为 NULL
databasename该槽关联的数据库名(引用 pg_database.datname);仅逻辑槽有,否则为 NULL
temporaryboolean是否为临时复制槽。临时槽不写入磁盘,出错或会话结束时自动删除
activeboolean该槽当前是否正被使用
active_pidinteger当前正使用该槽的会话进程 PID;未激活时为 NULL
xminxid该槽需要数据库保留的最老事务。VACUUM 不能移除任何更晚事务删除的元组
catalog_xminxid该槽需要数据库保留的影响系统目录的最老事务
restart_lsnpg_lsn该槽消费者可能仍需要的最老 WAL 的 LSN。若从未预留则为 NULL
confirmed_flush_lsnpg_lsn逻辑槽消费者已确认接收到的 LSN。物理槽为 NULL
wal_statustext该槽所占用 WAL 文件的可用性。取值:reserved(在 max_wal_size 内)、extended(超过 max_wal_size 但仍保留)、unreserved(不再保留所需 WAL,下次 checkpoint 将移除部分)、lost(槽已不可用)
safe_wal_sizebigint在该槽不致进入 lost 状态前可再写入的 WAL 字节数。lost 槽或 max_slot_wal_keep_size 为 -1 时为 NULL
two_phaseboolean是否启用对该槽的已预备事务进行解码。物理槽恒为 false
conflictingboolean该逻辑槽是否与恢复冲突而被失效。物理槽恒为 NULL

pg_roles​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库角色的相关信息,是 pg_authid 的公开可读视图(口令字段被置空)。

列名类型描述
rolnamename角色名
rolsuperboolean该角色是否拥有超级用户权限
rolinheritboolean该角色是否自动继承其所成员角色的权限
rolcreateroleboolean该角色是否可以创建更多角色
rolcreatedbboolean该角色是否可以创建数据库
rolcanloginboolean该角色是否可以登录(即可作为会话初始授权标识符)
rolreplicationboolean该角色是否为复制角色,可发起复制连接并创建/删除复制槽
rolconnlimitinteger对于可登录角色,其最大并发连接数;-1 表示无限制
rolpasswordtext非口令内容(始终读为 ********)
rolvaliduntiltimestamp with time zone口令过期时间(仅用于口令认证);无过期则为 NULL
rolbypassrlsboolean该角色是否绕过所有行级安全(RLS)策略
rolconfigtext[]该角色针对运行时配置变量的角色级默认值
oidoid角色 ID(引用 pg_authid.oid)

pg_rules​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供查询重写规则(rewrite rule)的相关信息。

列名类型描述
schemanamename表所属的模式名(引用 pg_namespace.nspname)
tablenamename规则所作用的表名(引用 pg_class.relname)
rulenamename规则名(引用 pg_rewrite.rulename)
definitiontext规则的定义(重构出的创建命令)

备注: 该视图不包含视图和物化视图的 ON SELECT 规则,这些可在 pg_views 和 pg_matviews 中查看。

pg_seclabels​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供安全标签(security label)信息,是 pg_seclabel 目录更易查询的版本。

列名类型描述
objoidoid该安全标签所附属对象的 OID
classoidoid该对象所在系统目录的 OID(引用 pg_class.oid)
objsubidinteger对于表列上的安全标签,这是列号(objoid 与 classoid 指代表本身);其他对象类型则为 0
objtypetext该标签所适用对象的类型(文本形式)
objnamespaceoid该对象所在命名空间的 OID(引用 pg_namespace.oid),不适用时为 NULL
objnametext该标签所适用对象的名称(文本形式)
providertext与该标签关联的标签提供方(引用 pg_seclabel.provider)
labeltext应用到该对象的安全标签(引用 pg_seclabel.label)

pg_sequences​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库中每个序列的相关信息。

列名类型描述
schemanamename序列所属的模式名(引用 pg_namespace.nspname)
sequencenamename序列名(引用 pg_class.relname)
sequenceownername序列的所有者名(引用 pg_authid.rolname)
data_typeregtype序列的数据类型(引用 pg_type.oid)
start_valuebigint序列的起始值
min_valuebigint序列的最小值
max_valuebigint序列的最大值
increment_bybigint序列的增量值
cycleboolean序列是否循环
cache_sizebigint序列的缓存大小
last_valuebigint最近写入磁盘的序列值。若使用缓存,该值可能大于已分配出的最后一个值

备注: 当下列任一条件成立时,last_value 读取为 NULL:序列尚未被读取过;当前用户对该序列无 USAGE 或 SELECT 权限;序列为 unlogged 且当前服务器为备库。

pg_settings​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供服务器运行时参数的访问,是 SHOW/SET 命令的另一种接口,并可查看 SHOW 无法直接得到的取值范围等信息。

列名类型描述
nametext运行时配置参数名
settingtext该参数的当前值
unittext该参数的隐式单位
categorytext该参数所属的逻辑分组
short_desctext该参数的简要描述
extra_desctext该参数更详细的补充描述
contexttext设置该参数值所需的上下文(如 internal、postmaster、sighup、superuser、user 等)
vartypetext参数类型(bool、enum、integer、real 或 string)
sourcetext当前参数值的来源
min_valtext参数允许的最小值(非数值类型为 NULL)
max_valtext参数允许的最大值(非数值类型为 NULL)
enumvalstext[]枚举型参数的允许取值(非枚举类型为 NULL)
boot_valtext未另行设置时服务器启动所采用的参数值
reset_valtext当前会话执行 RESET 后该参数将恢复为的值
sourcefiletext当前值所在的配置文件(来自非配置文件来源、或查询者既非超级用户也无 pg_read_all_settings 权限时为 NULL)
sourcelineinteger当前值在配置文件中所处的行号(同上为 NULL 的条件)
pending_restartboolean若该值已在配置文件中被修改但需要重启服务器才生效则为 true,否则为 false

备注: 该视图不可 INSERT/DELETE,但可 UPDATE(等价于对该参数执行 SET,仅作用于当前会话)。

pg_shadow​

类型:系统视图(VIEW),pg_catalog 模式 用途:为向后兼容而保留,显示所有可登录角色(rolcanlogin)的属性。

列名类型描述
usenamename用户名(引用 pg_authid.rolname)
usesysidoid该用户的 ID(引用 pg_authid.oid)
usecreatedbboolean该用户能否创建数据库
usesuperboolean该用户是否为超级用户
usereplboolean该用户能否发起流复制并使系统进入/退出备份模式
usebypassrlsboolean该用户是否绕过所有行级安全(RLS)策略
passwdtext口令(可能已加密);无则为 NULL
valuntiltimestamp with time zone口令过期时间(仅用于口令认证)
useconfigtext[]运行时配置变量的会话默认值

备注: 因包含口令,该视图不应对 public 可读;pg_user 是在其上屏蔽口令字段后的公开可读视图。

pg_shmem_allocations​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示服务器主共享内存段中的分配情况。

列名类型描述
nametext共享内存分配的名称。未使用内存为 NULL;匿名分配为
offbigint该分配起始处的偏移量。匿名分配为 NULL(其细节未知)
sizebigint该分配的字节大小
allocated_sizebigint该分配包含填充(padding)在内的字节大小。对匿名分配及空闲内存,该列与 size 相等

备注: 该视图不包含通过动态共享内存(dynamic shared memory)基础设施分配的内存。默认仅超级用户或具有 pg_read_all_stats 权限的角色可读。

pg_stat_activity​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个服务器进程一行,显示与该进程当前活动(如状态、正在执行的查询)相关的信息。

列名类型描述
datidoid该后端连接的数据库 OID
datnamename该后端连接的数据库名
pidinteger该后端的进程 ID
leader_pidinteger若本进程为并行查询 worker,则为并行组 leader 的 PID;若为并行 apply worker,则为 leader apply worker 的 PID。NULL 表示本进程是 leader 或不参与任何并行操作
usesysidoid登录该后端的用户 OID
usenamename登录该后端的用户名
application_nametext连接到该后端的应用名
client_addrinet连接客户端的 IP 地址。为 NULL 表示经 Unix 套接字连接或为内部进程(如 autovacuum)
client_hostnametext客户端主机名(由 client_addr 反向 DNS 得到)。仅启用 log_hostname 且为 IP 连接时非 NULL
client_portinteger客户端用于通信的 TCP 端口号;使用 Unix 套接字时为 -1;内部进程时为 NULL
backend_starttimestamp with time zone该进程的启动时间。对客户端后端即客户端连接服务器的时间
xact_starttimestamp with time zone当前事务开始时间;无活动事务时为 NULL。若当前查询是该事务第一条,则等于 query_start
query_starttimestamp with time zone当前活动查询的开始时间;若 state 非 active,则为上一条查询的开始时间
state_changetimestamp with time zonestate 最近一次变化的时间
wait_event_typetext后端正在等待的事件类型(如 Lock、LWLock、IO 等);无等待时为 NULL
wait_eventtext后端正在等待时的事件名称;否则为 NULL
statetext后端当前总体状态:active、idle、idle in transaction、idle in transaction (aborted)、fastpath function call、disabled
backend_xidxid该后端的顶层事务标识符(若有)
backend_xminxid该后端当前的 xmin 水平线
query_idbigint该后端最近一次查询的标识符。默认不计算查询 ID,除非启用 compute_query_id 或配置了相关第三方模块,否则为 NULL
querytext该后端最近一次查询的文本。默认在 1024 字节处截断(由 track_activity_query_size 控制)
backend_typetext当前后端类型(如 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_countbigint已成功归档的 WAL 文件数量
last_archived_waltext最近一次成功归档的 WAL 文件名
last_archived_timetimestamp with time zone最近一次成功归档的时间
failed_countbigint归档 WAL 文件失败的次数
last_failed_waltext最近一次失败的归档操作所对应的 WAL 文件名
last_failed_timetimestamp with time zone最近一次失败归档操作的时间
stats_resettimestamp with time zone这些统计信息上次被重置的时间

备注: WAL 文件通常按从旧到新的顺序归档,但在备用提升(promote)或崩溃恢复等特殊情况下并不保证;因此不能假定所有早于 last_archived_wal 的文件都已成功归档。

pg_stat_bgwriter​

类型:系统视图(VIEW),pg_catalog 模式 用途:报告集群后台写进程(background writer)及检查点相关的全局统计(仅一行)。

列名类型描述
checkpoints_timedbigint已执行的定时(计划内)检查点数量
checkpoints_reqbigint已执行的请求(非定时)检查点数量
checkpoint_write_timedouble precision检查点处理中将文件写入磁盘所花费的总时间(毫秒)
checkpoint_sync_timedouble precision检查点处理中将文件同步(fsync)到磁盘所花费的总时间(毫秒)
buffers_checkpointbigint在检查点期间写入的缓冲区数量
buffers_cleanbigint由后台写进程写入的缓冲区数量
maxwritten_cleanbigint后台写进程因一次扫描写出过多缓冲区而提前停止扫描的次数
buffers_backendbigint由后端进程直接写入的缓冲区数量
buffers_backend_fsyncbigint后端进程被迫自行执行 fsync 的次数
buffers_allocbigint已分配的缓冲区数量
stats_resettimestamp with time zone这些统计信息上次被重置的时间

pg_stat_database​

类型:系统视图(VIEW),pg_catalog 模式 用途:按数据库显示数据库范围的统计(每个数据库一行,并额外包含一行共享对象)。

列名类型描述
datidoid该数据库的 OID;对共享关系而言为 0
datnamename该数据库的名称;对共享对象为 NULL
numbackendsinteger当前连接到该数据库的后端进程数(共享对象为 NULL)。此列反映当前状态,其余列均为自上次重置以来的累计值
xact_commitbigint该数据库中已提交的事务数
xact_rollbackbigint该数据库中已回滚的事务数
blks_readbigint该数据库从磁盘读取的磁盘块数
blks_hitbigint该数据库在缓冲区缓存中命中、从而无需读取磁盘的次数(仅含 PostgreSQL 缓冲缓存命中,不含操作系统文件系统缓存)
tup_returnedbigint顺序扫描返回的活行数与索引扫描返回的索引项数
tup_fetchedbigint索引扫描取出的活行数
tup_insertedbigint该数据库中查询插入的行数
tup_updatedbigint该数据库中查询更新的行数
tup_deletedbigint该数据库中查询删除的行数
conflictsbigint该数据库中因与恢复冲突而被取消的查询数(仅在备用服务器上发生;详见 pg_stat_database_conflicts)
temp_filesbigint该数据库中查询创建的临时文件数(无论出于何种原因创建,且不受 log_temp_files 设置影响)
temp_bytesbigint该数据库中查询写入临时文件的数据总量(字节)
deadlocksbigint该数据库中检测到的死锁数
checksum_failuresbigint该数据库(或共享对象)中检测到的数据页校验和失败次数;未启用数据校验和时为 NULL
checksum_last_failuretimestamp with time zone该数据库(或共享对象)中最近一次检测到数据页校验和失败的时间;未启用时为 NULL
blk_read_timedouble precision该数据库后端读取数据文件块所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
blk_write_timedouble precision该数据库后端写入数据文件块所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
session_timedouble precision该数据库中会话花费的总时间(毫秒)。仅在会话状态变化时更新,长时间空闲的会话其空闲时间不会被计入
active_timedouble precision该数据库中执行 SQL 语句所花费的时间(毫秒,对应 pg_stat_activity 中的 active 与 fastpath function call 状态)
idle_in_transaction_timedouble precision该数据库中事务内处于空闲状态的时间(毫秒,对应 idle in transaction 与 idle in transaction (aborted) 状态)
sessionsbigint建立到该数据库的会话总数
sessions_abandonedbigint因与客户端连接丢失而终止的会话数
sessions_fatalbigint因致命错误而终止的会话数
sessions_killedbigint因管理员干预而终止的会话数
stats_resettimestamp with time zone这些统计信息上次被重置的时间

pg_stat_database_conflicts​

类型:系统视图(VIEW),pg_catalog 模式 用途:按数据库显示备用服务器上因与恢复冲突而被取消的查询统计(每个数据库一行,仅备用服务器有数据)。

列名类型描述
datidoid数据库的 OID
datnamename该数据库的名称
confl_tablespacebigint该数据库中因删除表空间而被取消的查询数
confl_lockbigint该数据库中因锁超时而被取消的查询数
confl_snapshotbigint该数据库中因快照过旧而被取消的查询数
confl_bufferpinbigint该数据库中因缓冲区被占用(pinned)而被取消的查询数
confl_deadlockbigint该数据库中因死锁而被取消的查询数
confl_active_logicalslotbigint该数据库中因快照过旧或主库 wal_level 过低而被取消的逻辑复制槽使用次数

备注: 该视图仅在备用服务器上有意义,因为主服务器上不会发生恢复冲突。

pg_stat_gssapi​

类型:系统视图(VIEW),pg_catalog 模式 用途:按连接显示 GSSAPI 认证与加密使用情况(每个后端/WAL 发送进程一行)。

列名类型描述
pidinteger后端进程的进程 ID
gss_authenticatedboolean若该连接使用了 GSSAPI 认证则为真
principaltext用于认证该连接的 principal;未使用 GSSAPI 认证时为 NULL(若长于 NAMEDATALEN,标准构建为 64 字符,则被截断)
encryptedboolean若该连接上启用了 GSSAPI 加密则为真
credentials_delegatedboolean若该连接上发生了 GSSAPI 凭据委派则为真

备注: 可通过 pid 列与 pg_stat_activity 或 pg_stat_replication 联接以获取连接的更多细节。

pg_stat_io​

类型:系统视图(VIEW),pg_catalog 模式 用途:按后端类型、I/O 上下文与目标对象组合显示集群范围的 I/O 统计(每个有意义的组合一行)。

列名类型描述
backend_typetext后端类型(如 background writer、autovacuum worker 等,详见 pg_stat_activity)。某些类型不累计 I/O 统计,不会出现在视图中
objecttextI/O 操作的目标对象;取值为 relation(永久关系)或 temp relation(临时关系)
contexttextI/O 操作的上下文;取值为 normal(默认)、vacuum(在共享缓冲区之外清理/分析永久关系)、bulkread(如大表顺序扫描等大批量读)、bulkwrite(如 COPY 等大批量写)
readsbigint读操作次数,每次大小为 op_bytes
read_timedouble precision读操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
writesbigint写操作次数,每次大小为 op_bytes
write_timedouble precision写操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
writebacksbigint进程请求内核写出(writeback)到持久存储的 op_bytes 大小单元数
writeback_timedouble precisionwriteback 操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零),包含排队与实际写出的时间
extendsbigint关系扩展(extend)操作次数,每次大小为 op_bytes
extend_timedouble precision扩展操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
op_bytesbigint每次 I/O 读、写或扩展单元的字节数;关系数据默认按 BLCKSZ(构建期参数,默认 8192)为单位
hitsbigint请求的块在共享缓冲区中被命中的次数
evictionsbigint为腾出缓冲区供他用而将块从共享或本地缓冲区写出的次数。normal 上下文下指被替换;bulkwrite/bulkread/vacuum 上下文下指为加入环形缓冲区而从共享缓冲区移除
reusesbigint在 bulkread/bulkwrite/vacuum 上下文中复用共享缓冲区之外环形缓冲区里已有缓冲区的次数
fsyncsbigintfsync 调用次数;仅在 normal 上下文跟踪
fsync_timedouble precisionfsync 操作所花费的时间(毫秒;仅在启用 track_io_timing 时有效,否则为零)
stats_resettimestamp with time zone这些统计信息上次被重置的时间

备注: 当某后端类型不会在某对象或某上下文执行某种 I/O 时,对应单元为 NULL(如临时表不会被 fsync,后台写进程不做读操作)。evictions 偏高可提示增大 shared_buffers;客户端后端出现大量 fsync 或写操作可能提示共享缓冲区或检查点配置不当。

pg_stat_progress_analyze​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 ANALYZE 的后端(含 autovacuum worker)显示当前进度(每个后端一行)。

列名类型描述
pidinteger后端进程的进程 ID
datidoid该后端所连接数据库的 OID
datnamename该后端所连接数据库的名称
relidoid正在分析的表的 OID
phasetext当前处理阶段(如 initializing、acquiring sample rows、acquiring inherited sample rows、computing statistics、computing extended statistics、finalizing analyze)
sample_blks_totalbigint将要采样的堆块总数
sample_blks_scannedbigint已扫描的堆块数
ext_stats_totalbigint扩展统计对象的总数
ext_stats_computedbigint已计算的扩展统计数(仅在 computing extended statistics 阶段递增)
child_tables_totalbigint子表数量
child_tables_donebigint已扫描的子表数(仅在 acquiring inherited sample rows 阶段递增)
current_child_table_relidoid当前正在扫描的子表 OID(仅在 acquiring inherited sample rows 阶段有效)

备注: 对分区表执行 ANALYZE 时会递归分析其分区,进度会先报告父表(收集继承统计),再依次报告各分区。

pg_stat_progress_basebackup​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在执行 BASE_BACKUP 复制命令并流式传输基础备份的 WAL 发送进程显示进度(每个 WAL 发送进程一行)。

列名类型描述
pidintegerWAL 发送进程的进程 ID
phasetext当前处理阶段(如 initializing、waiting for checkpoint to finish、estimating backup size、streaming database files、waiting for wal archiving to finish、transferring wal files)
backup_totalbigint将要流式传输的数据总量(估算值,在 streaming database files 阶段开始时报告;在 pg_basebackup 用 --no-estimate-size 禁用估算时为 NULL)
backup_streamedbigint已流式传输的数据量(仅在 streaming database files 或 transferring wal files 阶段递增)
tablespaces_totalbigint将要流式传输的表空间总数
tablespaces_streamedbigint已流式传输的表空间数(仅在 streaming database files 阶段递增)

备注: backup_total 仅为估算值,备份期间数据库可能变化;当已传输量超过估算总量后,该列将与 backup_streamed 保持一致。

pg_stat_progress_cluster​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 CLUSTER 或 VACUUM FULL 的后端显示当前进度(每个后端一行)。

列名类型描述
pidinteger后端进程的进程 ID
datidoid该后端所连接数据库的 OID
datnamename该后端所连接数据库的名称
relidoid正在进行聚簇(cluster)的表的 OID
commandtext正在运行的命令,取值为 CLUSTER 或 VACUUM FULL
phasetext当前处理阶段(如 initializing、seq scanning heap、index scanning heap、sorting tuples、writing new heap、swapping relation files、rebuilding index、performing final cleanup)
cluster_index_relidoid若使用索引扫描聚簇,则为所用索引的 OID;否则为零
heap_tuples_scannedbigint已扫描的堆元组数(仅在 seq scanning heap、index scanning heap 或 writing new heap 阶段递增)
heap_tuples_writtenbigint已写入的堆元组数(仅在 seq scanning heap、index scanning heap 或 writing new heap 阶段递增)
heap_blks_totalbigint表中堆块的总数(在 seq scanning heap 阶段开始时报告)
heap_blks_scannedbigint已扫描的堆块数(仅在 seq scanning heap 阶段递增)
index_rebuild_countbigint已重建的索引数(仅在 rebuilding index 阶段递增)

备注: VACUUM FULL 也通过此视图报告进度,因其与 CLUSTER 一样会重写表;普通 VACUUM 的进度则通过 pg_stat_progress_vacuum 报告。

pg_stat_progress_copy​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 COPY 的后端显示当前进度(每个后端一行)。

列名类型描述
pidinteger后端进程的进程 ID
datidoid该后端所连接数据库的 OID
datnamename该后端所连接数据库的名称
relidoid执行 COPY 的目标表 OID;若从 SELECT 查询复制则为 0
commandtext正在运行的命令:COPY FROM 或 COPY TO
typetext数据读出或写入的 I/O 类型:FILE、PROGRAM、PIPE(用于 COPY FROM STDIN/COPY TO STDOUT)或 CALLBACK(例如逻辑复制初始表同步时使用)
bytes_processedbigintCOPY 命令已处理的字节数
bytes_totalbigintCOPY FROM 源文件的大小(字节);不可用时为 0
tuples_processedbigintCOPY 命令已处理的元组数
tuples_excludedbigint因被 COPY 语句的 WHERE 子句排除而未处理的元组数

pg_stat_progress_create_index​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 CREATE INDEX 或 REINDEX 的后端显示当前进度(每个后端一行)。

列名类型描述
pidinteger创建索引的后端进程 ID
datidoid该后端所连接数据库的 OID
datnamename该后端所连接数据库的名称
relidoid正在创建索引的目标表的 OID
index_relidoid正在创建或重建的索引的 OID;非并发 CREATE INDEX 期间为 0
commandtext具体命令类型:CREATE INDEX、CREATE INDEX CONCURRENTLY、REINDEX 或 REINDEX CONCURRENTLY
phasetext当前索引创建的处理阶段(如 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_totalbigint适用时需等待的锁持有者总数
lockers_donebigint已等待完成的锁持有者数量
current_locker_pidbigint当前正在等待的锁持有者进程 ID
blocks_totalbigint当前阶段需要处理的块总数
blocks_donebigint当前阶段已处理的块数
tuples_totalbigint当前阶段需要处理的元组总数
tuples_donebigint当前阶段已处理的元组数
partitions_totalbigint将要创建或附加索引的分区总数(含直接与间接分区);REINDEX 或非分区索引时为 0
partitions_donebigint已创建或附加索引的分区数(含直接与间接分区);REINDEX 或非分区索引时为 0

pg_stat_progress_vacuum​

类型:系统视图(VIEW),pg_catalog 模式 用途:为每个正在运行 VACUUM 的后端(含 autovacuum worker)显示当前进度(每个后端一行)。

列名类型描述
pidinteger后端进程的进程 ID
datidoid该后端所连接数据库的 OID
datnamename该后端所连接数据库的名称
relidoid正在清理(vacuum)的表的 OID
phasetext当前清理的处理阶段(如 initializing、scanning heap、vacuuming indexes、vacuuming heap、cleaning up indexes、truncating heap、performing final cleanup)
heap_blks_totalbigint表中堆块的总数(在扫描开始时报告;之后新增的块不会被访问)
heap_blks_scannedbigint已扫描的堆块数。借助可见性图优化,部分块会被跳过;跳过的块也计入此总数,扫描完成后等于 heap_blks_total(仅在 scanning heap 阶段递增)
heap_blks_vacuumedbigint已清理的堆块数;表有索引时仅在 vacuuming heap 阶段递增,不含死元组的块会被跳过,可能大幅跳跃
index_vacuum_countbigint已完成的索引清理(index vacuum)循环次数
max_dead_tuplesbigint在需要进行一次索引清理循环之前可存储的死元组数(基于 maintenance_work_mem)
num_dead_tuplesbigint自上次索引清理循环以来收集到的死元组数

备注: VACUUM FULL 不通过此视图报告进度,而是通过 pg_stat_progress_cluster 报告,因为 VACUUM FULL 会重写表。

pg_stat_recovery_prefetch​

类型:系统视图(VIEW),pg_catalog 模式 用途:显示备库在恢复(recovery)期间对 WAL 引用块进行预取(prefetch)的统计信息,用于评估 recovery_prefetch 的效果;该视图始终只有一行。

列名类型描述
stats_resettimestamp with time zone这些统计信息上次被重置的时间
prefetchbigint恢复期间被预取的块数
hitbigint因块已在缓冲池中而未预取的块数
skip_initbigint因块会在内存中被零初始化而未预取的块数
skip_newbigint因块在磁盘上尚不存在(新页)而未预取的块数
skip_fpwbigint因 WAL 记录中已包含整页镜像(full-page image)而未预取的块数
skip_repbigint因块近期已被预取过而未预取的块数
wal_distanceinteger预取器当前在 WAL 中领先的字节数
block_distanceinteger预取器当前领先的块数
io_depthinteger当前正在进行的 I/O 请求数

备注: WAL 预取默认关闭,需将 recovery_prefetch 设为 on 才启用;仅在提供有效 posix_fadvise 的系统上可用。该视图于 PostgreSQL 15 引入,PG16 中保留。

pg_stat_replication​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个 WAL sender 进程一行,显示与该发送进程连接的备库之间的复制统计信息。

列名类型描述
pidintegerWAL sender 进程的进程 ID
usesysidoid登录该 WAL sender 进程的用户的 OID
usenamename登录该 WAL sender 进程的用户名
application_nametext连接到该 WAL sender 的应用程序名称
client_addrinet连接到该 WAL sender 的客户端 IP 地址;为空表示客户端通过 Unix 套接字连接
client_hostnametext客户端主机名(由 client_addr 反向 DNS 解析得到);仅在 IP 连接且启用 log_hostname 时非空
client_portinteger客户端与该 WAL sender 通信所用的 TCP 端口号;使用 Unix 套接字时为 -1
backend_starttimestamp with time zone该进程启动时间,即客户端连接到该 WAL sender 的时间
backend_xminxid由 hot_standby_feedback 报告的该备库的 xmin 可见性边界
statetext当前 WAL sender 状态,取值:startup、catchup、streaming、backup、stopping
sent_lsnpg_lsn在此连接上最后发送的预写日志位置
write_lsnpg_lsn该备库写入磁盘的最后预写日志位置
flush_lsnpg_lsn该备库刷写到磁盘的最后预写日志位置
replay_lsnpg_lsn该备库回放到数据库的最后预写日志位置
write_laginterval本地刷写最近 WAL 与收到备库已写入(尚未刷写或应用)通知之间经过的时间
flush_laginterval本地刷写最近 WAL 与收到备库已写入并刷写(尚未应用)通知之间经过的时间
replay_laginterval本地刷写最近 WAL 与收到备库已写入、刷写并应用通知之间经过的时间
sync_priorityinteger在基于优先级的同步复制中该备库被选为同步备库的优先级;基于法定人数(quorum)的同步复制中无意义
sync_statetext该备库的同步状态,取值:async、potential、sync、quorum
reply_timetimestamp with time zone收到来自备库的最后回复消息的发送时间

备注: lag 列度量的是最近 WAL 被写入/刷写/回放并被发送方知晓所需的时间,仅在物理复制中自动工作;仅列出直连备库,不包含下游级联备库。备库完全追上后短时间内仍显示上次值,随后变为 NULL。

pg_stat_replication_slots​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个逻辑复制槽一行,显示该复制槽的使用统计信息。

列名类型描述
slot_nametext复制槽的唯一集群级标识符
spill_txnsbigint当逻辑解码从 WAL 解码变更所耗内存超过 logical_decoding_work_mem 时被溢写到磁盘的事务数;顶层事务和子事务均计数
spill_countbigint该槽解码 WAL 变更时事务被溢写到磁盘的次数;每次溢出都会计数,同一事务可能被多次溢出
spill_bytesbigint该槽解码 WAL 变更时溢写到磁盘的已解码事务数据量(字节);用于评估逻辑解码期间的 I/O 并辅助调整 logical_decoding_work_mem
stream_txnsbigint该槽解码变更所耗内存超过 logical_decoding_work_mem 后流式发送到解码输出插件的进行中事务数;仅对顶层事务计数(子事务不能独立流式传输)
stream_countbigint该槽解码 WAL 变更时进行中事务被流式发送到解码输出插件的次数;每次流式传输都计数,同一事务可能被多次流式传输
stream_bytesbigint该槽解码 WAL 变更时为流式传输进行中事务而发送到解码输出插件的已解码事务数据量(字节);用于辅助调整 logical_decoding_work_mem
total_txnsbigint该槽解码并发送到解码输出插件的事务数;仅计顶层事务(不包含子事务),含被流式传输和/或溢写的事务
total_bytesbigint该槽解码 WAL 变更时为发送到解码输出插件而解码的事务数据量(字节);含被流式传输和/或溢写的数据
stats_resettimestamp 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(简单最近最少使用)缓存一行,显示对该缓存页面的访问统计。

列名类型描述
nametextSLRU 的名称
blks_zeroedbigint初始化期间被清零的块数
blks_hitbigint磁盘块已在 SLRU 中命中、因此无需读盘的次数(仅统计 SLRU 命中,不含操作系统文件系统缓存)
blks_readbigint该 SLRU 从磁盘读取的块数
blks_writtenbigint该 SLRU 写入磁盘的块数
blks_existsbigint该 SLRU 中检查某块是否存在的次数
flushesbigint该 SLRU 刷写脏数据的次数
truncatesbigint该 SLRU 执行截断(truncate)的次数
stats_resettimestamp 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 列关联。

列名类型描述
pidinteger后端或 WAL sender 进程的进程 ID
sslboolean该连接是否使用了 SSL
versiontext正在使用的 SSL 版本;该连接未使用 SSL 时为 NULL
ciphertext正在使用的 SSL 加密套件名称;未使用 SSL 时为 NULL
bitsinteger所用加密算法的位数;未使用 SSL 时为 NULL
client_dntext客户端证书中的 DN(标识名)字段;未提供客户端证书或未使用 SSL 时为 NULL。该字段在 DN 超过 NAMEDATALEN(标准构建为 64 字符)时会被截断
client_serialnumeric客户端证书的序列号;未提供客户端证书或未使用 SSL 时为 NULL。证书序列号与颁发者组合可唯一标识一张证书(除非颁发者错误地复用序列号)
issuer_dntext客户端证书颁发者的 DN;未提供客户端证书或未使用 SSL 时为 NULL。同 client_dn 一样会被截断

备注: 仅当启用 SSL 连接时该视图内容才有意义;可通过 pid 关联到会话或复制连接的详细信息。

pg_stat_subscription​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个订阅至少一行,显示订阅工作进程(apply leader、并行 apply worker、表同步 worker)的信息。

列名类型描述
subidoid订阅的 OID
subnamename订阅的名称
pidinteger订阅工作进程的进程 ID
leader_pidinteger当本进程为并行 apply worker 时其 leader apply worker 的进程 ID;当本进程为 leader apply worker 或同步 worker 时为 NULL
relidoid该 worker 正在同步的关系的 OID;对于 leader apply worker 与并行 apply worker 为 NULL
received_lsnpg_lsn最后接收到的预写日志位置,初值为 0;对于并行 apply worker 为 NULL
last_msg_send_timetimestamp with time zone收到来自源 WAL sender 的最后消息的发送时间;并行 apply worker 为 NULL
last_msg_receipt_timetimestamp with time zone收到来自源 WAL sender 的最后消息的接收时间;并行 apply worker 为 NULL
latest_end_lsnpg_lsn报告给源 WAL sender 的最后预写日志位置;并行 apply worker 为 NULL
latest_end_timetimestamp with time zone报告给源 WAL sender 的最后预写日志位置的时间;并行 apply worker 为 NULL

备注: 每个订阅至少有一行(对应 leader apply worker);表同步期间会为每个正在同步的表额外产生一行;启用 parallel apply 时还会产生并行 apply worker 行。

pg_stat_subscription_stats​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个订阅一行,显示订阅在应用更改与初始表同步过程中发生错误的统计。

列名类型描述
subidoid订阅的 OID
subnamename订阅的名称
apply_error_countbigint在应用更改时发生错误的次数
sync_error_countbigint在初始表同步期间发生错误的次数
stats_resettimestamp with time zone该统计信息上次被重置的时间

备注: 可用 pg_stat_reset_subscription_stats(oid) 重置单个或全部(参数为 NULL)订阅的计数器。

pg_stat_wal​

类型:系统视图(VIEW),pg_catalog 模式 用途:仅有一行,显示集群的 WAL 活动统计信息。

列名类型描述
wal_recordsbigint生成的 WAL 记录总数
wal_fpibigint生成的 WAL 全页镜像(full page image)总数
wal_bytesnumeric生成的 WAL 总字节数
wal_buffers_fullbigint因 WAL 缓冲区已满而将 WAL 数据写入磁盘的次数
wal_writebigint通过 XLogWrite 请求将 WAL 缓冲区写出磁盘的次数
wal_syncbigint通过 issue_xlog_fsync 请求将 WAL 文件同步(fsync)到磁盘的次数(仅当 fsync 为 on 且 wal_sync_method 为 fdatasync/fsync/fsync_writethrough 时统计,否则为 0)
wal_write_timedouble precision通过 XLogWrite 请求将 WAL 缓冲区写入磁盘所花费的总时间(毫秒,需启用 track_wal_io_timing,否则为 0);当 wal_sync_method 为 open_datasync 或 open_sync 时包含同步时间
wal_sync_timedouble precision通过 issue_xlog_fsync 请求将 WAL 文件同步到磁盘所花费的总时间(毫秒,需启用 track_wal_io_timing、fsync 为 on 且 wal_sync_method 为 fdatasync/fsync/fsync_writethrough,否则为 0)
stats_resettimestamp with time zone该统计信息上次被重置的时间

备注: 可用 pg_stat_reset_shared('wal') 重置。计时类列仅在 track_wal_io_timing 开启时非零。

pg_stat_wal_receiver​

类型:系统视图(VIEW),pg_catalog 模式 用途:仅有一行,显示从所连接的服务器接收 WAL 的 WAL receiver 进程的统计信息。

列名类型描述
pidintegerWAL receiver 进程的进程 ID
statustextWAL receiver 进程的活动状态
receive_start_lsnpg_lsnWAL receiver 启动时使用的第一个预写日志位置
receive_start_tliintegerWAL receiver 启动时使用的第一个时间线(timeline)号
written_lsnpg_lsn已接收并写入磁盘(但未刷写)的最后预写日志位置;不应用于数据完整性检查
flushed_lsnpg_lsn已接收并刷写到磁盘的最后预写日志位置;初值为 WAL receiver 启动时使用的第一个日志位置
received_tliinteger已接收并刷写到磁盘的最后预写日志位置的时间线号;初值为启动时第一个日志位置的时间线号
last_msg_send_timetimestamp with time zone收到来自源 WAL sender 的最后消息的发送时间
last_msg_receipt_timetimestamp with time zone收到来自源 WAL sender 的最后消息的接收时间
latest_end_lsnpg_lsn报告给源 WAL sender 的最后预写日志位置
latest_end_timetimestamp with time zone报告给源 WAL sender 的最后预写日志位置的时间
slot_nametext该 WAL receiver 使用的复制槽名称
sender_hosttext该 WAL receiver 所连接的 PostgreSQL 实例的主机(主机名、IP 地址,或 Unix 套接字目录路径;路径总是以 / 开头的绝对路径)
sender_portinteger该 WAL receiver 所连接的 PostgreSQL 实例的端口号
conninfotext该 WAL receiver 使用的连接串(敏感字段已脱敏)

备注: 该视图仅在作为流复制备库(含 WAL receiver 进程)时有数据。

pg_stat_user_functions​

类型:系统视图(VIEW),pg_catalog 模式 用途:每个被跟踪的函数一行,显示该函数执行的统计信息。track_functions 参数控制具体跟踪哪些函数。

列名类型描述
funcidoid函数的 OID
schemanamename该函数所在模式的名称
funcnamename函数名称
callsbigint该函数被调用的次数
total_timedouble precision在该函数及其调用的所有其他函数中花费的总时间(毫秒)
self_timedouble 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 完全相同。

列名类型描述
funcidoid函数的 OID
schemanamename该函数所在模式的名称
funcnamename函数名称
callsbigint当前事务内该函数被调用的次数
total_timedouble precision当前事务内在该函数及其调用的所有其他函数中花费的总时间(毫秒)
self_timedouble precision当前事务内仅在该函数自身(不含其调用的其他函数)花费的总时间(毫秒)

备注: 该视图数值在事务期间持续更新(不像累计统计视图那样在事务内为静态快照)。

pg_stats​

类型:系统视图(VIEW),pg_catalog 模式 用途:以可读形式展示存储在 pg_statistic 目录表中的列级统计信息;仅返回用户有读权限的表对应的行,因此可安全地公开访问。

列名类型描述
schemanamename表所在模式的名称
tablenamename表的名称
attnamename该行所描述列的名称
inheritedbool为 true 时,本行包含子表的值,而不仅仅是指定表的值
null_fracfloat4该列中为 NULL 的条目比例
avg_widthint4该列条目的平均宽度(字节)
n_distinctfloat4大于零时为列中不同值的估计数量;小于零时为不同值数量除以行数后的负值(ANALYZE 认为不同值数会随表增长而增加时用负值形式;固定可能值时用正值)。例如 -1 表示唯一列(不同值数等于行数)
most_common_valsanyarray该列中最常见值的列表(若无值比其他值更常见则为 NULL)
most_common_freqsfloat4[]最常见值的频率列表,即各值出现次数除以总行数(most_common_vals 为 NULL 时为 NULL)
histogram_boundsanyarray将该列值划分为近似等大小群体的值列表;most_common_vals 中的值(若存在)不参与此直方图计算(列类型无 < 操作符或 most_common_vals 覆盖了全部取值时为 NULL)
correlationfloat4物理行顺序与逻辑列值顺序之间的统计相关性,范围 -1 到 +1;接近 -1 或 +1 时对该列的索引扫描估计更廉价(列类型无 < 操作符时为 NULL)
most_common_elemsanyarray该列值中最常出现的非空元素值列表(标量类型为 NULL)
most_common_elem_freqsfloat4[]最常见元素值的频率列表,即包含至少一个该值的行所占比例;后面还会附带两到三个额外值,分别是上述频率的最小值和最大值,以及(可选的)NULL 元素频率(most_common_elems 为 NULL 时为 NULL)
elem_count_histogramfloat4[]该列值中不同非空元素计数的直方图,后接不同非空元素的平均数(标量类型为 NULL)

备注: 数组字段的最大条目数可按列通过 ALTER TABLE SET STATISTICS 控制,或全局通过 default_statistics_target 控制。

pg_stats_ext​

类型:系统视图(VIEW),pg_catalog 模式 用途:以可读形式展示每个扩展统计对象的信息,合并 pg_statistic_ext 与 pg_statistic_ext_data 目录表的内容;仅返回用户所拥有表对应的行,因此可安全公开访问。

列名类型描述
schemanamename表所在模式的名称
tablenamename表的名称
statistics_schemanamename扩展统计对象所在模式的名称
statistics_namename扩展统计对象的名称
statistics_ownername扩展统计对象的所有者
attnamesname[]包含在该扩展统计对象中的列名列表
exprstext[]包含在该扩展统计对象中的表达式列表
kindschar[]为该记录启用的扩展统计对象类型
inheritedbool为 true 时,统计信息包含子表的值,而不仅仅是指定关系的值
n_distinctpg_ndistinct列值组合的 N-distinct 计数;大于零时为该组合的不同值估计数,小于零时为不同值数除以行数的负值。例如 -1 表示唯一的列组合(不同组合数等于行数)
dependenciespg_dependencies函数依赖统计
most_common_valstext[]各列中最常见值组合的列表(若无组合比其他更常见则为 NULL)
most_common_val_nullsbool[]最常见值组合对应的 NULL 标志列表(most_common_vals 为 NULL 时为 NULL)
most_common_freqsfloat8[]最常见值组合的频率列表,即各组合出现次数除以总行数(most_common_vals 为 NULL 时为 NULL)
most_common_base_freqsfloat8[]最常见值组合的基础频率列表,即各单值频率的乘积(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 目录表的内容;仅返回用户所拥有表对应的行,因此可安全公开访问。

列名类型描述
schemanamename表所在模式的名称
tablenamename该统计对象所定义的表的名称
statistics_schemanamename扩展统计对象所在模式的名称
statistics_namename扩展统计对象的名称
statistics_ownername扩展统计对象的所有者
exprtext包含在该扩展统计对象中的表达式
inheritedbool为 true 时,统计信息包含子表的值,而不仅仅是指定关系的值
null_fracfloat4该表达式条目为 NULL 的比例
avg_widthint4该表达式条目的平均宽度(字节)
n_distinctfloat4大于零时为表达式中不同值的估计数;小于零时为不同值数除以行数的负值。例如 -1 表示唯一表达式(不同值数等于行数)
most_common_valsanyarray该表达式中最常见值的列表(若无值比其他更常见则为 NULL)
most_common_freqsfloat4[]最常见值的频率列表,即各值出现次数除以总行数(most_common_vals 为 NULL 时为 NULL)
histogram_boundsanyarray将该表达式的值划分为近似等大小群体的值列表;most_common_vals 中的值(若存在)不参与此直方图计算(表达式类型无 < 操作符或 most_common_vals 覆盖全部取值时为 NULL)
correlationfloat4物理行顺序与表达式逻辑值顺序之间的统计相关性,范围 -1 到 +1;接近 -1 或 +1 时对该表达式的索引扫描估计更廉价(表达式类型无 < 操作符时为 NULL)
most_common_elemsanyarray该表达式值中最常出现的非空元素值列表(标量类型为 NULL)
most_common_elem_freqsfloat4[]最常见元素值的频率列表,即包含至少一个该值的行所占比例;后面附带两到三个额外值,为上述频率的最小值与最大值,以及(可选的)NULL 元素频率(most_common_elems 为 NULL 时为 NULL)
elem_count_histogramfloat4[]该表达式值中不同非空元素计数的直方图,后接不同非空元素的平均数(标量类型为 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 累积统计。

列名类型描述
relidoid表的 OID
schemanamename该表所在的模式名
relnamename表名
seq_scanbigint在此表上发起的顺序扫描(sequential scan)次数
last_seq_scantimestamp with time zone最近一次顺序扫描该表的时间,基于最近一次事务停止时间
seq_tup_readbigint顺序扫描从该表读取的存活行数
idx_scanbigint在此表上发起的索引扫描次数(对该表全部索引求和)
last_idx_scantimestamp with time zone最近一次索引扫描该表的时间,基于最近一次事务停止时间(取该表所有索引中的最大值)
idx_tup_fetchbigint索引扫描从该表取回的存活行数
n_tup_insbigint插入的总行数
n_tup_updbigint更新的总行数(含 HOT 更新、newpage 更新以及其余非 HOT 更新)
n_tup_delbigint删除的总行数
n_tup_hot_updbigintHOT 更新的行数(此类更新无需在索引中产生后续版本)
n_tup_newpage_updbigint更新后新版本落入新堆页的行数,旧版本留下指向另一堆页的 t_ctid;这类更新总是非 HOT 更新
n_live_tupbigint估计的存活行数
n_dead_tupbigint估计的死行数
n_mod_since_analyzebigint自上次 ANALYZE 以来估计被修改的行数(尚未反映在下一次 ANALYZE 的统计中)
n_ins_since_vacuumbigint自上次 VACUUM 以来估计插入的行数
last_vacuumtimestamp with time zone最近一次手动 VACUUM 该表的时间(不含 VACUUM FULL)
last_autovacuumtimestamp with time zoneautovacuum 守护进程最近一次清理该表的时间
last_analyzetimestamp with time zone最近一次手动 ANALYZE 该表的时间
last_autoanalyzetimestamp with time zoneautovacuum 守护进程最近一次分析该表的时间
vacuum_countbigint该表被手动 VACUUM 的次数(不含 VACUUM FULL)
autovacuum_countbigint该表被 autovacuum 清理的次数
analyze_countbigint该表被手动 ANALYZE 的次数
autoanalyze_countbigint该表被 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 类似,但统计的是当前事务内已发生但尚未刷入共享统计的动作,随事务推进实时更新。

列名类型描述
relidoid表的 OID
schemanamename该表所在的模式名
relnamename表名
seq_scanbigint当前事务内在此表上发起的顺序扫描次数
seq_tup_readbigint当前事务内顺序扫描从该表读取的存活行数
idx_scanbigint当前事务内在此表上发起的索引扫描次数(对该表全部索引求和)
idx_tup_fetchbigint当前事务内索引扫描从该表取回的存活行数
n_tup_insbigint当前事务内插入的行数
n_tup_updbigint当前事务内更新的行数(含 HOT 更新、newpage 更新以及其余非 HOT 更新)
n_tup_delbigint当前事务内删除的行数
n_tup_hot_updbigint当前事务内 HOT 更新的行数
n_tup_newpage_updbigint当前事务内更新后新版本落入新堆页的行数(总是非 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 统计。

列名类型描述
relidoid表的 OID
schemanamename该表所在的模式名
relnamename表名
heap_blks_readbigint从该表堆读取的磁盘块数(即未在缓冲区命中而产生的读取)
heap_blks_hitbigint该表堆在缓冲区中的命中次数
idx_blks_readbigint从该表全部索引读取的磁盘块数
idx_blks_hitbigint该表全部索引在缓冲区中的命中次数
toast_blks_readbigint从该表的 TOAST 表(如有)读取的磁盘块数
toast_blks_hitbigint该表的 TOAST 表(如有)在缓冲区中的命中次数
tidx_blks_readbigint从该表 TOAST 表的索引(如有)读取的磁盘块数
tidx_blks_hitbigint该表 TOAST 表的索引(如有)在缓冲区中的命中次数

备注: *_read 与 *_hit 之和即为对该对象发起的总块读取请求数;命中率可用于评估共享缓冲区是否充分。注意此视图统计的是从内核发起 read() 的请求数与缓冲命中数,并不区分实际物理磁盘读取与操作系统页缓存命中。

pg_stat_all_indexes / pg_stat_sys_indexes / pg_stat_user_indexes​

类型:系统视图(VIEW),pg_catalog 模式 用途:当前数据库中每个索引一行,展示对该索引的访问统计,可用于判断索引是否被使用及其效率。

列名类型描述
relidoid该索引所属表的 OID
indexrelidoid该索引本身的 OID
schemanamename该索引所在的模式名
relnamename该索引所属表的名称
indexrelnamename该索引的名称
idx_scanbigint在此索引上发起的扫描次数
last_idx_scantimestamp with time zone最近一次扫描该索引的时间,基于最近一次事务停止时间
idx_tup_readbigint扫描从该索引取回的索引项数量
idx_tup_fetchbigint通过简单索引扫描从表中取回的存活行数

备注: 位图索引扫描会累加所用各索引的 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 统计。

列名类型描述
relidoid该索引所属表的 OID
indexrelidoid该索引本身的 OID
schemanamename该索引所在的模式名
relnamename该索引所属表的名称
indexrelnamename该索引的名称
idx_blks_readbigint从该索引读取的磁盘块数(即未在缓冲区命中而产生的读取)
idx_blks_hitbigint该索引在缓冲区中的命中次数

备注: idx_blks_read 与 idx_blks_hit 之和即为对该索引发起的总块读取请求数,可用于评估索引的缓冲命中情况。

pg_statio_all_sequences / pg_statio_sys_sequences / pg_statio_user_sequences​

类型:系统视图(VIEW),pg_catalog 模式 用途:按序列显示当前数据库中序列的 I/O 统计信息(磁盘块读取与缓冲区命中情况)。

列名类型描述
relidoid序列的 OID
schemanamename序列所在的模式名
relnamename序列名
blks_readbigint从该序列读取的磁盘块数
blks_hitbigint在该序列上的缓冲区命中次数(命中即无需磁盘读取)

pg_tables​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供当前数据库中每个表的有用信息。

列名类型描述
schemanamename表所在模式的名称(引用 pg_namespace.nspname)
tablenamename表名(引用 pg_class.relname)
tableownername表的属主名称(引用 pg_authid.rolname)
tablespacename表所在表空间的名称(引用 pg_tablespace.spcname);若为数据库默认表空间则为 NULL
hasindexesbool若表拥有(或近期曾拥有)任何索引,则为真
hasrulesbool若表拥有(或曾经拥有)规则(rule),则为真
hastriggersbool若表拥有(或曾经拥有)触发器,则为真
rowsecuritybool若该表已启用行级安全(row security),则为真

pg_timezone_abbrevs​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出日期/时间输入例程当前可识别的时区缩写;其内容随 timezone_abbreviations 运行时参数的变化而改变。

列名类型描述
abbrevtext时区缩写
utc_offsetinterval相对 UTC 的偏移量(正值表示位于格林尼治以东)
is_dstbool若为夏令时(daylight-savings)缩写,则为真

备注: 大多数时区缩写表示固定的 UTC 偏移量,但少数缩写在历史上取值会变化(详见官方文档 Section B.4);此类情况下本视图展示的是其当前含义。

pg_timezone_names​

类型:系统视图(VIEW),pg_catalog 模式 用途:列出可被 SET TIMEZONE 识别的时区名称,并给出其对应的缩写、UTC 偏移量与夏令时状态。

列名类型描述
nametext时区名称
abbrevtext时区缩写
utc_offsetinterval相对 UTC 的偏移量(正值表示位于格林尼治以东)
is_dstbool若当前正处于夏令时观测期间,则为真

备注: 与 pg_timezone_abbrevs 中固定偏移的缩写不同,这里的许多名称隐含一组夏令时切换日期规则,因此相关信息会随本地 DST 边界变化;所展示的信息基于 CURRENT_TIMESTAMP 的当前值计算。

pg_user​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供数据库用户的信息;本质上是一个公开可读的 pg_shadow 视图,但将口令字段置空。

列名类型描述
usenamename用户名
usesysidoid该用户的 ID
usecreatedbbool用户可以创建数据库
usesuperbool用户为超级用户
usereplbool用户可以发起流复制并使系统进入/退出备份模式
usebypassrlsbool用户绕过所有行级安全(RLS)策略(详见官方文档 Section 5.8)
passwdtext非真实口令(始终读取为 ********)
valuntiltimestamptz口令过期时间(仅用于口令认证)
useconfigtext[]运行时配置变量的会话默认值

pg_user_mappings​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供用户映射(user mapping)的信息;本质上是 pg_user_mapping 的公开可读视图,当用户无权使用选项字段时会省略该字段。

列名类型描述
umidoid用户映射的 OID(引用 pg_user_mapping.oid)
srvidoid包含此映射的外部服务器的 OID(引用 pg_foreign_server.oid)
srvnamename外部服务器的名称(引用 pg_foreign_server.srvname)
umuseroid被映射的本地角色的 OID;若该用户映射是公共(PUBLIC)映射,则为零
usenamename被映射的本地用户名
umoptionstext[]用户映射特定的选项,以 “keyword=value” 字符串形式表示

备注: 为保护作为用户映射选项存储的口令信息,除非满足以下条件之一,否则 umoptions 列读取为 NULL:当前用户即是被映射的用户,且其拥有该服务器或对其持有 USAGE 权限;当前用户是服务器属主且该映射为 PUBLIC;当前用户是超级用户。

pg_views​

类型:系统视图(VIEW),pg_catalog 模式 用途:提供当前数据库中每个视图的有用信息。

列名类型描述
schemanamename视图所在模式的名称(引用 pg_namespace.nspname)
viewnamename视图名(引用 pg_class.relname)
viewownername视图属主的名称(引用 pg_authid.rolname)
definitiontext视图定义(重构出的 SELECT 查询语句)