内容提要
PostgreSQL 15于2022年10月发布,新增更安全的权限模型、性能提升、MERGE操作、逻辑复制改进、并行查询执行、JSON日志输出和新的正则表达式函数。建议用户升级以提高稳定性和修复错误。
延伸解读
权限模型变更的迁移注意事项
PostgreSQL 15 撤销了所有用户(除数据库所有者外)的 CREATE 权限,使权限分配更可调。对于已迁移的数据库,需手动撤销公共模式上的 CREATE 权限以符合新策略。此外,新增的 CREATE VIEW .. WITH (security_invoker=on) 选项可让视图使用调用者而非创建者的权限访问底层表,避免无权限用户通过视图查看数据。
性能提升的实际影响
排序操作在 PostgreSQL 中频繁使用,不仅出现在 ORDER BY 子句,还用于索引创建、表分区等。版本 15 将内存和磁盘排序速度提升至多 4 倍,并改进了窗口函数性能。这些提升对涉及大量排序或窗口函数的查询有显著帮助,是升级的重要理由之一。
逻辑复制与并行查询的增强
逻辑复制在版本 15 中支持两阶段提交,并允许选择部分表数据(如特定行和列)进行复制。遇到复制冲突时,用户可选择跳过冲突事务或禁用订阅以手动处理。并行查询方面,SELECT DISTINCT 查询可利用并行工作进程提升性能。这些改进增强了数据复制和查询执行的灵活性。
升级建议与稳定性考量
升级到 PostgreSQL 15 的主要原因是大量错误修复,这些修复可能涉及 ABI、接口函数和系统目录结构的修改,无法在已发布的大版本中应用。升级前需检查需要手动操作的特殊情况。由于新特性代码冻结与稳定发布之间有半年的稳定期,升级是安全的。自托管用户可使用 pg_upgrade 工具或官方推荐实践进行升级。
Q&A
PostgreSQL 15的新权限模型有什么变化?
PostgreSQL 15撤销了所有用户的CREATE权限,除了数据库所有者外,其他用户无法创建权限。
PostgreSQL 15的性能提升主要体现在什么方面?
排序操作速度提高至4倍,窗口函数性能也有所改善。
MERGE操作在PostgreSQL 15中有什么新功能?
MERGE操作允许根据提供的源数据修改目标表数据,支持条件处理选项。
PostgreSQL 15如何改进逻辑复制?
支持两阶段提交,并允许选择部分表数据进行逻辑复制。
PostgreSQL 15中新增了哪些正则表达式函数?
新增了regexp_substr()和regexp_count()等正则表达式函数。
为什么建议用户升级到PostgreSQL 15?
升级可以提高稳定性并修复错误,且每个新版本都包含大量的错误修复。