Autovacuum 的运行限制

简介:

本来想要查找autoanalyze 的相关资料,没想到找到的是 autovacuum的内容,但是这个内容很有用:

http://blog.gocept.com/2012/05/22/dont-stop-postgresqls-autovacuum-with-your-application/

其中最重要的就是下面一句话:

Vacuuming (whether automatic or manual) stops at the oldest transaction id that is still in use. Otherwise it would be vacuuming active transactions, which is not sensible at all. 

也就是说,如果有一个事务长时间运行,它会阻止autovacuum的运行:

vacuum只会删除 那些已经结束的事务所关联到的旧有的已经不用的数据。
如果一个事务还在运行,autovacuum就不会处理这个事务相关的数据了。

然后,如果一个事务长时间运行而没有结束,就会导致最终autovacuum停止在那里;
因为它可以作的都已作完了:它看到一个事务还在运行,那么这个事务及以后的事务所涉及到的肥大数据,都不会被处理。

BTW:这也太逊了吧,干嘛管事务ID大小啊,直接看哪个事务处理完毕,就把它的肥大数据拿掉多好啊,
        也许这是有待改进的地方,也许这是出于对事务处理整体折衷的考虑。

SELECT procpid, current_timestamp - xact_start AS xact_runtime, current_query
FROM pg_stat_activity ORDER BY xact_start;

 

另外一点:

http://postgresql.1045698.n5.nabble.com/Lock-problem-with-autovacuum-truncating-heap-td4265539.html

如果应用中大量使用了table lock,会导致autovacuum 没有什么机会执行。

 





本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3272524.html,如需转载请自行联系原作者


目录
相关文章
|
存储 安全 索引
vacuum freeze无法回收事务号问题分析
vacuum freeze报错问题分析
4263 0
|
10月前
|
固态存储 关系型数据库 开发者
PG13并行vacuum
PG13并行vacuum
95 0
|
10月前
|
关系型数据库 数据库
加速PG中vacuum
加速PG中vacuum
84 1
|
10月前
|
关系型数据库
PG的wal receiver进程如何启动
PG的wal receiver进程如何启动
80 0
|
10月前
|
存储 关系型数据库 测试技术
PG14新特性--恢复和VACUUM的加速
PG14新特性--恢复和VACUUM的加速
172 0
|
Oracle 关系型数据库 分布式数据库
vacuum 处理 | 学习笔记
快速学习 vacuum 处理
249 0
vacuum 处理 | 学习笔记
|
存储 算法 关系型数据库
PostgreSQL 垃圾回收参数优化之 - maintenance_work_mem , autovacuum_work_mem
PostgreSQL 垃圾回收参数优化之 - maintenance_work_mem , autovacuum_work_mem
3426 1
|
关系型数据库 数据库 PostgreSQL
pg 进程
BGW
97 0
|
存储 关系型数据库 Go
PostgreSQL 11 内核优化 - 降低vacuum cleanup阶段index scan概率 ( vacuum_cleanup_index_scale_factor , skip index vacuum cleanup stage)
PostgreSQL 11 内核优化 - 降低vacuum cleanup阶段index scan概率 ( vacuum_cleanup_index_scale_factor , skip index vacuum cleanup stage)
1224 0