跳转至

POSTGRESQL 14 特性

JSON便捷操作与多范围

自PostgreSQL 9.2发布以来,PostgreSQL一直支持操作JSON数据,尽管值的检索使用了独特的语法。PostgreSQL 14现在允许您使用下标访问JSON数据,例如,类似于 SELECT (‘{ “postgres”: { “release”: 14 }}’::jsonb)[‘postgres’][‘release’]; 的查询现在可以正常工作。这使PostgreSQL与从JSON数据中检索信息常用的语法保持一致。PostgreSQL 14增加的下标框架可以通用扩展到其他嵌套数据结构,并且也应用于此版本的hstore数据类型。

范围类型,也是在PostgreSQL 9.2中首次发布,现在通过引入”多范围”数据类型来支持非连续范围。多范围是一个有序的,非重叠的范围列表,这让开发人员可以为处理复杂范围序列编写更简单的查询。PostgreSQL原生的范围类型(日期,时间,数字)支持多范围,其他数据类型也可以扩展使用多范围支持。

对大工作负载的性能提升

PostgreSQL 14在使用许多连接的工作负载上提供了显著的吞吐量提升,一些基准测试显示速度提升了2倍。此版本继续对B-tree索引的管理进行了最近的改进,通过减少在经常更新索引的表上的索引膨胀。

PostgreSQL 14引入了向数据库管道查询的能力,这可以显著提高高延迟连接或许多小型写入(INSERT/UPDATE/DELETE)操作的工作负载的性能。由于这是一个客户端特性,你可以使用管道模式与任何现代的PostgreSQL数据库以及版本14的客户端或使用libpq的版本14构建的客户端驱动程序。

分布式工作负载的增强

使用逻辑复制时,分布式PostgreSQL数据库将从PostgreSQL 14中受益。PostgreSQL现在可以将进行中的事务流式传输到订阅者,这对于在订阅者上应用大事务带来了显著的性能优势。PostgreSQL 14还对支持逻辑复制的逻辑解码系统进行了几项性能改进。

用于在PostgreSQL和其他数据库之间处理联合工作负载的外部数据包装器现在可以在PostgreSQL 14中利用查询并行性。此版本在postgres_fdw中实现了此功能,postgres_fdw是与其他PostgreSQL数据库接口的外部数据包装器。

除了支持查询并行性外,postgres_fdw现在还可以在外部表上批量插入数据,并使用IMPORT FOREIGN SCHEMA指令导入表分区。

管理和可观察性

PostgreSQL 14将其性能提升扩展到了清理系统,包括用于减少B-Trees的开销的优化。此版本还添加了一个清理”紧急模式”,旨在防止事务ID环绕。用于收集数据库统计信息的ANALYZE,由于其自身的性能改进,现在在PostgreSQL 14中运行得更快。

对于PostgreSQL的TOAST系统,它用于存储较大的数据,如文本块或几何图形,现在可以进行配置。PostgreSQL 14在保留对pglz压缩的支持的同时为TOAST列添加了LZ4压缩。

PostgreSQL 14添加了几个新特性以帮助监控和可观察性,包括跟踪COPY命令的进度,预写日志(WAL)活动,和复制插槽的统计信息。启用compute_query_id可以让你通过几个PostgreSQL特性唯一跟踪一个查询,包括pg_stat_activity,EXPLAIN VERBOSE,等等。

SQL性能,一致性,和便捷性

查询计划和执行受益于PostgreSQL 14的增强。此版本包括了对PostgreSQL查询并行性支持的几个改进,包括并行顺序扫描的性能提升,使PL/pgSQL在使用RETURN QUERY命令时执行并行查询,以及使REFRESH MATERIALIZED VIEW执行并行查询的能力。此外,使用嵌套循环连接的查询可能会通过PostgreSQL 14添加的额外缓存看到性能好处。

现在可以在PostgreSQL 14中使用扩展的统计信息。此外,窗口函数现在可以受益于增量排序,这是一个在PostgreSQL 13中引入的特性。

存储过程,它允许在一段代码中控制事务,现在可以通过使用OUT参数返回数据。

PostgreSQL 14引入了使用date_bin函数将时间戳”分箱”,或对齐到特定间隔的能力。此版本还添加了符合SQL的SEARCH和CYCLE子句,以帮助排序和递归公共表达式的循环检测。

安全增强

PostgreSQL 14通过使用pg_read_all_data和pg_write_all_data预定义角色,方便地为用户分配对表、视图和模式的只读和只写权限。

此外,该版本现在将符合标准的SCRAM-SHA-256密码管理和身份验证系统设置为新的PostgreSQL实例的默认值

原文:

https://www.postgresql.org/about/news/postgresql-14-released-2318/