如一而致,久久归来,PG 17今年是第九个在九月份发布的版本。
| Version | Current minor | Supported | First Release | Final Release |
|---|---|---|---|---|
| 17 | 17.0 | Yes | September 26, 2024 | November 8, 2029 |
| 16 | 16.4 | Yes | September 14, 2023 | November 9, 2028 |
| 14 | 14.13 | Yes | September 30, 2021 | November 12, 2026 |
| 13 | 13.16 | Yes | September 24, 2020 | November 13, 2025 |
| 9.6 | 9.6.24 | No | September 29, 2016 | November 11, 2021 |
| 9.3 | 9.3.25 | No | September 9, 2013 | November 8, 2018 |
| 9.2 | 9.2.24 | No | September 10, 2012 | November 9, 2017 |
| 9.1 | 9.1.24 | No | September 12, 2011 | October 27, 2016 |
| 9.0 | 9.0.23 | No | September 20, 2010 | October 8, 2015 |
为什么17没有触达我们的预期呢
大家如果看了17的发布注记,可能会觉得就这… 就这…
貌似没有期待的一些亮眼特性:如64位事务号、回滚段、透明加密、原生高可用架构等。
话说并非社区缺乏进取心,一方面PG为爱而生至今功能已日臻完善。
本人参加工作最早是从9.0开始接触PG:当时备份恢复不支持并行,分区表使用继承,基于触发器路由数据,流复制也只支持异步方式。随着社区的全球顶尖开发者每年不断贡献新特性,而今许多特性都已在PG里实现,个别复杂特性除外。
另外一方面是为PG内核提交特性的周期会比较长,即便作为核心贡献者的老法师都很难保持不惊波澜,万顷一碧的心境!提交人的忧乐自知感请看这篇文章:
17新特性已锁死
PostgreSQL 17主要特性如下,本文链接的文章都经本人实测过。
飘香新特性
- 针对大库只备份修改过的数据块:PostgreSQL 17增量备份
- 不依赖操作系统的内置排序方案:PostgreSQL 17原厂locale来了
- 发布订阅高可用故障转移:逻辑复制槽支持主从同步切换
性能全面提升
- vacuum内存管理彻底改进:PostgreSQL 17 vacuum功能增强
- BRIN索引支持并行创建:PostgreSQL 17并行特性更新
- GiST和SP-GiST索引支持增量排序:PostgreSQL 17增量排序
- PostgreSQL 17优化器相关改进
包括:
- 流式I/O和多块读API:增加io_combine_limit控制参数
- IN长查询B-Tree索引减少了重复的叶子节点访问
- IS NOT NULL和IS NULL冗余消除
- CTE可利用自身的统计信息和排序顺序
- IS [NOT] UNKNOWN分区裁剪
- 范围类型操作符函数转化为边界值直接比较
- 子查询执行计划节点输出优化
- Group By多列自适应重排
- Union可使用MergeAppend算子
- 带互斥条件的表访问优化
- 表元组估算考虑填充因子的影响
- 针对uuid数组优化uuid_out()函数
开发者体验
- PostgreSQL 17应用开发篇
- 飘香新特性之Merge语法增强
- PostgreSQL 17新增Oracle兼容性
- 事件触发器的几点变化
- libpq接口增强:修改密码、关闭资源、不阻塞取消查询、异步管道、Direct SSL等
这几个扩展接口功能也让人耳目一新:
- PostgreSQL 17开发调试特性|驱逐缓冲
- 钩子函数及自定义注入点:injection_points
- 事务号内燃卡路里:xid_wraparound
SELECT txid_current() ;
txid_current
-----------------
1346
(1 row)
SELECT consume_xids(100_000_000);
工具闪闪耀
- 更友好展示默认权限:默认权限"无法选中"?
- pg_dump增加文件过滤:可按白名单或黑名单对不同的对象过滤
- pg_restore增加事务控制、并行加速、文件过滤
- reindexdb支持多表多索引并行
- pg_createsubscriber转变物理从库为逻辑从库
该工具优势在于表初始数据copy超快,简化了高可用架构与大版本升级的管理负担,搭配pg_upgrade原地升级极佳。
运营及安全
有感而发篇
遗憾回退篇
ALTER TABLE ... ATTACH PARTITION ...
ALTER TABLE ... DETACH PARTITION ...
Oracle使用分区切割时,支持切割使用原分区名称,17 Beta3测试切割分区时也兼容这个细节:
ALTER TABLE sales SPLIT PARTITION sales_maximize INTO (
PARTITION sales_20240731
FOR VALUES FROM (date'2024-05-11') TO (date'2024-08-01'),
PARTITION sales_maximize
FOR VALUES FROM (date'2024-08-01') TO (MAXVALUE)
);
评论与总结
感谢PG社区全球的开发者, 让我们可以享受大象带来的快乐!
如果用传说品质来形容Oracle数据库(23AI确实震撼),而PG数据库可堪称史诗级巨作,每年的版本新特性都是法师们用灵力浇灌的契约之作,即便最后一刻被回退,依然会再次重塑归来。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




