1
在PostgreSQL中取消(AUTO)VACUUM进程是否会使所有工作无效?
在某些场合,并作出巨大的后update,insert或delete从一个表,我已经开始了VACUUM FULL ANALYZE,以确保DB没有得到太臃肿。在生产数据库中进行操作使我发现这不是一个好主意,因为我可能会长时间阻塞该表。因此,我取消了此过程,可能只是尝试了一下VACUUM(未完成),或者AUTOVACUUM稍后再做任何可以做的事情。 问题是:如果我在中途停止VACUUM或AUTOVACUUM,是否已经完成所有处理? 例如,如果VACUUM已经找到1 M死行而我停止了,所有这些信息会丢失吗?VACUUM是否以完全事务性的方式工作(“全部或全部”,就像很多PostgreSQL进程一样)? 如果可以安全地中断VACUUM而不会丢失所有工作,那么有什么方法可以使vacuum工作逐步进行?[工作100毫秒,停止,等待10毫秒,以便不阻塞世界其他地方...依此类推]。我知道您可以通过调整自动真空参数来完成部分操作,但是我正在考虑能够以编程方式控制此操作,以便能够在特定时间/特定条件下执行此操作。 注意:在这种情况下,停止/取消/终止进程意味着: 如果使用pgAdmin,请按“取消查询”按钮。 如果以编程方式工作,请调用pg_cancel_backend()。 我认为两者是等效的。我还没有使用过任何shell /系统级的kill命令。