PostgreSQL 13 新特性

作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net

大家好!我是只谈技术不剪发的 Tony 老师。今天给大家带来一个关于 PostgreSQL 的最新消息。

PostgreSQL 全球开发组于 2020-05-21 宣布了 PostgreSQL 13 的第一个 beta 版本,目前已经提供了下载。虽然细节可能会有所改变,但是该版本包含了 PostgreSQL 13 最终正式版中的所有新特性的预览,让我们赶紧一睹为快吧!
功能性

PostgreSQL 13 增加了许多改进性能的新特性,同时使得应用程序的开发更加容易。

    改进了 B 树索引中重复数据的处理,减少了索引的大小并且提高了查找速度,尤其是当索引中包含重复值的时候。
    增加了增量排序功能,可以加速基于已经排序的中间结果集的排序操作。
    包含 OR 子句或者 IN/ANY 常量列表的查询可以利用扩展统计(通过 CREATE STATISTICS 语句创建)可以获得更好的执行计划和性能。
    可以使用磁盘实现大型数据集的哈希聚合(作为聚合查询的一部分)。
    分区功能的持续改进,包括更多场景下的分区表直接连接查询,从而提高总体的查询性能。
    分区表支持 BEFORE 行级触发器,并且支持分区表的整体逻辑复制,不需要单独发布和订阅每个分区。
    实现了更多的 SQL 查询功能,例如 FETCH FIRST WITH TIES,可以返回更多满足条件的数据。
    为 jsonpath 查询增加了 .datetime() 函数,自动将日期或者时间字符串转换为合适的 PostgreSQL 日期/时间数据类型。
    更加方便的随机 UUID,内置函数 gen_random_uuid() 不再需要安装额外的扩展插件。

管理性

    VACUUM 命令支持索引的并行处理,这也是 PostgreSQL 13 最令人期待的特性之一。通过 VACUUM 命令的新选项 PARALLEL 或者 vacuumdb --parallel 可以指定清理索引时的并发工作进程。注意,该选项不兼容 FULL 选项。
    reindexdb 命令增加了 --jobs 选项,用于指定重新索引时的并发线程数量。
    引入了“可信插件”的概念,允许 superuser 指定某个插件可以被用户安装到自己的数据库中,只要他们拥有 CREATE 权限即可;
    支持更多的数据库监控方式:允许追踪 WAL 使用统计、流复制基础备份的进度以及 ANALYZE 命令的执行进度。pg_basebackup 可以生成一个描述清单,用于验证备份的完整性(通过一个新的工具 pg_verifybackup)。允许限制为复制槽(replication slots)保留的 WAL 空间。
    pg_dump 支持新的选项,--include-foreign-data,用于导出 FDW 外部服务器中的数据。
    pg_rewind 命令的增强。除了自动故障恢复之外,pg_rewind 也可以通过 --write-recovery-conf 选项配置 PostgreSQL 备用实例。另外,pg_rewind 还可以使用目标实例的 restore_command 获取所需的预写日志。

安全性

PostgreSQL 继续改进了安全相关的功能,引入了 PostgreSQL 安全部署相关的特性:

    psql 和许多 PostgreSQL 连接驱动所使用的 libpq 连接库引入了几个新的安全参数。增加了 channel_binding 连接参数,允许客户端使用 SCRAM 的通道绑定功能。另外,客户端还可以使用 sslpassword 参数指定密码,通过密码保护的 TLS 进行认证。PostgreSQL 13 还增加了 DER 加密认证。
    PostgreSQL 外部数据封装器(postgres_fdw)增强了安全连接功能,包括使用基于认证的授权连接到其他 PostgreSQL 服务器。另外, 非特权用户可以通过 postgres_fdw 不提供密码连接到其他 PostgreSQL 数据库。

其他增强

    PostgreSQL 13 改进了 Windows 系统上的操作系,运行 PostgreSQL 的 Window 用户可以使用 UNIX 域套接字进行连接。
    PostgreSQL 13 文档增加了术语汇编(glossary),可以帮助用户熟悉 PostgreSQL 和通用的数据库概念。与此同时,表格中的函数和运算符展示也进行了重大的重新编排,改进了网页和 PDF 文档的可读性。
    用于性能测试的 pgbench 工具可以支持 accounts 表的分区,使得包含分区表的性能测试更加简单。
    psql 支持 \warn 命令,功能类似于输出数据的 \echo 命令,区别在于 \warn 的结果打印到 stderr。另外,--help 选项包含了一个指向 https://www.postgresql.org 的链接。

更多特性

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

我们会在后续文章中针对这些新特性具体进行介绍和分析