我有一个 14.7 TB Postgres(9.1) 数据库,它必须长时间承受大量写入。我知道我需要密切管理我的事务 ID 以防止数据库锁定。最近我注意到查询速度变慢了,并且看到在我们的大型只读表上运行了多个自动清理,并带有“(防止回绕)”下标。我停止了正在运行的软件并执行了一个vacuumdb -F -a
命令。但是,当我运行时,select current_query from pg_stat_activity
我看到 autovacuum 进程仍在运行,即使在手动清理期间也是如此。我尝试杀死 autovacuumsselect pg_cancel_backend(pid)
并且他们死了,但然后立即重新启动。我的问题:
- autovacuum 是否应该在手动数据库清理期间继续运行?
- 如何有效地停止这些 autovacuum 进程?
- 为什么这些 autovacuums 会继续在只读表上运行?有什么可以吸尘的?