返回 登录
5

PostgreSQL 10新特性落地准备

阅读5608

导语】近日,PostgreSQL 10新增多项新特性。核心贡献者之一Robert Haas参与了自8.4版本发布周期(2008-2009)以来的PostgresSQL项目,本文汇总梳理了他眼中此次PostgreSQL 10所做出的重大变更。

声明式分区

在此前的版本中,PostgreSQL仅支持表继承以模拟表分区,但是其设置复杂,且性能有失。而在PostgreSQL 10则支持使用专用语法进行列表或范围分区,同时,INSERT性能也得到大幅提升。

对此,Haas表示在性能提升以及缺失特性补足方面,未来还有很长的路要走,但PostgreSQL 10此项更新已经可谓打响了漂亮的一枪。

逻辑复制

PostgreSQL自9.0版本开始实现物理复制(通常称为流式传输复制),但这需要复制整个数据库,不能容忍任何形式的备用服务器上的写操作,且对于跨版本或跨数据库系统的复制无效。其后的9.4版本以来,实现了备受欢迎的逻辑解码,基本得到优化,但仍有局限。如今,PostgreSQL 10添加了容易配置的逻辑复制,并以表格粒度工作。其将复制初始数据,并保持数据更新。

并行查询改进

虽然PostgreSQL 9.6已实现了并行查询,但PostgreSQL 10中的这一功能得到了极大优化,包括并行位图堆扫描、并行索引扫描等新功能。并行查询通常可以实现2-4倍加速,这些增强功能得以继而为更多类查询提供加速。

SCRAM认证

PostgreSQL提供了各种不同的身份验证方法,包括Kerberos,SSPI和SSL证书认证等方法,这些方法都非常安全。但有些场景下,用户只想要使用PostgreSQL服务器本身管理的密码。PostgreSQL 10引入了scram认证,特别是SCRAM-SHA-256——安全性更高。

注意:除非使用libpq,否则只有当用户的特定客户端驱动程序已通过SCRAM支持进行更新,才能实现该功能。因此该性能更新若想要普及,还有一段等待时间。

执行器加速

PostgreSQL执行的重要部分已被重写,使表达和目标列表投影更快; 及时编译将在以后的版本中添加。

稳定的Hash索引

长期以来,PostgreSQL中的Hash索引都处于一个被忽视的状态,但这一问题在新版本中得到了显著改善,而其中最明显的一点变化在于v10中Hash索引的更改写入WAL。

ICU排序支持

在当前版本中,PostgreSQL完全依赖操作系统提供的排序,但这存在一定的局限性:排序规则因不同的操作系统而异,这一点在Linux和Windows之间尤为明显,很难找到跨操作系统匹配的排序规则。

更多其他特性汇总参见原文

Haas最后提出了一个PostgreSQL的“历史遗留问题”:

“很多用户误以为pg_xlog以及pg_clog目录为非关键数据,这可能是因为目录名称中包含“log”字符——现已重命名为表义更清晰的pg_walpg_xact。之前所有包含字符串“xlog”的SQL函数以及效用函数指代事务日志以及预写日志,现亦重新命名,以“wal”取代之。相反,default log更名为log而非pg_log,因此看起来并不像内部名称。上述变更可能会对部分用户的升级造成不便,但我们的初衷是希望借此帮助用户避免一些灾难性的错误。”

原文New Features Coming in PostgreSQL 10
作者:Robert Haas

评论