PostgreSQL 索引膨胀

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL 索引膨胀相关的知识,希望对你有一定的参考价值。

索引膨胀,主要针对B-tree而言

索引膨胀的几个来源:

大量删除发生后,导致索引页面稀疏,降低了索引的使用效率;

PG9.0之前的版本,vacuum full会同样导致索引页面稀疏;

长时间运行的事务,禁止vacuum对表的清理工作二导致页面稀疏状态一致保持。

注意REINDEX会造成全表锁,不要在系统繁忙的时候操作

查看索引占用的空间:

select pg_relation_size(oid)/1024/1024,relname from pg_class where relkind=’i’ order by pg_relation_size(oid) desc limit 20;

查看特定索引大小

select pg_relation_size(‘tbl_test_p1_pk’)/1024/1024;

重建特定索引

reindex index tbl_test_p1_pk;

更新数据库的统计信息

analyze tbl_test;

查看特定索引大小

select pg_relation_size(‘tbl_test_p1_pk’)/1024/1024;

 

以上是关于PostgreSQL 索引膨胀的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 14 Bottom-up index tuple deletion 大大减少btree索引膨胀

PostgreSQL 14 Bottom-up index tuple deletion 大大减少btree索引膨胀

乱序插入导致索引膨胀

查询以查找索引膨胀

PostgreSQL 中系统表 pg_attribute 膨胀现象

再谈PostgreSQL的膨胀和vacuum机制及最佳实践