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

postgresql 12 13 14 在索引上都进行了什么 (1 Btree index 优化 为什么要升级到PG12)


文章转载自公众号:AustinDatabases


PostgreSQL的版本升级一直很快,阿里云上的POSTGRESQL RDS已经支持到了14,那么在创建新的数据库到底应该选择哪个版本,不言而喻,PG14。


从索引上可以看看到底这几年PG 12 -- PG13 -- PG 14 他们都做了些什么改进,为什么PG是最高级的开源数据库。


First,INDEX对于数据库来说是一个核心的功能,从上世纪这个功能就存在并且一直是众多数据库快速查询的生命线。


对于POSTGRESQL本身来说索引的添加与维护与其他的数据库比较并不是一件简单的事情,MVCC在每个表中产生多个版本,让索引的维护也变得不哪里简单。索引本身也会有bloat的问题,占用更多的空间的问题等等,数据修改后,尤其大批量修改后索引的消耗问题应该被重视。


之前的索引在page页面的存储本身并不是有序存储的,这会造成两个问题


  1. index会在数据的插入中,由于数据存放的不顺序,导致数据从中间的页面进行分割,然后浪费页面存储的空间

  2. 页面不连续查询索引的效率低下


PG12 中将数据的物理地址ctid和索引存储在一起,成为索引的一部分,这样的好处


  1. 索引物理数据存储变得有序
  2. 索引的物理页面的分割不在从中间分割,而是最右端分割


好处也是显而易见,进行主键index scan速度会更快,同时节省了INDEX存储空间



PG11.7 测试结果 索引大小544MB



PG12.2



PG12 索引大小408MB,544-408=136MB 同样的功能和表,索引的大小减小了136MB.


查询速度,对比看同样查询索引命中的数据PG11比PG12慢了60%




打开两个表的索引内部的数据,可以查看PG12中的CTID中物理数据存储是有序的,PG11中的CTID中的数据存储是无序的。




同时使用RDS云的同学,虽然从11升级到12很方便,但升级后的索引的顺序方面不会有改变,需要对PG11升12的索引进行reindex.


参考文章:德哥关于pg12索引改善的文字

https://www.alibabacloud.com/blog/postgresql-12-b-tree-index-improvements-duplicate-key-and-sort-by-ctid_597615



预告 | 2021 PG亚洲大会12月与您相约
PG ACE计划的正式发布
三期PostgreSQL国际线上沙龙活动的举办
六期PostgreSQL国内线上沙龙活动的举办

中国PostgreSQL分会与腾讯云战略合作协议签订

中国PostgreSQL分会与美创科技战略合作协议签订
中国PostgreSQL分会与中软国际战略合作协议签订
中国PostgreSQL分会“走进”北京大学
中国PostgreSQL分会“走进”深圳大学
PGFans社区核心用户点亮计划

PostgreSQL 14.0 正式发布

深度报告:开源协议那些事儿

从“非主流”到“潮流”,开源早已值得拥有

Oracle中国正在进行新一轮裁员,传 N+6 补偿

PostgreSQL与MySQL版权比较

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

四年三冠,PostgreSQL再度荣获“年度数据库”

中国PostgreSQL分会入选工信部重点领域人才能力评价机构


更多新闻资讯行业动态技术热点,请关注中国PostgreSQL分会官方网站

https://www.postgresqlchina.com

中国PostgreSQL分会生态产品

https://www.pgfans.cn

中国PostgreSQL分会资源下载站

https://www.postgreshub.cn


点击此处阅读原文

↓↓↓

文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论