背景
不知道从何时开始,数据库空载时的性能消耗越来越高,当业务高峰期,CPU 和内存都处于高负载的情况下,观看 AWS 的监控,发现负载空载时占用很高。

并且占用较高的 Top5 分为为:
autovacuum: VACUUM ANALYZE pg_catalog.pg_attribute
autovacuum: VACUUM ANALYZE pg_catalog.pg_type
autovacuum: VACUUM ANALYZE pg_catalog.pg_depend
autovacuum: VACUUM ANALYZE pg_catalog.pg_class
autovacuum: VACUUM ANALYZE pg_catalog.pg_index
由上面的 Top5 可以得知,目前数据库的负载较高,都是由于 PgSql 系统表的 VACUUM 导致的,但是,为什么会出现这种情况呢?我们一起来慢慢解决这个问题吧!
问题排查
排查方向
VACUUM 是 PgSql 的一种垃圾回收机制,主要用于清理数据库中的不再需要的行(也称为“死亡行”或“dead tuples”),并且它回收这些行占用的空间。VACUUM操作还更新数据库的统计信息,这对于查询优化器来说非常重要。
如果 VACUUM 太慢,则有可能有以下几个原因:
- 大容量数据:如果数据库非常大,
VACUUM操作可能需要很长时间来完成,这会增加系统负载。 - 高事务量:在高事务量的系统中,频繁的更新、插入和删除操作会产生许多不再需要的行,导致
VACUUM工作量增加。 - 不频繁的清

最低0.47元/天 解锁文章
1012

被折叠的 条评论
为什么被折叠?



