2023年9月14日 - PostgreSQL 全球开发集团宣布发布 PostgreSQL 16,这是世界上最先进的开源数据库的最新版本。
PostgreSQL 16提高了性能,在查询并行性、批量数据加载和逻辑复制方面有显着改进。此版本为开发人员和管理员提供了许多功能,包括更多 SQL/JSON 语法、针对工作负载的新监控统计数据,以及定义访问控制规则以管理大型队列策略的更大灵活性。

PostgreSQL 核心团队成员 Dave Page 表示:“随着关系数据库模式的发展,PostgreSQL 在大规模搜索和管理数据方面不断提高性能。” “PostgreSQL 16 为用户提供了更多方法来扩展和横向扩展其工作负载,同时为他们提供了获得见解和优化数据管理方式的新方法。”
PostgreSQL 是一种以其可靠性和稳健性而闻名的创新数据管理系统,受益于全球开发者社区超过 25 年的开源开发,已成为各种规模组织的首选开源关系数据库。
性能改进
PostgreSQL 16 通过新的查询规划器优化提高了现有 PostgreSQL 功能的性能。在这个最新版本中, 查询计划程序可以并行化 FULL和RIGHT 联接,为使用 带有or子句的聚合函数的查询生成更好的优化计划,利用增量排序进行 查询,并优化 窗口函数 ,以便更有效地执行。它还改进了 “反连接”,使用户能够识别连接表中不存在的行。DISTINCTORDER BYSELECT DISTINCTRIGHTOUTER
此版本包括对 COPY单个操作和并发操作中使用的批量加载的改进,测试显示在某些情况下性能提高了 300%。 PostgreSQL 16 添加了对使用 的客户端中的负载平衡的支持 libpq,并改进了真空策略,减少了全表冻结的必要性。此外,PostgreSQL 16 引入了SIMD在 x86 和 ARM 架构中使用的 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)和非十进制整数文字(例如0x1538、0o12470和 )的功能0b1010100111000。
使用 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.conf该 版本改进了文件的管理 pg_ident.conf ,包括允许用户和数据库名称的正则表达式匹配以及include外部配置文件的指令。
此版本添加了几个面向安全的客户端连接参数,包括require_auth,它允许客户端指定他们愿意从服务器接受哪些身份验证参数,以及 sslrootcert="system",它指示 PostgreSQL 应使用客户端提供的受信任的证书颁发机构 (CA) 存储。操作系统。此外,该版本还增加了对 Kerberos 凭据委托的支持,允许诸如 postgres_fdw和 之类的扩展dblink使用经过身份验证的凭据连接到受信任的服务。
关于 PostgreSQL
PostgreSQL是世界上最先进的开源数据库,拥有由数千名用户、贡献者、公司和组织组成的全球社区。PostgreSQL 从加州大学伯克利分校开始,以超过 35 年的工程经验为基础,继续以无与伦比的发展速度。PostgreSQL成熟的功能集不仅可以匹配顶级专有数据库系统,而且在高级数据库功能、可扩展性、安全性和稳定性方面超越它们。
链接
- 下载:https://www.postgresql.org/download/
- 发行说明:https://www.modb.pro/db/1702515846962827264




