Toggle navigation
PostgreSQL中文社区
首页
(current)
社区新闻
中文文档
加入ACE
相关资料
了解PostgreSQL
PostgreSQL相关文档
PostgreSQL软件下载
PostgreSQL中文图书
社区年会PPT资料
关于中文社区
注册
登录
所有版本列表
首页
新版本发布声明
PostgreSQL 12 Beta 1版本发布说明
翻译:
doudou586
... 新闻稿采编:
2019-05-25 20:25:23+08
软件发布:2019-05-23
2019-05-23,PostgreSQL全球开发组宣布PostgreSQL 12的第一个Beta版本正式提供下载。这个版本包含将来PostgreSQL 12正式版本中的所有特性和功能,当然一些功能的细节在正式版本发布时可能会有些变化。 按PostgreSQL开源社区的精神,我们鼓励大家在用户的场景下测试新功能,以帮助我们消除Bug或是其他可能存在的问题。当然我们不建议大家在生产环境使用PostgreSQL 12 Beta1版本,我们鼓励在用户特定的工作负载下测试这个版本。 用户的测试将帮助社区来确保PostgreSQL 12版本保持我们一贯以来的标准,即提供稳定、可靠的世界上功能最为强大的开源的关系数据库系统。 POSTGRESQL 12版本主要特性 --------------------------------- ### 索引性能、函数和管理 PostgreSQL 12提升了标准B树索引的总体性能,同时也改进了这些索引的存储空间管理,这些改进不仅减小了这一类经常被更新的索引的大小,也提升了系统的总体性能。 另外,PostgreSQL 12版本增加了并发重建索引的功能,这样可以在不影响新的索引写入的前提下让用户执行`REINDEX`操作。新功能有助于用户在管理生产环境的服务器时,可以实现不停机对较大索引的重建。 PostgreSQL 12 版本也扩展了几种特定的索引机制。例如,自PostgreSQL 11版本引入的`INCLUDE`选项创建的包含索引,现在也扩展至GiST索引。SP-GiST索引现在支持对数据类型中含有`<->`距离操作的K-NN(即相邻最近)查询。 现在生成GiST、GIN或SP-GiST索引的WAL日志的负载也显著减少了,这对PostgreSQL服务器的磁盘利用和类似连续归档以及流复制都有很多的好处。 ### 内置 WITH 查询 (公共表达式功能) 公共表达式 (也称之为`WITH`查询)在新版本中只需满足以下条件,就可以自动内置在一个查询中了: 1. 不是递归查询; 2. 没有任何副作用; 3. 在后续的查询中只引用一次; 上述条件都符合后,系统就可以将自PostgreSQL 8.4版本以来对`WITH`查询的“优化限制栅栏”取消,以实现上述功能。 如有必要,用户也可以使用以下方式,强制让`WITH` 查询物化保存,使用 `MATERIALIZED` 选项,例如: ``` WITH c AS MATERIALIZED ( SELECT * FROM a WHERE a.x % 4 = 0 ) SELECT * FROM c JOIN d ON d.y = a.x; ``` ### 分区表 PostgreSQL 12版本通过优化分区表的操作,是其只影响少量的分区,提升了系统在处理有上千个分区的表操作性能。 PostgreSQL 12版本也改进了`INSERT` 和 `COPY`操作分区表的性能。 `ATTACH PARTITION` 操作分区表,现在也可以不阻塞并发查询。另外,新版本中也允许使用外键来引用分区表。 ### 符合SQL/JSON 规范的JSON路径查询 PostgreSQL 12 版本现在允许符合SQL:2016标准的SQL/JSON规范来执行[JSON路径查询](https://www.postgresql.org/docs/devel/functions-json.html#FUNCTIONS-SQLJSON-PATH) 。与XML标准中的XPath表达式类似,JSON路径表达式不仅比较JSON列的值,还可以评估算术表达式和函数的各种组合结果。 通过使用GIN索引,可以加速这些表达式的子集的查询,以实现跨多组JSON数据集的高性能查询。 ### 排序 PostgreSQL 12现在支持按ICU提供的排序规则,即支持大小写不敏感或是重音不敏感的排序方法,也称为[“非确定性排序”](https://www.postgresql.org/docs/devel/collation.html#COLLATION-NONDETERMINISTIC) 。在使用时,这些排序方法可以对比较和排序提供方便,但因需对字符串进行额外检查,也会有一点性能上的损失。 ### 最常用值的扩展统计信息 `CREATE STATISTICS`指令在PostgreSQL 10版本引入系统,来帮助收集多列中的更复杂的统计信息,以提升查询规划。新版本中现在支持最常用值的统计信息,这样可以提升非均匀性分布负载的查询规划。 ### 计算列 PostgreSQL 12允许创建根据其他列的值通过一个表达式来生成指定列的功能。该特性现在提供保存计算列的功能,并且是在插入或是更新记录时,系统进行计算,然后保存至磁盘。而虚拟计算列功能,即在查询时进行计算,目前还没有实现。 ### 可插拨的表存取接口 PostgreSQL 12版本中引入了可插拨的表存取接口,来允许表的取在创建和使用时使用不同的存取方式。 新的存取方式可以通过`CREATE ACCESS METHOD` 指令加入系统,此后在`CREATE TABLE`创建表时使用`USING`选项即可生效,详见: https://www.postgresql.org/docs/devel/tableam.html 在PostgreSQL 12版本中,缺省使用的存取接口是`heap`存取方式,目前也是唯一的内置方式。 ### 页面的校验 `pg_verify_checkums` 指令已更名为`pg_checksums` ,现在支持对停机的PostgreSQL服务器开启或是停用页校验。而以前版本中该操作仅允许在 `initdb`的阶段来执行。 ### 认证和连接安全性 通过在`pg_hba.conf`配置文件中指定 `hostgssenc`和`hostnogssenc`的记录类型,GSSAPI现在支持客户端和服务端的加密。PostgreSQL 12版本现在如在编译时增加了OpenLDAP选项,通过内部的`DNS SRV`的参数,也可以搜索LDAP服务器。 ### 系统较大的变更点 在新的PostgreSQL 12版本中引入了几处较大的变更,这些变更会影响用户的日常操作或是系统管理,主要变更见以下列表,其他详细的变更内容请参见发布文档中“迁移至12版本”章节内容: https://www.postgresql.org/docs/devel/release-12.html 1. `recovery.conf` 配置文件现在合并至`postgresql.conf` 文件中了。 PostgreSQL如在启动时检测到`recovery.conf`文件存在时,将不会启动。在将PostgreSQL设置为非宿主模式时,用户可以使用`recovery.signal` 和`standby.signal` 文件。 用户也可以浏览以下页面来了解更多有关备份恢复的操作: https://www.postgresql.org/docs/devel/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY 2. JIT 即时编译现在是缺省启用的。 3. 新版本中OID不会加入用户创建的表,即使用户创建表时使用了`WITH OIDs` 选项。 因此以后用户使用上述选项创建表的操作需要变更了。 而在执行`SELECT *`操作查询一个系统内部表时仍会输出OID字段,而以前的版本中是必须明确要求输出OID字段时才会显示这个字段。 ### 其他的特性功能 许多其他的新特性和改进也加入了PostgreSQL 12,部分内容对一些特定的用户也许比上面提及的改进更重要。请参阅 [发布声明详稿](https://www.postgresql.org/docs/devel/release-12.html) 来浏览完整的全部新特性或是改进功能列表。 ### Bug和兼容性的测试 每一个PostgreSQL版本的稳定性都依赖于社区中的广大用户,来使用自己的工作负载和测试工具来发现Bug及进行回归测试。由于这还是一个Beta版本,数据库操作的方式、新特性的细节以及API可能都还会有小的修改。用户的反馈和测试将帮助我们决定对新特性的最终优化,所以请在近期就进行测试。用户测试的质量将帮助我们决定何时可以发布最终版本。 目前仍待解决的问题在PostgreSQL的WIKI页面上有一个[列表](https://wiki.postgresql.org/wiki/PostgreSQL_12_Open_Items)。用户可以通过 以下网址来报告Bug: https://www.postgresql.org/account/submitbug/ ### BETA发布安排 这是12版本的第一个Beta测试版本,PostgreSQL项目组还会根据测试情况发布更多测试版本,然后会发布一个或多个备选RC版本,准备在2019年底发布正式版本。更多信息请参考我们的测试信息页面:https://www.postgresql.org/developer/beta/ ### 相关链接 - [下载链接](https://www.postgresql.org/download/) - [Beta测试信息](https://www.postgresql.org/developer/beta/) - [PostgreSQL 12版本发布声明详稿](https://www.postgresql.org/docs/devel/release-12.html) - [PostgreSQL 12待处理问题](https://wiki.postgresql.org/wiki/PostgreSQL_12_Open_Items) - [提交Bug](https://www.postgresql.org/account/submitbug/)
© 2010 PostgreSQL中文社区