阅读 160

PostgreSQL 12 Beta 1 版本新特性预览

PostgreSQL 12 Beta 1 版本新特性预览

编程之家收集整理的这篇文章主要介绍了PostgreSQL 12 Beta 1 版本新特性预览,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。




文章目录


    • 索引相关的性能、功能和管理

    • 内联 WITH 查询(通用表表达式)

    • 分区增强

    • 遵循 SQL/JSON 规范的 JSON 路径查询

    • 排序规则

    • 最频繁值统计

    • 计算列

    • 可插拔式表存储接口

    • 页面校验和

    • 认证与连接安全

    • 变更注意事项


2019-05-23 Postgresql 全球开发组发布消息称,Postgresql 12 第一个 beta 版提供下载测试。这个版本包含了 Postgresql 12 正式版中的所有特性预览,不过某些细节可能存在变数。最终的 Postgresql 12 正式版将会在 2019 年下半年发布。

随之发布的包括 Postgresql 12 最新特性,以下是其中一部分。

索引相关的性能、功能和管理

Postgresql 12 改进了标准 B-树索引的整体性能以及索引的磁盘空间管理。这些改进还减少了频繁修改的B-树索引占用的空间大小。

此外,Postgresql 12 新增了并发重建索引的功能,使得执行REINDEX操作时不会阻塞索引的写入。这一特性可以解决生产环境中长时间的索引重建导致的停机问题。

Postgresql 12 扩展了某些特殊索引的功能。Postgresql 11 引入了覆盖索引,即INCLUDE子句,现在该功能可以支持 GiST 索引。SP-GiST 索引现在针对支持距离操作(<->)的数据类型提供了K-近邻(K-NN)查询功能。

Postgresql 12 明显减少了创建 GiST、GIN 或者 SP-GiST 索引产生的预写式日志(WAL),为 Postgresql 集群的磁盘利用率和其他特性(例如连续归档和流复制)带来了诸多改进。

内联 WITH 查询(通用表表达式)

通用表表达式(即WITH查询)如果满足以下所有条件,将会被自动内联到查询语句中:

  1. 非递归

  2. 无副作用

  3. 只被引用一次

这一特性消除了自 Postgresql 8.4 引入WITH子句以来一直存在的优化障碍(optimization fence)。

如果有需要,你还可以使用MATERIALIZED子句强制WITH查询物化,例如:

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 还提高了分区表的INSERTCOPY操作的性能。ATTACH PARTITION现在不会阻塞分区表上的并发查询。另外, Postgresql 12 支持引用分区表的外键。

遵循 sql/JSON 规范的 JSON 路径查询

Postgresql 12 支持 sql:2016 标准中 sql/JSON 规定的 JSON 路径查询。与 XML 查询中的 XPath 表达式类似,JSON 路径表达式使得查询 JSON 文档时,除了可以使用值进行比较之外,还可以使用各种算术表达式和函数。

某些表达式可以用于提供 GIN 索引的性能,实现跨 JSON 数据集的高性能查找。

排序规则

Postgresql 12 支持 ICU 排序规则的大小写不敏感(case-insensitive)和重音不敏感(accent-insensitive)的比较方式,即“不确定性排序规则”。使用这些方式时,可以为比较和排序操作提供便捷,但是也可能导致性能下降,因为需要对字符串执行额外的检查。

最频繁值统计

Postgresql 10 引入了 CREATE STATISTICS,用于收集多个字段上的复杂统计信息,以便改进查询计划。现在,该语句支持最频繁值统计。这一功能改进了非均匀分布值上的查询计划。

计算列

Postgresql 12 支持创建计算列(generated columns),也就是基于其他列计算出该列的值。该特性目前支持存储计算列(stored generated columns),即在插入和更新时进行计算并且将结果保存到磁盘上。不过,暂时还没有实现虚拟计算列(virtual generated columns),也就是在查询执行时直接计算出该列的值。

可插拔式表存储接口

Postgresql 12 引入了可插拔式的表存储接口,运行创建和使用不同的表存储方式。这一特性类似于 MysqL 的插件式存储引擎。可以通过 CREATE ACCESS METHOD 命令添为 Postgresql 集群添加新的访问方法,然后在创建表的CREATE TABLE语句中使用新的USING子句为其指定访问方法。

通过创建一个新的表访问方法可以定义一个表存储接口。

在 Postgresql 12 中,默认使用的存储接口为 heap 访问方法,这也是目前唯一内置的访问方法。

页面校验和

pg_verify_checkums命令被重命名为 pg_checksums,并且支持启用和禁用离线 Postgresql 集群的页面校验和功能。在此之前,页面校验和只能在使用 initdb 初始化集群时被启用。

@L_403_27@认证与连接安全

GSSAPI 支持客户端和服务器的加密,可以在文件 pg_hba.conf 中使用 记录类型 hostgssenc 和 hostnogssenc 进行配置。如果使用了 OpenLDAP 编译选项,Postgresql 12 还支持基于 DNS SRV 记录的 LDAP 服务器发现功能。

变更注意事项

Postgresql 12 引入的某些变更可能会影响现有系统的的行为。下面给出了一些这种变更;更多的信息可以参考发行说明中的“迁移到 Postgresql 12”。

  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

  1. 即时编译(JIT)功能默认被启用Just-in-Time (JIT) 。

  2. 用户使用WITH OIDs子句创建的表中不再添加 OID 字段。针对这些使用WITH OIDS创建的字段(即名为“OID”的字段)上执行的操作需要进行调整

针对系统表执行的SELECT *命令现在会显示 OID 信息,而不需要像之前一样明确指定该字段的名称。

除此之外,Postgresql 12 还提供了许多重要的新特性和增强功能,完整的新特性列表可以参考 PostgreSQL 12 发行说明。

总结

以上是编程之家为你收集整理的PostgreSQL 12 Beta 1 版本新特性预览全部内容,希望文章能够帮你解决PostgreSQL 12 Beta 1 版本新特性预览所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐