暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

走读PostgreSQL 18树枝特性

序言

最近几天,PG社区邮件列表处于RC发布前的冻结特殊期,这也是为了迎接9月25日新版本的如期而至。PG的每个大版本就像一颗树,五月发芽,展枝三月,九月如盖。

官宣的主要特性

参考Release 18,主要特性直译如下(有好的建议欢迎指正):

  • AIO 异步读提升全表扫描、索引范围扫描、vacuum操作
  • 工业级标准令牌验证:OAuth Bearer
  • pg_upgrade版本升级迁移表及字段的统计信息
  • Btree多列索引支持skip scan非前导列等场景
  • UUID强势回归主键策略:高性能uuidv7函数
  • 不消耗存储的运算生成列:Virtual generated columns
  • Retuning子句支持old和new数据行引用
  • 支持范围类型的时态约束:Temporal PRIMARY/FOREIGN KEY

我尝试通过案例场景描述的方式来包装部分特性,以加深大家的理解:

image.png

新版本树枝特性走读

1.兼容性变化

  • 标记MD5口令认证方式将被废弃(md5_password_warnings=on)
  • 数据目录初始化initdb默认使用checksum(–no-data-checksums)
  • AFTER triggers以当时实际的角色执行(security invoker环境下)
  • 日期时间格式显示优先采用会话级时区简写
  • 继承式分区表vacuum和analyze操作默认处理子表(使用ONLY向下兼容)
  • 分区表不允许设置unlogged功能
  • COPY FROM从csv文件在psql里可正常读取.(不会当成文件结尾标识符)
  • pg_backend_memory_contexts视图变化(path字段替换parent;level字段从1开始)
  • 全文索引使用数据库初始化设置的collation provider,而非固化的libc

演示几个具体示例:

image.png

image.png

image.png

2.性能优化

  • 自连接消除(enable_self_join_elimination参数控制)
  • 更智能的IN/OR处理:values常量列表自动转化为ANY数组、OR自动转换为ANY数组
  • DISTINCT内部排序优化(enable_distinct_reordering参数控制)
  • GROUP BY冗余列消除(唯一索引且非空列、NULLS NOT DISTINCT)
  • Index Skip Scan跳跃扫描(多列组合索引允许使用非前导列)
  • 加速处理交差集合运算、窗口聚合函数等
  • 扩展分组查询GROUPING SETS允许下推having子句
  • 测试函数generate_series对数字和时间类型估值更准
  • 支持Right Semi Join算子
  • Merge Joins增加incremental sorts算子
  • SQL language函数可使用plan cache

特性示例如下:

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3.DBA及日常管理

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

4.备份及流复制

image.png

image.png

image.png

5.SQL及应用开发

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

6.附加模块及扩展

image.png

image.png

image.png

最后修改时间:2025-09-24 09:54:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论