PostgreSQL码农集散地

一文读懂 PostgreSQL 18 全系功能

截止2025.04.09 PostgreSQL 18 preview

点击阅读原文:

https://github.com/digoal/blog/blob/master/202504/20250407_11.md

IO 优化. 新增启发式预读接口(流式读), IO功能模块化(worker/io_uring/sync ...), 支持异步IO.

  • 《PostgreSQL 18 AIO & DIO 顶层设计》
  • 《PostgreSQL 18 preview - read_stream 启发式预读量优化, 异步IO(AIO)准备》
  • 《PostgreSQL 18 preview - 重磅, 刚刚支持异步IO框架》
  • 《PostgreSQL 18 preview - 异步IO(AIO)应用到缓冲区管理器层面》
  • 《PostgreSQL 18 preview - AIO增强 : 增加监控工具、增强测试能力、清理代码、改进错误诊断》
  • 《PostgreSQL 18 preview - 打开文件数限制max_files_per_process更新, 为异步IO io_uring做准备》
  • 《PostgreSQL 18 preview - 异步IO支持io_uring, IO性能大幅提升》
  • 《PostgreSQL 18 preview - bitmap Heap Scan支持AIO批量读》
  • 《PostgreSQL 18 preview - 改进buffer manager API适配未来read_stream.c 的改进》
  • 《PostgreSQL 18 preview - 流式IO提升索引垃圾回收效率》
  • 《PostgreSQL 18 preview - read_stream 预读逻辑优化, 提升IO性能》
  • 《PostgreSQL 18 preview - bitmapheapscan 适配 read_stream 接口, 提升位图堆扫描的性能》
  • 《PostgreSQL 18 preview - autoprewarmshared buffer预热插件改用streaming read I/O》
  • 《PostgreSQL 18 preview - 允许所有场景开启并发IO》
  • 《PostgreSQL 18 preview - 提高默认的 effective_io_concurrency , maintenance_io_concurrency 至 16》
  • 《PostgreSQL 18 preview - 新增IO合并硬限制: io_max_combine_limit》
  • 《PostgreSQL 18 preview - 调整 BAS_BULKREAD 算法适配 并发IO请求 和 合并IO大小》
  • 《PostgreSQL 18 preview - file_copy_method = COPY/CLONE( 支持 COW )》

大版本升级. pg_upgrade支持并行IO框架, 支持swap inode(比hard link还更快), 支持统计信息迁移, 支持一键创建所有对象逻辑订阅(简化增量同步), 支持analyze跳过已有统计信息的对象. 最终可大幅缩短停机时间.

  • 《PostgreSQL 18 preview - pg_upgrade 大版本升级工具支持并行框架》
  • 《PostgreSQL 18 preview - pg_upgrade大版本升级支持swap选项(mv data)》
  • 《PostgreSQL 18 preview - pg_upgrade使用CREATE DATABASE ... STRATEGY = FILE_COPY提升大版本升级过程中create database性能》
  • 《PostgreSQL 18 preview - Pluggable cumulative statistics》
  • 《PostgreSQL 18 preview - 支持统计信息导出导入, 将来用pg_upgrade大版本升级后不需要analyze了》
  • 《PostgreSQL 18 preview - 支持pg_upgrade升级大版本时迁移统计信息》
  • 《PostgreSQL 18 preview - pg_createsubscriber增加--all选项, 方便全实例逻辑订阅》
  • 《PostgreSQL 18 preview - pg_dump 导出统计信息功能优化》
  • 《PostgreSQL 18 preview - PG 18支持重置(pg_clear_attribute_stats)和设置(pg_set_attribute_stats)指定对象的列级统计信息》
  • 《PostgreSQL 18 preview - PG 18支持重置(pg_clear_relation_stats)和设置(pg_set_relation_stats)指定对象的统计信息》
  • 《PostgreSQL 18 preview - vacuumdb支持跳过已有统计信息对象, 提升pg_upgrade体验》

逻辑复制. 提升大事务逻辑复制性能, 生成列复制控制, 增强监控等.

  • 《PostgreSQL 18 preview - 提升大事务逻辑复制性能》
  • 《PostgreSQL 18 preview - 逻辑复制增强: 允许指定是否复制generated columns的value》
  • 《PostgreSQL 18 preview - pg_recvlogical 支持创建 failover slot》
  • 《PostgreSQL 18 preview - 订阅数控制参数: max_active_replication_origins》
  • 《PostgreSQL 18 preview - 新增插件: pglogicalinspect 内视 logical decoding components 信息》
  • 《PostgreSQL 18 preview - 逻辑订阅冲突统计 Collect statistics about conflicts in logical replication》

性能. 高并发小事务优化, 大内存机器优化, 复杂查询优化, 指令优化提升JSON处理性能, 泛化排序接口不再依赖btree, 并行build GIN索引.

  • 《PostgreSQL 18 preview - 增加fast-path lock slots, 提升访问多对象的高并发OLTP业务性能》
  • 《PostgreSQL 18 preview - 高并发性能优化 之 fast-path lock优化》
  • 《PostgreSQL 18 preview - 提升 GetLockStatusData 效率, 优化高并发小事务性能》
  • 《PostgreSQL 18 preview - 引入 NUMA 感知能力》
  • 《PostgreSQL 18 preview - 索引启发式扫描 优化 in , = any(array) 多值匹配性能》
  • 《PostgreSQL 18 preview - 窗口查询性能提升40%(100万个窗口时), 递归CTE性能提升》
  • 《PostgreSQL 18 preview - tuplestore.c使用generation.c memory context, 物化节点内存使用率降低,性能提升22%》
  • 《PostgreSQL 18 preview - tuple deformation 优化, OLAP 场景性能提升5-20%》
  • 《PostgreSQL 18 preview - SIMD用于提升JSON 字符串转义性能》
  • 《PostgreSQL 18 preview - numeric 类型乘法算法性能优化》
  • 《PostgreSQL 18 preview - 泛化索引AM排序接口: PrepareSortSupportFromIndexRel() 函数》
  • 《PostgreSQL 18 preview - range类型增加GiST 和 B-树的 sortsupport 接口》
  • 《PostgreSQL 18 preview - 奇慢无比的GIN索引创建支持并行了》

优化器. 新增索引跳跃扫描方法, 自动转换in/or条件为= ANY, merge join优化, 增强query rewrite针对烂SQL, 提升复杂SQL行数估算精度等.

  • 《PostgreSQL 18 preview - index skip scan 优化》
  • 《PostgreSQL 18 preview - 将命中同一个索引的多个OR条件转换为 = ANY (.....) , 避免使用更低效的BitmapOr》
  • 《PostgreSQL 18 preview - in (values ()) 支持自动按需转换为 = any(array)》
  • 《PostgreSQL 18 preview - mergejoins 支持 incremental sort》
  • 《PostgreSQL 18 preview - 专为烂SQL的一个优化补丁 , Self-Join Elimination》
  • 《PostgreSQL 18 preview - Support "Right Semi Join" plan shapes》
  • 《PostgreSQL 18 preview - 并行 nestloop join 优先考虑 物化最廉价的inner path》
  • 《PostgreSQL 18 preview - Allow pushdown of HAVING clauses with grouping sets》
  • 《PostgreSQL 18 preview - Teach planner how to estimate rows for timestamp generate_series》
  • 《PostgreSQL 18 preview - 使用扩展统计信息提高hash join bucket估算准确度》
  • 《PostgreSQL 18 preview - 子查询group by单列统计信息提升》

块级增量备份恢复.

  • 《PostgreSQL 18 preview - pg_combinebackup 支持硬链接(hard link)》
  • 《PostgreSQL 18 preview - pg_ls_summariesdir() 查询 pg_wal/summaries目录(wal 倒排索引)》

监控/管理. 支持观测运行中SQL执行计划, 新增explain钩子, 扩展explain输出, 增强WAL监控数据试图展示, 认证DDoS攻击检测, 精细记录登陆日志, 精确记录获取锁错误详情, 进程内存上下文检测, 快速驱逐shared buffer, 其他统计信息视图输出内容增强.

  • 《PostgreSQL 18 preview - pg_log_query_plan() 打印running SQL的执行计划》
  • 《PostgreSQL 18 preview - 新增 EXPLAIN 扩展信息钩子》
  • 《PostgreSQL 18 preview - 支持 pg_overexplain 插件, 增加EXPLAIN debug,range_table选项》
  • 《PostgreSQL 18 preview - EXPLAIN ANALYZE 展示 Parallel Bitmap Heap Scan worker stats 信息》
  • 《PostgreSQL 18 preview - explain 增强 window 函数使用输出信息》
  • 《PostgreSQL 18 preview - explain analyze支持index searches统计》
  • 《PostgreSQL 18 preview - Add memory/disk usage for Material nodes in EXPLAIN》
  • 《PostgreSQL 18 preview - 增强wal receiver进程的WAL写入监控》
  • 《PostgreSQL 18 preview - 增加每个进程的 WAL 统计信息》
  • 《PostgreSQL 18 preview - Add data for WAL in pg_stat_io and backend statistics (pg_stat_get_backend_io)》
  • 《PostgreSQL 18 preview - pg_stat_io "实时"刷新wal sender统计信息》
  • 《PostgreSQL 18 preview - 新增 wal_buffer full times 统计》
  • 《PostgreSQL 18 preview - PostgreSQL pg_stat_activity新增状态authenticating, 可检测拒绝服务DDoS攻击》
  • 《PostgreSQL 18 preview - log_connections 模块化 , 精细记录用户连接阶段信息》
  • 《PostgreSQL 18 preview - 新增GUC参数:log_lock_failure 记录获取锁错误详细日志》
  • 《PostgreSQL 18 preview - 新增获取进程内存上下文函数: pg_get_process_memory_contexts》
  • 《PostgreSQL 18 preview - pg_buffercache 新增高效驱逐shared buffer unpinned page的函数接口pg_buffercache_evict_{relation,all}》
  • 《PostgreSQL 18 preview - pg_stat_statements: Add columns to track parallel worker activity》
  • 《PostgreSQL 18 preview - 会话各状态耗时/计数分析: pg_stat_session》
  • 《PostgreSQL 18 preview - pg_stat_checkpointer.num_done 统计实际完成的检查点次数》
  • 《PostgreSQL 18 preview - backend process IO 统计功能 pg_stat_get_backend_io($PID)》
  • 《PostgreSQL 18 preview - 新增GUC: extension_control_path 指定插件位置》
  • 《PostgreSQL 18 preview - 新增 GUC: query_id_squash_values 支持SQL IN查询混淆开关》
  • 《PostgreSQL 18 preview - 新增角色pg_signal_autovacuum_worker, 可以向autovacuum worker进程发出cancel or terminate信号》
  • 《PostgreSQL 18 preview - pg_get_acl() 支持sub-OID, 如列级别权限检测》
  • 《PostgreSQL 18 preview - Set query ID for inner queries of CREATE TABLE AS and DECLARE》

稳定性. 提升时序数据(append only)冻结频率, 解决大表垃圾回收频率低问题, 可能: 内置repack功能, 64-bit xid设计框架引入

  • 《PostgreSQL 18 preview - 优化insert only表的autovacuum freeze频率》
  • 《PostgreSQL 18 preview - 解决大表的自动垃圾回收频率低问题: autovacuum_vacuum_max_threshold》
  • 《PostgreSQL 18 preview - VACUUM FULL / CLUSTER CONCURRENTLY》
  • 《PostgreSQL 18 preview - 64-bit XID 设计和patch出炉, 真的来了?》
  • 《PostgreSQL 18 preview - 新增GUC: vacuum_truncate 控制垃圾回收时是否收缩文件大小(截断表的末尾空页)》

SQL. 虚拟生成列, copy跳过错误上限, 外部表创建支持LIKE语法, returning返回new/old value支持等

  • 《PostgreSQL 18 preview - Add OLD/NEW support to RETURNING in DML queries》
  • 《PostgreSQL 18 preview - Virtual generated columns》
  • 《PostgreSQL 18 preview - 支持copy 物化视图 to》
  • 《PostgreSQL 18 preview - COPY 最多可跳过的错误行数(REJECT_LIMIT N)》
  • 《PostgreSQL 18 preview - COPY支持log_verbosity = silent对跳过的错误行保持静默; file_fdw options支持on_error 及 log_verbosity》
  • 《PostgreSQL 18 preview - file_fdw 最多可跳过的错误行数(REJECT_LIMIT N)》
  • 《PostgreSQL 18 preview - int和bytea支持互相转换》
  • 《PostgreSQL 18 preview - 支持字节流反序列函数 reverse(bytea)》
  • 《PostgreSQL 18 preview - 新增array_sort函数 支持数组元素排序》
  • 《PostgreSQL 18 preview - 支持在 CREATE FOREIGN TABLE 中使用 LIKE 语法》
  • 《PostgreSQL 18 preview - CASEFOLD() 增强式 LOWER() , 多字节字符 大小写不敏感》
  • 《PostgreSQL 18 preview - 支持 gamma() 和 lgamma() 函数》
  • 《PostgreSQL 18 preview - PL/pgSQL 允许使用 => 语法为命名游标参数赋值兼容Oracle》
  • 《PostgreSQL 18 preview - primary key, unique 世俗约束 (gist 实现 without overlaps)》
  • 《PostgreSQL 18 preview - 妥协了? check和foreign key 约束要引入假设为真(NOT ENFORCED)了?》

psql客户端. 支持pipeline和bind等协议层功能的使用.

  • 《PostgreSQL 18 preview - psql客户端支持扩展协议prepared statement元语: bind parse bindx close》
  • 《PostgreSQL 18 preview - psql 支持pipeline流水线模式》

分区表. 大量分区性能优化.

  • 《PostgreSQL 18 preview - 优化分区表规划阶段性能》
  • 《PostgreSQL 18 preview - Reduce memory used by try_partitionwise_join》
  • 《PostgreSQL 18 preview - 优化分区表Append节点选择最优执行计划的策略, 引入tuple_fraction》
  • 《PostgreSQL 18 preview - 放宽对非 B-tree 索引用于partition keys、matviews的限制》
  • 《PostgreSQL 18 preview - pg社区这个patch有点不理性! 不解决问题, 解决提问题的人. - Remove support for unlogged on partitioned tables》

安全. 支持“刷卡”认证方法, 支持协议版本控制, cancel key增强(够大, 中间件可编码), pgcrytpo插件新增密码哈希算法.

  • 《PostgreSQL 18 preview - 支持OAuth 2.0认证协议, 可“刷卡”认证了》
  • 《PostgreSQL 18 preview - 连接协议兼容性、安全性改进, 支持min/max_protocol_version》
  • 《PostgreSQL 18 preview - 连接协议改进, cancel key增加到256字节》
  • 《PostgreSQL 18 preview - pgcrypto 新增2个更安全的密码哈希算法》
直播回放:
Image