PgPedia周刊
每周更新,列出值得关注的提交、PostgreSQL 的其他有趣更改,以及 PgPedia 的笔记和勘误。
理论上每周日发布,但由于个人事务有时会延迟。
本周 PostgreSQL 18 的更改
随着所有五个 CommitFests 结束,我们现在进入了测试和错误修复阶段,不太可能再添加新功能。话虽如此,本周在 SQL 函数性能和处理方面确实进行了一些调整。
PostgreSQL 18 文章
- 等待 PostgreSQL 18 – 为 pgcrypto 添加现代 SHA-2 密码哈希。 (2025-04-17) - Hubert 'depesz' Lubaczewski
- 等待 PostgreSQL 18 – pg_dumpall 的非文本模式,相应地更改 pg_restore (2025-04-15) - Hubert 'depesz' Lubaczewski
- PostgreSQL 18 中展开对象的改进 (2025-04-12) - Jim Mlodgenski
好了,代码冻结已经来临并过去了,所以 PostgreSQL 18 的开发工作已经全部结束,只剩下测试。RC1 很可能在 9 月初发布,所以请尽早启动您的测试环境!
从现在开始的任何新功能都将用于未来的 PostgreSQL 19,其第一个 CommitFest 将于 7 月开始(2025-07)。
本周 PostgreSQL 18 的更改
NOT NULL约束现在可以作为NOT VALID添加- NUMA (非统一内存访问)
- 添加了对 NUMA 感知的初步支持
- 添加了视图 pg_shmem_allocations_numa
- 添加了对 NUMA 感知的初步支持
pg_get_process_memory_contexts()- 用于从进程检索内存上下文统计信息的新函数
- 用于从进程检索内存上下文统计信息的新函数
file_copy_method- 新的 GUC,指定
CREATE DATABASE等应使用哪种方法复制文件
- 新的 GUC,指定
log_line_prefix- 添加了
%L参数,显示客户端已连接到哪个服务器 IP 地址
- 添加了
pg_buffercache- 添加了函数
pg_buffercache_evict_relation()和pg_buffercache_evict_all() - 添加了视图
pg_buffercache_numa
- 添加了函数
PostgreSQL 18 文章
- 提升 Postgres 的 EXPLAIN (2025-04-12) - Andrei Lepikhov
- PostgreSQL 18:添加函数报告后端内存上下文 (2025-04-09) - Daniel Westermann / dbi services
- PostgreSQL 18:允许 NOT NULL 约束以 NOT VALID 形式添加 (2025-04-08) - Daniel Westermann / dbi services
- PostgreSQL 合并了对 NUMA 感知的初步支持 (2025-04-08) - Michael Larabel / Phoronix
- 等待 Postgres 18 – Docker 容器缩小 34% (2025-04-07) - Jeremy Schneider
CommitFest 52 (2025-03) – PostgreSQL 18 开发周期中最后一个 CommitFest – 即将结束,一如既往地延续到 3 月底,直到 4 月 8 日的代码冻结。
在这个冲刺的最后阶段,有许多有趣的更改,加上个人原因,使得跟踪这些更改变得具有挑战性。一如既往,如果您发现有遗漏,请通过 反馈 表单告知我。
本周 PostgreSQL 18 的更改
优化器x IN (VALUES ...)在适当时转换为x = ANY ...
规划器
- SQL 语言函数现在使用计划缓存
索引- 为范围类型添加了 GiST 和 btree 的 sortsupport 例程
- 添加了 btree 跳跃扫描优化
- 各种其他 btree 优化
ALTER DEFAULT PRIVILEGES
- 能够为 大对象定义默认权限
COPYCOPY TO可以从物化视图复制行
pg_replication_slots- 添加了列
two_phase_at
- 添加了列
array_sort()- 用于对数组进行排序的函数
btree_gist- 支持排序的 gist 索引构建
pg_dump- 转储统计信息时的效率改进
pg_dumpall- 添加了选项
-F/--format
- 添加了选项
pg_recvlogical- 添加了选项
--failover
- 添加了选项
libpq- 添加了连接参数
min_protocol_version和max_protocol_version - 添加了连接参数
sslkeylogfile
- 添加了连接参数
本周(实际上是上周)有很多事情发生(由于个人原因,本期 PgPedia 周报不幸延迟),因为 CommitFest 52 (2025-03) - PostgreSQL 18 开发周期的最后一个 CommitFest - 接近尾声。尽管通常会一直持续到 4 月 8 日的代码冻结。
PostgreSQL 18 更改
新功能
- 动态加载的共享库可以提供用户可查询的元数据
- 支持虚拟 生成列上的
NOT NULL约束 - 添加了新的冲突类型
multiple_unique_conflicts gamma(),lgamma()- 新的数学函数
pg_get_loaded_modules()- 报告有关加载模块的信息
max_files_per_process- 现在控制额外打开的文件
pg_recvlogical- 选项
--drop-slot不再需要提供--dbname
- 选项
initdb- 添加了选项
--no-sync-data-files
- 添加了选项
psql\dx现在显示默认的扩展版本\watch的默认间隔现在可配置
pg_createsubscriber- 添加了选项
--all
- 添加了选项
pg_dump- 添加了选项
--sequence-data - 添加了选项
--with-data/--with-schema/--with-statistics
- 添加了选项
pg_upgrade- 添加了选项
--swap
- 添加了选项
amcheck- 添加了函数
gin_index_check()
- 添加了函数
dblink- SCRAM 认证直通
pg_overexplain- contrib 模块,用于扩展
EXPLAIN输出
- contrib 模块,用于扩展
回滚
随着 CommitFest 52 (2025-03) – PostgreSQL 18 开发周期中最后一个 CommitFest – 进入最后阶段,出现了一系列活动,并且 PostgreSQL 18 的代码冻结已宣布于 4 月 8 日。
本周 PostgreSQL 18 的更改
EXPLAIN- 为扩展使用添加了 钩子
extension_control_path- 新的 GUC,允许扩展控制文件存储在自定义位置
io_combine_limit- 最大范围扩展到
1MB/128块
- 最大范围扩展到
io_max_combine_limit- 新的 GUC,控制组合 I/O 操作中的最大 I/O 大小
maintenance_io_concurrency- 默认值增加到
16
- 默认值增加到
max_active_replication_origins- 新的 GUC,控制复制原点的最大数量
query_id_squash_values- 新的 GUC,用于控制查询混淆中常量列表的压缩
vacuum_truncate- 新的 GUC,控制表中页末的截断
pg_combinebackup- 添加了选项
-k/--link
- 添加了选项
pg_createsubscriber- 添加了选项
-R/--remove
- 添加了选项
psql- 添加了
\sendpipeline斜杠命令
- 添加了
vacuumdb- 为分析仅缺少统计信息的视图添加了
--missing-stats-only选项
- 为分析仅缺少统计信息的视图添加了
PostgreSQL 18 文章
- PostgreSQL 18:向 vacuumdb 添加“-missing-stats-only” (2025-03-20) - Daniel Westermann / dbi services
CommitFest 52 (2025-03),PostgreSQL 18 开发周期中最后一个 CommitFest,已过半程,本周出现了一些新功能。
PostgreSQL 18 更改
改进和新功能
EXPLAIN- 窗口函数显示已改进
- 现在报告索引搜索计数
log_lock_failure用于记录锁获取失败的新 GUC
effective_io_concurrency- 默认值增加到
16
- 默认值增加到
log_connections- 现在接受一系列选项以提供更细粒度的连接日志记录
lower(),upper(),casefold()- 性能改进
pg_stat_get_backend_wal()- 新函数,用于检索每个后端的 WAL 统计信息
reverse()- 添加了对
bytea数据类型的支持
- 添加了对
pg_dump,pg_dumpall,pg_restore- 添加了选项
--no-policies
- 添加了选项
PL/Python- Python "Limited API" 已激活
isn- 添加了 GUC
isn.weak,取代了isn_weak()函数
- 添加了 GUC
回滚
PostgreSQL 18 文章
- 等待 PostgreSQL 18 – 允许 json{b}_strip_nulls 删除 null 数组元素 (2025-03-13) - Hubert 'depesz' Lubaczewski
- 等待 PostgreSQL 18 – 允许 GIN 索引的并行 CREATE INDEX (2025-03-11) - Hubert 'depesz' Lubaczewski
CommitFest 52 (2025-03),PostgreSQL 18 开发周期中最后一个 CommitFest,正在进行中。
PostgreSQL 18 更改
ALTER TABLE- 添加了
ALTER CONSTRAINT ... SET [NO] INHERIT语法
- 添加了
CREATE INDEX- 添加了创建 GIN 索引的并行支持 *完成*
- 如果
autovacuum设置为off,则表统计信息将不会更新
json_strip_nulls()和jsonb_strip_nulls()现在可以移除null数组元素- 添加了对
bytea和integer类型之间进行转换的支持 PL/pgSQL: 支持命名游标参数的=>语法postgres_fdw:postgres_fdw_get_connections()的输出中添加了列remote_backend_pid- 通过
relallfrozen触发更频繁的 autovacuum - 在 WAL 接收器中添加更多关于 WAL 写入的监控数据
CommitFest 52 (2025-03),PostgreSQL 18 开发周期中最后一个 CommitFest,本周启动。
PostgreSQL 18 更改
从 pg_stat_wal 和 GUC track_wal_io_timing 中移除 read/sync 字段psql: 添加了管道状态提示配置选项和状态变量 *完成*在 pg_createsubscriber 中添加了两阶段选项。改进恢复时无效 TLI 历史的 FATAL 消息
PostgreSQL 18 文章
- 等待 PostgreSQL 18 – 虚拟生成列 (2025-02-28) - Hubert 'depesz' Lubaczewski
- 等待 PostgreSQL 18 – 允许 EXPLAIN 指示小数行数 (2025-02-28) - Hubert 'depesz' Lubaczewski
