暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

致敬PostgreSQL 11退役 |巴音布鲁克永远的干!

多米爸比 2024-02-28
198

时隔5年,职业车手张弛在《飞驰人生2》最后一届巴音布鲁克拉力赛实现了当年未完成的梦。

PostgreSQL大版本的维护期也是5年,随着16.1, 15.5, 14.10, 13.13, 12.17小版本的发布,PG 11.22也落幕于红线之外。

abc.png

本文将与大家一同追忆与PG 11相关的几个主题。

专属书籍:精通PostgreSQL 11

国内最早一本介绍PG新特性的书籍,由武汉大学彭煜玮教授翻译,至今仍是经典。

aaaa.png

可配置的WAL:初始化可更改,亦可离线重构

PG里单个WAL文件的大小一直是16MB,在写密集型工作负载的场景下,PG 11可以在初始化时更改:

$ initdb --wal-segsize=64 -D $PGDATA

实例初始化时如果使用默认配置,还可以使用pg_resetwal工具来重新调整WAL:

$ pg_resetwal --wal-segsize=64 -D $PGDATA

索引增强:自动并行创建索引,表达式索引,覆盖索引

PG 11对索引也做了大量的改进,包括并行创建索引、表达式索引、覆盖索引:

  • 设置维护操作并行度参数max_parallel_maintenance_workers后,可并行创建B-Tree索引,利用多核特性可显著加快创建速度。
  • 基于表达式运算的虚拟列作为查询条件时,使用表达式索引可以创建更好的执行计划。
  • 通过include关键字来创建覆盖索引可以让更多场景可以使用index-only扫描。

表结构维护负担减轻:快速添加列

以下的两个示例中,添加列时如果带默认值,第二条语句在PG 10及更早版本中必须重写表

ALTER TABLE tab ADD COLUMN x int; ALTER TABLE tab ADD COLUMN y int DEFAULT 100;

PG 11可以在不重写整个表的情况下添加固定的默认值,这极大减轻了更改数据结构的负担。

数据块校验:pg_verify_checksums工具

使用pg_verify_checksums工具可以对备份数据检测数据块校验和,校验和检测可以对整个PGDATA进行操作,也可以对单个对象操作。

例如对单个对象进行检测,命令如下:

$ pg_verify_checksums -D $PGDATA -r 16409

后台维护操作:vacuum及analyze操作支持多个表

PG 11执行vacuum清理及analyze分析表支持同时指定多个表进行操作:

VACUUM tab1, tab2, ... ; ANALYZE tab1, tab2, ... ;

带事务控制的存储过程

PG 11以前没有存储过程,只有函数,而函数结构体的部分是一个单独的事务,而存储过程可以包含多个事务,现在可以兼容Oracle语法的存储过程。

窗口函数增强

PG一直是支持SQL标准最多的开源数据库,对窗口函数亦是如此,PG 11里完全支持SQL:2011标准Over子句的frame unit groups和frame exclusion,还有大量的窗口函数特性也值得我们去探索。

更多PG 11的特性可参考本人与PG分会合作出版的 快速掌握PostgreSQL版本新特性

最后借用电影里的一句台词:没办法啊,我就是喜欢PG。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论