PostgreSQL 14 DBMS 发布

经过一年的开发,PostgreSQL 14 DBMS的新稳定分支已经发布,新分支的更新将在五年内发布,直到2026年XNUMX月。

主要创新:

  • 添加了对使用类似数组的表达式访问 JSON 数据的支持: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE 详细信息['attributes']['size'] = '"medium"';

    hstore 类型提供的键/值数据实现了类似的语法。 该语法最初是使用通用框架实现的,将来可能会用于其他类型。 hstore 类型示例:INSERT INTO mytable VALUES ('a=>b, c=>d'); 从 mytable 中选择 h['a']; UPDATE mytable SET h['c'] = 'new';

  • 用于定义范围的类型系列已通过新的“多范围”类型进行了扩展,该类型允许您指定非重叠值范围的有序列表。 除了现有的每个范围类型之外,还提出了自己的多范围类型,例如,类型“int4range”对应于“int4multirange”,类型“daterange”对应于“datemultirange”。 新类型的使用简化了操作复杂范围序列的查询的设计。 选择 '{[3,7), [8,9)}'::int4multirange; 选择 nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • 已进行优化以提高处理大量连接的高负载系统的性能。 在某些测试中,观察到性能提高了一倍。
  • 提高了B树索引的效率,解决了表频繁更新时索引增长的问题。
  • 添加了对请求的管道传输的客户端(在 libpq 级别实现)模式的支持,该模式允许您通过发送下一个请求无需等待上一个请求的结果。 该模式还有助于加快数据包传输延迟较长的连接的工作速度。
  • 涉及多个 PostgreSQL 服务器的分布式配置的增强功能。 在逻辑复制的实现中,现在可以以流方式发送正在执行的事务,这可以显着提高大事务的复制性能。 此外,还优化了逻辑复制期间接收到的数据的逻辑解码。
  • 连接外部表的机制Foreign Data Wrapper (postgres_fdw)增加了对并行查询处理的支持,目前仅适用于连接到其他PostgreSQL服务器时。 postgres_fdw 还添加了对以批处理模式向外部表添加数据的支持,以及通过指定“IMPORT FOREIGN SCHEMA”指令导入分区表的功能。
  • 对 VACUUM 操作(磁盘存储的垃圾收集和打包)的实现进行了优化。 添加了紧急清理模式,如果创建了事务 ID 环绕条件,该模式会跳过非必要的清理操作。 减少处理 B 树格式索引时的开销。 收集有关数据库操作的统计信息的“ANALYZE”操作的执行速度已显着加快。
  • 添加了配置 TOAST 系统中使用的压缩方法的功能,该系统负责存储大数据,例如文本块或几何信息。 除了pglz压缩方法之外,TOAST现在还可以使用LZ4算法。
  • 用于监控 DBMS 运行的工具已得到扩展。 添加了视图来跟踪 COPY 命令的进度 (pg_stat_progress_copy)、有关复制槽的统计信息 (pg_stat_replication_slots) 以及与 WAL 事务日志相关的活动 (pg_stat_wal)。 添加了compute_query_id函数,它使各种子系统(例如pg_stat_activity和EXPLAIN VERBOSE)能够通过为每个请求分配唯一标识符来跟踪请求。
  • 查询规划器中添加了优化,以改进查询的并行处理,并提高同时执行顺序记录扫描操作、使用“RETURN QUERY”命令并行执行 PL/pgSQL 中的查询以及“并行执行”中的查询的性能。刷新物化视图”。 为了提高循环嵌套合并(连接)的性能,已经实现了对附加缓存的支持。
  • 现在可以使用高级统计来优化表达式,并且现在可以使用增量排序来优化窗口函数。
  • 允许您管理代码块中的事务的存储过程现在支持使用“OUT”参数指定返回数据。
  • 添加了 date_bin 函数以根据指定的间隔对时间戳值进行舍入。 SELECT date_bin('15 分钟', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • 添加了 SQL 标准中定义的 SEARCH 和 CYCLE 表达式,以便更轻松地排序和识别递归公用表表达式 (CTE) 中的循环。 WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) 首先搜索深度 id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • 在 psql 实用程序中,带有制表符的命令的自动完成功能已得到改进,显示函数参数的功能已添加到“\df”命令,并且显示的统计信息已扩展到“\dX”命令。
  • 可以为用户分配只读或只写权限。 可以使用 pg_read_all_data 和 pg_write_all_data 预定义角色在各个表、视图和模式上设置权限。 将 pg_read_all_data 授予 user1;
  • 新安装默认使用 SCRAM-SHA-256 而不是 md5 进行密码身份验证(生成 postgresql.conf 时的“password_encryption”参数现在设置为“scram-sha-256”)。

来源: opennet.ru

添加评论