探索PostgreSQL 14版本:新特性与旧功能的对比

发表时间: 2021-05-24 16:10

再说PostgreSQL 14之前,先来带大家回复一下之前发布的各个版本和特性。

PostgreSQL 9.0 :支持64位windows系统,异步流数据复制、Hot Standby;

PostgreSQL 9.1 :支持数据同步复制,unlogged tabels、serializable snapshot isolation、FDW 外部表。

此版本后,PostgreSQL 开始得到中国多个行业用户的关注,开始有应用于电信、保险、制造业等边缘系统。

PostgreSQL 10:跳过到9.6版本,直接说10是在2017年5月18日发行的,新增了很多特性,其中重量级的特性如下:

  • 内置分区表( Native Table Partitioning)
  • 逻辑复制(Logical Replication)
  • 并行功能增强(Enhancement of Parallel Query)
  • Quorum Commit for Synchronous Replication
  • 全文检索支持JSON和JSONB数据类型

PostgreSQL 11:

分区增强

支持哈希分区。

支持分区表上的主键、外键、索引以及触发器。

支持创建默认分区,用于存储不属于其他任何分区的数据。

更新分区键值得UPDATE语句可以将受影响的行移动到相应的新分区中。

增强了查询语句处理和执行时的分区裁剪(分区排除),进而提高了SELECT查询语句的性能。

支持智能分区连接(partition-wise join)和智能分区聚合(partition-wise aggregation)。

并行执行

并行创建 B-tree 索引。

并行执行的CREATE TABLE … AS、CREATE MATERIALIZED VIEW以及特定的UNION查询。

更好的并行哈希连接和并行顺序扫描。

存储过程,支持嵌入事务。

即时编译(JIT),支持表达式的快速求值。

窗口函数,支持 SQL:2011 标准中的所有窗口范围(window frame)选项,包括RANGE distance PRECEDING/FOLLOWING、GROUPS模式以及窗口排除选项。

覆盖索引(covering index),支持使用CREATE INDEX … INCLUDE创建覆盖索引。

许多其他性能改进,包括快速执行带非空默认值的ALTER TABLE … ADD COLUMN语句。

PostgreSQL 12:

支持 SQL/JSON path

支持 Generated Columns

CTE 支持 Inlined With Queries

新增 Pluggable Table Storage Interface

分区表性能大幅提升

在线重建索引(Reindex Concurrently)

PostgreSQL 13:

只说一些大模块,13版本对索引和查找系统有了很大的改进,大型数据库非常受用,减少了空间提高了索引的性能。

并且新增了数据管理体验,为了日常管理进行了优化,为应用程序开发人员提供了便利。

PostgreSQL 14

PostgreSQL 14这个版本对大量的数据库链接时的事务吞吐量有了很大的改进,不光是事务在活动状态,在空闲状态也包括在内。

PostgreSQL 14减少了B-树索引的资源消耗,包括频繁更新索引导致的表膨胀。Gist索引可以在构建过程中预先排序数据,可以更快地创建而且减少索引大小。SP-GIST支持覆盖索引,可以使用INCLUDE子句索引增加不可搜索的额外字段。

PostgreSQL 14增加了许多并行查询功能,出了对并行熟悉顺序扫码的整体性能提升之外,PL/pgSQL 中的 RETURN QUERY 指定现在可以并行执行,REFRESH MATERIALIZED VIEW 命令也可以使用并行查询。PostgreSQL 14 还增加了使用 FDW 查询远程数据库时的并行执行功能。对于 PostgreSQL 外部数据封装器 postgres_fdw,当设置了 async_capable 标识时可以使用并行查询。postgres_fdw 还支持批量插入,使用 IMPORT FOREIGN SCHEMA 命令导入表分区,以及外部表上的 TRUNCATE 命令。

该版本还改进了分区系统,包括更新或删除数据行影响很少分区时的性能提升。PostgreSQL 14 可以使用 ALTER TABLE … DETACH PARTITION … CONCURRENTLY 命令以非阻塞的方式卸载分区。

上个版本引入的增量排序功能在 PostgreSQL 14 中可以用于窗口函数。该版本增强了扩展统计的范围,可以支持表达式的扩展统计。

几十年来,PostgreSQL 一直支持“超大字段”的压缩存储(TOAST 技术),新版本增加了使用 LZ4 算法压缩字段的功能。

除了以上内容,还新增了大量新功能一部分功能的改进,完整的新特性列表大家可以参考官方的发行说明。