PostgreSQL 13

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 背景         PostgreSQL 全球开发组于2020年9月24日宣布PostgreSQL 13正式发布,作为世界上最先进的开源数据库,PostgresSQL 13是目前的最新版本。         阿里云是中国地区第一家支持PostgreSQL 13的云厂商,在 RDS 和 专属集群 两条产品线都提供了

背景

        PostgreSQL 全球开发组于2020年9月24日宣布PostgreSQL 13正式发布,作为世界上最先进的开源数据库,PostgresSQL 13是目前的最新版本。

        阿里云是中国地区第一家支持PostgreSQL 13的云厂商,在 RDS 和 专属集群 两条产品线都提供了版本13的售卖,云数据库服务采用统一的数据库内核(简称AliPG),为客户提供了更稳定、更安全和更高性能的数据库服务。

        PostgreSQL 13在索引和检索方面进行了重大改进,有利于大型数据库系统的应用,同时带来了空间的节省和性能的提高,使用聚合或分区的查询能得到更快得响应,使用增强的统计信息使查询计划更加优化,以及很多其他改进。PostgreSQL 13除了具有强烈要求的功能(如并行清理和增量排序)外,还提供了更好的数据库管理体验。同时PostgreSQL 13针对日常管理进行了优化,为应用程序开发人员提供了更多便利,并增强了安全性。

 

 

新特性

逻辑复制支持分区表

        PostgreSQL 从版本10开始支持逻辑复制,在版本12前逻辑复制仅支持普通表,不支持分区表,如果需要对分区表进行逻辑复制,需单独对所有分区进行逻辑复制。PostgreSQL 13 版本开始,逻辑复制新增了对分区表的支持,具体包括:1. 可以显式地发布分区表,自动发布所有分区;2. 从分区表中添加或删除分区将自动从发布中添加或删除。

 

Btree索引优化

        PostgreSQL 13 版本的Btree索引在存储层面引入了一个重要的技术:Deduplication,是指索引项去重技术,因此有效地处理标准数据库索引B-tree中的重复数据,继而降低了B-tree索引所需的总体使用空间,同时提高了整体查询性能。索引的Deduplication选项默认是开启的,如果想关闭指定索引的Deduplication,需要设置存储参数deduplicate_items为off。

 

增量排序

        PostgreSQL 13 版本的一个重要特性是支持增量排序(Incremental Sorting),查询中来自较早步骤的已排序数据可以加快后续步骤的排序。方法是通过enable_incrementalsort参数控制是否开启增量排序,此参数默认开启。

 

并行VACUUM索引

        PostgreSQL 13 版本允许VACUUM并行处理表的索引,方法是通过PARALLEL参数控制是否开启并行vacuum索引。

 

并行Reindexdb

        reindexdb命令用于重建一个或多个库中表的索引,可以是schema级索引重建,也可以是database级索引重建。reindexdb是REINDEX INDEX命令的的封装,两者在本质上没有区别。PostgreSQL 13 版本前reindexdb不支持并行选项,13 版本此命令新增 -j 选项,支持全库并行索引重建。

 

wal_keep_size

        PostgreSQL 13 版本将 wal_keep_segments 重新定义为 wal_keep_size,决定了为备库保留的WAL量。版本13采用字节大小表示,不再采用保留文件的个数,可通过下述公式换算:wal_keep_size = wal_keep_segments * wal_segment_size。

 

其他

        允许 EXPLAIN、auto_explain、autovacuum、pg_stat_statements 跟踪WAL使用情况统计信息

        受益于B树中重复数据的优化,更加的节省空间提升效率

        索引和检索方面进行了重大改进,有利于大型数据库系统

        优化了聚合及分区表的性能

        优化了使用额外数据时的查询计划

        更多类型的聚合和分组、高效哈希聚合功能

 

 

迁移

        PostgreSQL 社区每年会发布一个大版本,每个大版本社区支持5年,大版本通常会带来功能、性能方面的革命性提升,一个版本使用5年后,由于社区不再提供支持,数据库风险将逐渐增加,因此国内的 PostgreSQL 大客户都有非常完善的大版本升级策略和方法。PostgreSQL 支持 pg_dumpall、pg_upgrade 和逻辑复制的方式从低版本升级至13。

        阿里云RDS数据库团队提供了 RDS-PostgreSQL 的大版本升级能力,目前支持从 10、11、12 不同版本的源实例升级到 11、12、13,为老版本用户体验新版本特性提供了便利,可以做到零宕机平滑升级。同时支持割接模式和非割接模式两种模式,非割接模式相当于克隆高版本实例,可用于验证和测试,割接模式自动切换连接串到高版本。基于云盘快照复制数据并进行升级,相比于逻辑复制节省数据迁移时间。

        PostgreSQL 13 以下特性可能会影响数据库的一致性,升级需要谨慎评估:

  • 将 IMILAR TO ... ESCAPE NULL 改为返回空值
  • json[b]_to_tsvector() 将会对字符类型做完整的拼写检查
  • 改变 effective_io_concurrency 非默认值影响并发的方式
  • 不在 pg_stat_ssl 和 pg_stat_gssapi 两张表中显示辅助进程
  • 重命名一些等待时间来保持一致性
  • 修复 ALTER FOREIGN TABLE ... RENAME COLUMN 返回一个更合适的命令符
  • 将 wal_keep_segments 重命名为 wal_keep_size
  • 移除 PG8.0 之前对于operator classes定义的语法的支持
  • 移除 PG7.3 之前对于foreign key constraints、pseudo-types定义的语法支持
  • 移除对于unpackaged 插件的支持
  • 移除对于posixrules文件的支持
  • 升级对于ltree的推断方式
  • 修复 pageinspect 的 bt_metap()函数

 

 

关于

        PostgreSQL是世界上最先进的开源数据库,它的全球社区由成千上万的用户、开发人员、公司或其他组织组成。PostgreSQL起源于加利福尼亚大学伯克利分校,已经有30多年的历史,并且以无与伦比的开发速度继续发展。PostgreSQL的成熟功能不仅与顶级商业数据库系统匹配,而且在高级数据库功能、可扩展性、安全性和稳定性方面都超越了它们。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5月前
|
SQL 关系型数据库 数据库
PostgreSQL|认识PostgreSQL
【7月更文挑战第1天】
|
2月前
|
存储 JSON 关系型数据库
PostgreSQL介绍
【10月更文挑战第11天】
|
3月前
|
关系型数据库 Linux 数据库
PostgreSQL
PostgreSQL
70 2
|
4月前
|
SQL 关系型数据库 数据库
在 PostgreSQL 中使用 LIKE
【8月更文挑战第12天】
682 1
|
4月前
|
JSON 关系型数据库 数据库
PostgreSQL
【8月更文挑战第6天】
47 2
|
4月前
|
SQL 存储 关系型数据库
PostgreSQL的介绍
【8月更文挑战第4天】PostgreSQL的介绍
65 0
|
存储 关系型数据库 数据库连接
PostgreSQL很多优秀的书籍
PostgreSQL很多优秀的书籍
863 1
|
关系型数据库 大数据 数据库
PostgreSQL 11 小记
## 关于 PostgreSQL [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) 是世界上最先进的开源数据库。 PostgreSQL 最早可追溯到 1973 年,当时加州大学伯克利分校的两位科学家,[Michael Stonebraker](https://en.
5605 0
|
SQL Oracle 关系型数据库