PostgreSQL 垃圾版本引入的索引扫描性能下降诊断

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

PostgreSQL 垃圾版本引入的索引扫描性能下降诊断

德哥 2018-04-18 19:02:52 浏览1448
展开阅读全文

标签

PostgreSQL , 索引 , 多版本 , 垃圾版本 , pageinspect


背景

首先介绍几个背景知识,由于这些背景知识的存在,所以在某些情况下索引扫描的性能可能会出现一些问题或抖动。

导致性能下降,CPU开销增加,应用程序访问产生更多的连接等连锁反应。

1、当记录被删除,更新时,PostgreSQL目前的存储引擎会在原HEAP PAGE中保留老的记录版本,如果是UPDATE会写入一条新版本。

2、表上索引也会产生一个新的版本。

3、另一方面,PostgreSQL索引中没有包含版本信息,无法辨识该索引对应记录的可见性,PostgreSQL又引入了一个VM文件(标记每个HEAP PAGE是否所有记录对所有事务可见),从而实现INDEX ONLY SCAN。

4、普通的index scan,需要访问INDEX ITEM对应HEAP T

网友评论

登录后评论
0/500
评论
德哥
+ 关注
所属云栖号: 阿里云数据库ApsaraDB