2018-05-24,PostgreSQL全球开发组宣布PostgreSQL 11的第一个Beta版本正式提供下载。这个版本包含将来PostgreSQL 11正式版本中的所有特性和功能,当然一些功能的细节在正式版本发布时可能会有些变化。
按PostgreSQL开源社区的精神,我们鼓励大家在用户的环境下测试新功能,以帮助我们消除Bug或是其他可能存在的问题。当然我们不建议大家在生产环境使用PostgreSQL 11 Beta1版本,我们鼓励在用户特定的工作负载下测试这个版本。
PostgreSQL 11版本的主要特性集中于性能、对大数据集的处理以及易用性上。
PostgreSQL 11版本包含几项与分区表中数据相关的改进,包括:
PostgreSQL 11版本中也引入了可以分发聚合操作至分区表,然后再进行最后聚合的查询。这个功能缺省是关闭的,用户需要修改配置文件或是在会话、事务中设置 enable_partitionwise_aggregate = on 才能打开这个功能。
PostgreSQL 11版本中增加了几个新的特性来充分利用并行查询架构,来达到大幅提升性能的结果,新特性包括:
PostgreSQL 11版本中引入了可以在使用嵌套事务(如BEGIN、COMMIT/ROLLBACK等指令)的存储过程。这种过程的创建使用CREATE PROCEDURE指令,调用时使用CALL指令。
PostgreSQL 11版本引入了对JIT(实时编译)的支持来优化代码的执行和系统运行时的其他操作。通过对LLVM项目中的组件的使用,PostgreSQL中引入对JIT的支持加速了一些使用到表达式(如WHERE条件)、列表、聚合、投影等查询以及一些内部操作的性能。
PostgreSQL中的JIT框架是设计用于允许以后的功能优化。如果用户是使用源码编译的方式安装PostgreSQL11,可以使用--with-llvm选项打开JIT的编译。
在PostgreSQL 11版本中,窗口函数现在支持SQL:2011标准的所有选项,包括RANGE _distance_ PRECEDING/FOLLOWING, GROUPS 模式,以及frame排除选项。
在PostgreSQL的上一版本中引入了SCRAM的认证,通过使用一个标准协议来提升密码的存储和传输的安全性。PostgreSQL11版本中引入了为SCRAM认证的通道绑定功能,新功能提升了使用SCRAM的安全性,阻止了类似“中间人”攻击的发生。
PostgreSQL全球开发组也认识到,PostgreSQL现在已有了一整套稳定强大的特性集,但并不是所有的特性都易于使用,需要对开发环境和生产环境的使用场景,都有必要开展一些变通和调整工作。
在PostgreSQL 11以前的版本中,有一个类似这样的特性,即ALTER TABLE .. ADD COLUMN 指令来新增一个列,并让其带有一下非NULL的缺省值,在以前版本中,执行这样的指令,PostgreSQL会重写整个表,这对一些在用的系统并且该表含有大量数据时,这样可能会引起一些性能问题。PostgreSQL 11版本移除了在大多数情况下重写表的需要,因此在执行类似ALTER TABLE .. ADD COLUMN .. DEFAULT .. 指令时会执行得非常快。
另外一小点是用户退出PostgreSQL命令行(psql)的操作感觉上的不愉快。有不少记录是用户报怨是用户想退出psql时使用quit或是exit,结果发现只能使用\q才可以。
我们感觉到了用户的郁闷,为此也增加了使用关键字quit和exit来退出psql环境的功能。希望现在退出PostgreSQL命令行环境是一个轻松的体验了。
许多其他的新特性和改进也加入了PostgreSQL 11,部分内容对一些特定的用户也许比上面提及的改进更重要。请参阅 发布声明详稿 来浏览完整的全部新特性或是改进功能列表。
每一个PostgreSQL版本的稳定性都依赖于广大用户和社区使用自己的工作负载和测试工具来发现Bug及进行回归测试。由于这还是一个Beta版本,数据库操作的方式、新特性的细节以及API可能都还会有小的修改。用户的反馈和测试将帮助我们决定对新特性的最终优化,所以请在近期就进行测试。用户测试的质量将帮助我们决定何时可以发布最终版本。
在PostgreSQL的Wiki上有一个仍在处理中问题列表。用户也可以使用PostgreSQL网站上的如下表格上报Bug: https://www.postgresql.org/account/submitbug/
这是11版本的第一个Beta测试版本,PostgreSQL项目组还会根据测试情况发布更多测试版本,然后会发布一个或多个备选RC版本,准备在2018年底发布正式版本。更多信息请参考我们的测试信息页面。