PostgreSQL 16 发布!

发布于 2023-09-14,作者:PostgreSQL 全球开发小组
PostgreSQL 项目

2023 年 9 月 14 日 - PostgreSQL 全球开发小组今天宣布发布 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 树索引而不是顺序扫描来查找行。在某些情况下,用户还可以使用二进制格式加快初始表同步。

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 成熟的功能集不仅可以与顶级专有数据库系统相媲美,而且在高级数据库功能、可扩展性、安全性和稳定性方面都超越了它们。

链接