帕维尔·卢扎诺夫:PostgreSQL 18:第3部分或2024年11月提交节

帕维尔·卢扎诺夫:PostgreSQL 18:第3部分或2024年11月提交节

💡 原文英文,约2300词,阅读约需9分钟。
📝

内容提要

PostgreSQL 18 更新包括默认启用数据校验和、查询优化、临时表处理改进、增量排序和逻辑解码组件检查。新版本提升了性能和错误处理能力,支持非确定性排序和 TLS 1.3 加密套件。

🎯

关键要点

  • PostgreSQL 18 默认启用数据校验和,使用 --data-checksums 选项不再必要。

  • 查询优化:PostgreSQL 18 能够识别并优化包含多个 OR 条件的查询。

  • GROUP BY 和 DISTINCT 的优化:查询计划能够根据索引顺序重排表达式。

  • HAVING 条件在扫描表行时进行检查,提高了查询效率。

  • 临时表的使用需谨慎,PostgreSQL 18 优化了系统目录缓存的更新。

  • 增量排序功能在合并连接中得到应用,提升了性能。

  • 新增 array_reverse 函数,返回数组元素的反向顺序。

  • bytea 数据类型的 min 和 max 函数已实现。

  • pg_stat_statements 和 pg_stat_database 视图新增并行工作者统计列。

  • pg_ls_summariesdir 函数用于增量备份监控,显示 pg_wal/summaries 的内容。

  • pg_logicalsnapinspect 模块用于检查逻辑解码组件的内容。

  • 扩展安装错误信息在 PostgreSQL 18 中得到了显著改善。

  • pg_index 现在有了 TOAST 表,适用于表达式索引。

  • COPY 和 file_fdw 现在支持 REJECT_LIMIT 选项,允许指定错误行数限制。

  • 支持非确定性排序的字符串比较,LIKE 操作现已支持。

  • 新增 ssl_tls13_ciphers 参数,定义用于 TLS 1.3 的加密套件列表。

🔎

延伸解读

数据校验和的默认启用

PostgreSQL 18 版本中,数据校验和的默认启用简化了数据库初始化过程。用户无需再手动添加 --data-checksums 选项,这降低了出错的可能性,提升了数据安全性。对于不需要校验和的用户,可以使用 --no-data-checksums 选项来关闭此功能。

查询优化的提升

新版本中,PostgreSQL 18 对查询优化进行了显著改进,尤其是在处理多个 OR 条件时,能够自动识别并优化查询。这意味着开发者在使用 ORM 框架时,能够享受到更高效的查询性能,而无需手动重写 SQL 语句。

临时表的使用注意事项

虽然 PostgreSQL 18 对临时表的性能进行了优化,但仍需谨慎使用。临时表的创建和删除会影响系统目录缓存,可能导致性能下降。因此,在高并发场景下,建议评估临时表的使用频率和必要性,以避免潜在的性能瓶颈。

增量排序的应用

PostgreSQL 18 引入的增量排序功能在合并连接中得到了应用,允许在部分已排序的数据集上进行增量排序。这一改进可以显著提升查询性能,尤其是在处理大数据集时,开发者应关注这一新特性,以优化复杂查询的执行效率。

延伸问答

PostgreSQL 18 的数据校验和功能有什么变化?

PostgreSQL 18 默认启用数据校验和,使用 --data-checksums 选项不再必要。

PostgreSQL 18 如何优化查询性能?

PostgreSQL 18 能够识别并优化包含多个 OR 条件的查询,提高查询效率。

临时表在 PostgreSQL 18 中的使用注意事项是什么?

临时表的使用需谨慎,因为创建临时表会导致系统目录缓存的更新,可能造成性能问题。

PostgreSQL 18 新增了哪些函数?

新增了 array_reverse 函数和 bytea 数据类型的 min 和 max 函数。

PostgreSQL 18 中的增量排序功能有什么改进?

增量排序功能在合并连接中得到应用,允许在外部集合已经部分排序的情况下进行增量排序。

PostgreSQL 18 如何处理逻辑解码组件?

新增的 pg_logicalsnapinspect 模块用于检查逻辑解码组件的内容,便于调试和研究逻辑复制。

🏷️

标签

➡️

继续阅读