低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Postgres 10 开发者新特性

2017 年 12 月 27 日

目前非常流行的 RDBMS PostgresSQL 已经在几周前发布了它的第10 个版本。由于Postgres 的可靠性、节约成本、成熟,当然还有它的开源,已经21 岁的Postgres 在开发者之中仍旧非常流行。

Postgres 10 带来了一些新特性,其中一些特性另开发者感到十分兴奋。 10Clouds 博客中详细介绍了其中的一些特性。通过消除主表(master table)中触发器(trigger)的需求,本地分区(native partitioning)现在变得更简单了。这意味着创建分区表将变得更简单,并且从开发者的角度来看,现在从分区数据表中进行查询和插入与在非分区的数据表进行这些操作是完全一致的。

多列统计(multicolumn statistics)是Postgres 10 的另一项改进。通过把来自不同列的数据关联起来,查询规划器(query planner)现在可以避免一些边缘情况,在那些边缘情况下,之前的Postgres 版本会认为 WHERE 语句更强的选择性,并且会导致选择了错误计划从而拖慢执行时间。Postgres 的这个改进在整个SQL 世界中都是极具创新性的。

Postgres 10 还对并行性进行了改进。开发者现在可以使用索引扫描(index scans)和仅索引扫描(index-only scans)、并行合并连接(merge joint)以及位图堆扫描。并行查询是通过不同的workers 来实现的,因此在某些情况下,设置和分解的成本会超过并行化的好处。默认情况下,可以在大于8MB 大小的表以及大于512KB 的索引上启用并行表扫描(parallel table scan),但是这些选项可以根据需要进行配置。

Postgres 10 另一个重要的新特性是支持 JSON 和 JSONB 类型列的全文搜索。一旦我们创建了一个特定语言的全文索引,我们就可以通过JSON 字段对值进行直接搜索。在JSON 列上的全文索引与其他列是类似的,因此我们的查询需要使用to_tsquery 函数和to_tsvector 函数的文本搜索的语法。

标识列(Identity columns)和自增列(Auto-increment columns)也是Postgres 10 进行改进的一个地方。新的实现方法会有一点冗长,但是它是符合SQL 标准的,使得在不同数据库之间的迁移会更加容易。最重要的是,使用Postgres 10 时,我们在从一个不同的id 重启时,不再需要修改序列(alter sequences)了,但是我们可以对这一列进行修改(alter),Postgres 就会将这一列识别为一个序列,这样操作会简化我们数据库中的日常操作。

正如我们预料到的那样,Postgres 10 存在一些不向后兼容的改动。对浮点时间戳的支持已经被抛弃了,对于低于版本8 的 pg_dump 也已经不再提供支持,有关复制(replication)和pg_basebackup 工具的一些默认值也有所变化。版本编号由三部分改为了两部分,同时开发者的脚本不能直接运行,而是使用类似于 server_version_num 这种查询,它返回的是一致的的可排序的和可比较的(sortable and comparable)版本号。

查看英文原文: Postgres 10 Features for Developers

2017 年 12 月 27 日 18:001500

评论

发布
暂无评论
发现更多内容

依赖倒置及Cache重构设计

架构5班杨娟Jessie

极客大学架构师训练营

2020/6/16 架构学习心得

架构5班杨娟Jessie

极客大学架构师训练营

第二周作业

李海明

依赖倒置 接口隔离原则

week02 小结

Geek_196d0f

架构师训练营第二周感悟

张锐

极客大学架构师训练营

Week 02 学习总结 框架 设计原则

Z冰红茶

架构师训练营:第二周 作业

Bruce Xiong

架构师训练营第二周总结

olderwei

【架构师训练营】第2周作业

花生无翼

极客大学架构师训练营

第二周学习总结

赵龙

架构师实现自己架构目标工具手段-软件设计

WulalaOlala

极客大学架构师训练营

架构师训练营第二周作业

olderwei

极客大学架构师训练营

架构师训练营第二周作业

子豪sirius

第二周作业

赵龙

架构师训练营week2 学习小结

李锦

docker-mcr 助您全速下载 dotnet 镜像

newbe36524

Docker netcore

极客时间架构课 Week02- 作业一:命题作业

yulyulcl

架构师训练营第二周作业(1)

hiqian

重拾依赖倒置原则(训练营第二课)

看山是山

oop 极客大学架构师训练营 依赖倒置原则 DIP

week02 作业

Geek_196d0f

架构师训练营第二周作业

张锐

极客大学 极客大学架构师训练营

依赖倒置原则

Z冰红茶

手撕设计原则:接口隔离

已昏懒人

面向对象 架构师 面向对象设计 面向对象设计原则

SharePoint 往事之:使用Bootstrap定制SharePoint网站页面

手艺人杨柳

SharePoint

基于docker部署的Java应用jmx无法远程访问的问题

qihuajun

ElasticSearch原理解析

Chank

elasticsearch

架构师训练营第二周作业(2)

hiqian

北京疫情反弹 区块链怎样破解食品溯源难题?

CECBC区块链专委会

区块链技术 商品溯源 上链

面向对象设计原则课后作业

周冬辉

架构师训练营:第二周学习总结

Bruce Xiong

Spring中依赖倒置原则的理解

李广富

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Postgres 10开发者新特性-InfoQ