2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 16 发布!

发布于 2023-09-14,作者:PostgreSQL Global Development Group
PostgreSQL 项目

2023 年 9 月 14 日 – PostgreSQL Global Development Group 今日宣布发布 PostgreSQL 16,这是世界上最先进的开源数据库的最新版本。

PostgreSQL 16 提升了其性能,在查询并行化、批量数据加载和逻辑复制方面取得了显著的改进。此次发布为开发人员和管理员带来了许多新功能,包括更多的 SQL/JSON 语法、用于监控工作负载的新监控统计信息,以及在定义访问控制规则以管理大型部署策略方面具有更大的灵活性。

PostgreSQL 核心团队成员 Dave Page 表示:“随着关系数据库模式的不断发展,PostgreSQL 在大规模搜索和管理数据方面持续提升性能。“PostgreSQL 16 为用户提供了更多扩展和横向扩展工作负载的方法,同时为他们提供了新的方法来获取洞察并优化数据管理方式。”

PostgreSQL 是一种创新的数据管理系统,以其可靠性和健壮性而闻名,它受益于全球开发社区 25 年多的开源开发,并已成为各种规模的组织首选的开源关系数据库。

性能改进

PostgreSQL 16 通过新的查询规划器优化来提高现有 PostgreSQL 功能的性能。在此最新版本中,查询规划器可以并行化 FULLRIGHT 连接,为使用带 DISTINCTORDER BY 子句的 聚合函数 的查询生成更优化的计划,利用增量排序进行 SELECT DISTINCT 查询,并优化 窗口函数 以使其执行更高效。它还改进了 RIGHTOUTER “反连接”,使用户能够识别未在连接表中出现的行。

此版本包括在使用 COPY 进行单次和并发操作的批量加载方面的改进,测试显示在某些情况下性能提高了高达 300%。PostgreSQL 16 增加了对使用 libpq 的客户端中 负载均衡 的支持,并改进了 vacuum 策略,减少了全表冻结的必要性。此外,PostgreSQL 16 在 x86 和 ARM 架构中引入了使用 SIMD 的 CPU 加速,从而在处理 ASCII 和 JSON 字符串以及执行数组和子事务搜索时提高了性能。

逻辑复制

逻辑复制允许用户将数据流式传输到其他可以解释 PostgreSQL 逻辑复制协议的 PostgreSQL 实例或订阅服务器。在 PostgreSQL 16 中,用户可以从备用实例进行逻辑复制,这意味着备用实例可以向其他服务器发布逻辑更改。这为开发人员提供了新的工作负载分发选项,例如,使用备用服务器而不是更繁忙的主服务器将更改逻辑复制到下游系统。

此外,PostgreSQL 16 在逻辑复制方面也有几项性能改进。订阅服务器现在可以使用并行工作进程应用大型事务。对于没有 主键 的表,订阅服务器可以使用 B-tree 索引而不是顺序扫描来查找行。在某些情况下,用户还可以使用二进制格式加速初始表同步。

PostgreSQL 16 中的逻辑复制有几项访问控制改进,包括新的 预定义角色 pg_create_subscription,它授予用户创建新逻辑订阅的能力。最后,此版本开始支持双向逻辑复制,引入了在两个来自不同发布者的表之间复制数据的功能。

开发者体验

PostgreSQL 16 增加了对 SQL/JSON 标准的更多语法支持,包括构造函数和谓词,如 JSON_ARRAY()JSON_ARRAYAGG()IS JSON。此版本还引入了使用下划线作为千位分隔符(例如 5_432_000)以及支持非十进制整数文字(例如 0x15380o124700b1010100111000)的能力。

使用 PostgreSQL 16 的开发人员还可以受益于 psql 中的新命令。这包括 \bind,它允许用户准备参数化查询并使用 \bind 替换变量(例如 SELECT $1::int + $2::int \bind 1 2 \g)。

PostgreSQL 16 改进了对 文本排序规则 的通用支持,这些排序规则提供了文本排序的规则。PostgreSQL 16 默认使用 ICU 支持进行构建,从环境中确定默认的 ICU 区域设置,并允许用户定义自定义 ICU 排序规则。

监控

调整数据库工作负载性能的一个关键方面是了解 I/O 操作对系统的影响。PostgreSQL 16 引入了 pg_stat_io,这是一个用于精细分析 I/O 访问模式的关键 I/O 指标的新来源。

此外,此版本向 pg_stat_all_tables 视图添加了一个新字段,该字段记录了表或索引上次扫描的时间戳。PostgreSQL 16 还使 auto_explain 更易于阅读,通过记录传递给参数化语句的值,并提高了 pg_stat_statementspg_stat_activity 使用的查询跟踪算法的准确性。

访问控制与安全

PostgreSQL 16 提供了更细粒度的访问控制选项,并增强了其他安全功能。该版本改进了对 pg_hba.confpg_ident.conf 文件的管理,包括允许对用户名和数据库名称使用正则表达式匹配,以及对外部配置文件使用 include 指令。

此版本添加了几个面向安全的客户端连接参数,包括 require_auth,它允许客户端指定它们愿意从服务器接受的身份验证参数,以及 sslrootcert="system",它指示 PostgreSQL 应使用客户端操作系统提供的受信任证书颁发机构 (CA) 存储。此外,该版本还增加了对 Kerberos 凭据委派的支持,允许 postgres_fdwdblink 等扩展使用已认证的凭据连接到受信任的服务。

关于 PostgreSQL

PostgreSQL 是世界上最先进的开源数据库,拥有由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 建立在加州大学伯克利分校 35 年多的工程开发基础上,并以无与伦比的发展速度持续进步。PostgreSQL 成熟的功能集不仅可以与顶级专有数据库系统相媲美,而且在高级数据库功能、可扩展性、安全性和稳定性方面还超越了它们。

链接