介绍
这次,我们来看看 PostgreSQL 14 和 PostgreSQL 15 的系统目录的区别。
这仍然是beta1版本,因此将来很有可能会发生变化,但是我用当前版本进行了调查。
调查方法
分别针对 PostgreSQL 14 和 PostgreSQL 15 执行以下步骤。
- 使用 psql 登录
\o
使用文件名meta 命令指定输出目标文件\a
确保 meta 命令中没有用于格式化的空格。- 执行以下 SELECT 语句以终止 psql。
SELECT c.relname, attname, atttypid FROM pg_class c JOIN pg_attribute a ON (a.attrelid = c.oid) JOIN pg_namespace ns ON (c.relnamespace = ns.oid) WHERE ns.nspname = 'pg_catalog' AND c.relkind ='r' ORDER BY c.relname, a.attname ;
复制
按关系名称和属性名称排序。(不敢按关系中属性的序号排序)
- 退出 psql。
- 区分 PostgreQSL 13 搜索结果文件和 PostgreSQL 14 搜索结果文件。
以相同的方式获取系统视图的差异(将SELECT 语句c.relkind = 'r'
的部分v
更改为)。
SELECT c.relname, attname, atttypid FROM pg_class c JOIN pg_attribute a ON (a.attrelid = c.oid) JOIN pg_namespace ns ON (c.relnamespace = ns.oid) WHERE ns.nspname = 'pg_catalog' AND c.relkind ='v' ORDER BY c.relname, a.attname ;
复制
每个表/视图的更改摘要
系统表的每个表都没有新增,但系统视图有一些新增。
系统表
每个表都添加了pg_parameter_acl
两个pg_publication_namespace
新项目。
表名 | 更改类型 | 其他更正 |
---|---|---|
pg_collation | 改变 | 更改 collcollate 列和 collctype 列的类型(名称 → 文本) 添加 colliculocale 列 |
pg_constraint | 改变 | 添加 confdelsetcols 列 |
pg_database | 改变 | datcollate 列、datctype 列的类型更改(名称 → 文本) datcollversion 列、daticulocale 列、datlocprovider 列的添加 datlastsysoid 列的 删除 |
pg_index | 改变 | 添加 indnullsnotdistinct 列 |
pg_parameter_acl | 添加 | 一个系统表,记录一个或多个角色被授权的配置参数 |
pg_publication_namespace | 添加 | 记录数据库中模式和发布之间的映射的系统表 |
pg_publication_rel | 改变 | 添加 prattrs 列和 prqual 列 |
pg_statistic_ext_data | 改变 | retype stxdexpr 列(pg_statistic[] 相同,但类型oid 不同) 添加stxdinherit 列 |
pg_subscription | 改变 | 添加 subdisableonerr 列、subskiplsn 列、subtwophasestate 列 |
系统视图
新增了三个系统视图: pg_ident_file_mappings
、 。pg_stat_recovery_prefetch
pg_stat_subscription_stats
查看名称 | 更改类型 | 其他更正 |
---|---|---|
pg_ident_file_mappings | 添加 | 提供 pg_ident.conf 内容摘要的系统视图 |
pg_stat_recovery_prefetch | 添加 | 活动统计视图,提供有关恢复期间 WAL 预取的信息 |
pg_stat_subscription_stats | 添加 | 一个活动统计视图,在反映到订阅时提供诸如错误数之类的信息。 |
pg_stats_ext | 改变 | 添加继承列 |
pg_stats_ext_exprs | 改变 | 添加继承列 |
变更详情
系统表
pg_collation
此系统表管理在 SQL 名称和操作系统区域设置类别之间建立基本对应关系的排序规则。CREATE COLLATION
新定义的排序规则也在这里管理。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
语言环境 | 文字 文字 | 此排序规则对象的 ICU 语言环境 ID。 |
pg_constraint
该系统表是管理非空约束以外的约束的系统表。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
confdelsetcols | 整数2 [] | 如果外键具有 SET NULL 或 SET DEFAULT 删除操作,则指定要更新的列。 如果为 NULL,则将更新所有引用的列。 |
pg_database
该系统表是管理有关数据库的各种信息的系统表。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
数据收集版本 | 文字 文字 | 特定于提供者的排序规则版本。 在数据库创建过程中记录,在使用过程中检查,并用于检测导致数据损坏的排序规则定义更改。 |
本地化 | 文字 文字 | 此数据库的 ICU 区域设置 ID |
数据提供者 | 文字 文字 | (此时PostgreSQL文档中未提及) |
此外,在 PostgreSQL 15 中,以下列已被删除。
列名 | 数据类型 | 解释 |
---|---|---|
数据体系统 | 样的 | 数据库最终系统 OID。有一个描述是我以前用过的东西,但是去掉这个可能对 PostgreSQL 15有一些影响。 pg_dump pg_dump |
pg_index
此系统表管理有关索引的一些信息。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
indnullsnotdistinct | 布尔 | 此列仅用于唯一索引。 如果为 false,则认为此唯一索引用于区分空值。 如果为真,则认为空值相等。 计划者会根据这条线做出任何决定吗? |
pg_parameter_acl
从 PostgreSQL 15 添加的系统表。
此系统表管理一个或多个角色被授权的配置参数。.. 此处不管理具有默认权限的参数。
此外,与大多数系统目录不同,pg_parameter_acl 由集群中的所有数据库共享。
pg_parameter_acl 由以下列组成。
列名 | 数据类型 | 解释 |
---|---|---|
样的 | 样的 | 此表的 ID。 |
参数名 | 文字 文字 | 要授予权限的配置参数名称。 |
参数 | 访问 [] | 访问权。 |
pg_publication_namespace
从 PostgreSQL 15 添加的系统表。
管理数据库中模式和发布之间的映射。
这是一个多对多映射。
pg_publication_namespace 由以下列组成。
列名 | 数据类型 | 解释 |
---|---|---|
样的 | 样的 | 此表的 ID |
pnpubid | 样的 | 见出版物。 |
pnnspid | 样的 | 架构参考。 |
pg_publication_rel
此系统表管理数据库中关系和发布的映射。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
普拉特斯 | int2vector | 一个值数组,指示哪些表列是发布的一部分。空值意味着将发布所有列。 这是否意味着只能在逻辑上复制某些列? |
prqual | pg_node_tree | 表示发布者条件的树(nodeToString() 表示)。如果没有发布者要求,则为 NULL。 |
prattrs
似乎与以下发行说明描述有关。
允许出版物仅限于特定栏目(Tomas Vondra、Álvaro Herrera、Rahila Syed)
prqual
似乎与以下发行说明描述有关。
允许使用 WHERE 子句过滤发布内容(侯志杰、Euler Taveira、Peter Smith、Ajin Cherian、Tomas Vondra、Amit Kapila)
pg_statistic_ext_data
该系统表管理由 pg_statistic_ext 定义的规划器扩展统计的数据(CREATE STATISTICS
认为它包含由命令创建的扩展统计)。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
stxdinherit | 布尔值 | 如果为 true,则统计信息不仅包括指定关系的值,还包括继承的子列。 |
pg_subscription
此系统表管理有关订阅定义的信息。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
子禁用错误 | 布尔值 | 如果为 true,则如果其中一名工作人员检测到错误,订阅将被禁用。 我想知道是否必须将 CREATE SUBSCRIPTION 的命令更改为一组。 |
子跳跃 | pg_lsn | 事务结束以跳过更改 LSN(如果 LSN 有效),否则0/0 。我想知道逻辑复制的更改跳过是否有一些变化。 |
亚两相状态 | 字符 | 两阶段模式状态码:d = 无效,p = 等待激活,e = 有效。 是否与围绕逻辑复制和两阶段提交的改进项目有关?需要确认。我不知道为什么 模具 enum 不见了。char |
系统视图
pg_ident_file_mappings
PostgreSQL 15 中添加的视图。提供
客户端用户名映射配置文件内容的摘要。pg_ident.conf
此视图显示文件中的每个非空、非注释行,并带有注释以指示规则是否已成功应用。
曾经有一个系统视图提供了 pg_hba.conf 内容的摘要,pg_hba_file_rules
但它pg_ident.conf
看起来像是它的一个版本。
pg_ident_file_mappings 由以下 5 列组成。
列名 | 数据类型 | 解释 |
---|---|---|
电话号码 | 整数4 | pg_ident.conf 文件中的行数。 |
地图名称 | 文字 文字 | 映射的名称。 |
系统名称 | 文字 文字 | 发现的客户端的用户名。 |
pg_username | 文字 文字 | 请求的 PostgreSQL 用户名。 |
错误 | 文字 文字 | 如果不为 NULL,则显示一条错误消息,说明为什么无法处理此行。 |
pg_stat_recovery_prefetch
从 PostgreSQL 15 添加的活动统计视图。
只有一条线。
wal_distance、block_distance 和 io_depth 列显示当前值,其他列显示可以使用 pg_stat_reset_shared 函数重置的累积计数器。
也许它会在恢复期间显示有关 WAL 预取的统计信息。
此活动统计视图由以下列组成。
列名 | 数据类型 | 解释 |
---|---|---|
预取 | 大整数 | 由于不在缓冲池中而预取的块数。 |
打 | 大整数 | 由于已经在缓冲池中而未预取的块数。 |
跳过初始化 | 大整数 | 由于初始化为零而未预取的块数。 |
跳过新 | 大整数 | 由于尚不存在而未预取的块数。 |
跳过_fpw | 大整数 | 由于 WAL 包含整页图像而未预取的块数。 |
跳过代表 | 大整数 | 由于最近预取而未预取的块数。 |
wal_distance | 整数 | 预取器向前看多少字节? |
块距离 | 整数 | 预取器正在查看多少块。 |
io_depth | 整数 | 已开始但尚未确认已完成的预取数。 |
您打算使用此活动统计视图进行哪种监控?
pg_stat_subscription_stats
从 PostgreSQL 15 添加的活动统计视图。
pg_stat_subscription_stats 视图中的每个订阅都有一行。
此活动统计视图由以下五列组成。
列名 | 数据类型 | 解释 |
---|---|---|
子项 | 样的 | 订阅 OID。 |
子名 | 姓名 | 订阅名称。 |
应用错误计数 | 大整数 | 应用更改时发生错误的次数。 |
同步错误计数 | 大整数 | 初始表同步期间发生错误的次数。 |
stats_reset | 带时区的时间戳 | 上次重置此统计信息的时间。 |
我必须考虑使用此方法进行逻辑复制的监视方法。
pg_stats_ext
此系统视图将存储的信息与数据库中的每个扩展统计对象的信息相结合,以提供对信息的访问pg_statistic_ext
。 PostgreSQL 中添加了以下列:pg_statistic_ext_data
列名 | 数据类型 | 解释 |
---|---|---|
遗传 | 布尔值 | 如果为 true,则该行包含继承的子列以及指定表中的值。(Maybe) (Maybe) 因为此时 PostgreSQL 文档中没有提到它。 |
pg_stats_ext_exprs
此系统pg_statistic_ext
视图pg_statistic_ext_data
将存储的信息与扩展统计对象中包含的所有表达式的信息相结合,以提供对信息的访问。
PostgreSQL 15 中添加了以下列。
列名 | 数据类型 | 解释 |
---|---|---|
遗传 | 布尔值 | 如果为 true,则该行包含继承的子列以及指定表中的值。(Maybe) (Maybe) 因为此时 PostgreSQL 文档中没有提到它。 |
综上所述
在今天的调查时,许多差异尚不清楚,因此我想根据需要用其他功能调查结果对其进行补充。
另外,我认为PostgreSQL文档以后会修改和增加,所以我会不定期的修改这个调查内容。
文章来源:https://qiita.com/nuko_yokohama/items/72b261ac03c25f68c9c8