我让我的 vacuumdb 运行,但不小心我用 statement_timeout = 0 参数多次启动它,所以我担心这可能需要很多时间才能完成。
我的问题是,我可以安全地终止真空进程还是在服务器运行时重新启动服务器?
xxx=# select pid, backend_start, query_start, state_change, state, query from pg_stat_activity where application_name = 'vacuumdb' OR query like '%reload%';
pid | backend_start | query_start | state_change | state | query
-------+-------------------------------+-------------------------------+-------------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------------------------
1273 | 2017-03-25 13:18:48.355737+03 | 2017-03-25 13:18:56.318492+03 | 2017-03-25 13:18:56.319311+03 | idle | select pg_reload_conf();
32102 | 2017-03-25 13:14:26.737586+03 | 2017-03-25 13:14:26.74256+03 | 2017-03-25 13:14:26.742566+03 | active | VACUUM (FULL, VERBOSE, ANALYZE) xxx; +
| | | | |
2693 | 2017-03-25 13:22:44.275979+03 | 2017-03-25 13:46:48.168615+03 | 2017-03-25 13:46:48.168625+03 | active | select pid, backend_start, query_start, state_change, state, query from pg_stat_activity where application_name = 'vacuumdb' OR query like '%reload%';
31746 | 2017-03-25 13:13:07.173855+03 | 2017-03-25 13:13:07.178614+03 | 2017-03-25 13:13:07.178621+03 | active | VACUUM (FULL, VERBOSE, ANALYZE) xxx; +
| | | | |
16923 | 2017-03-25 12:28:31.537226+03 | 2017-03-25 12:28:31.543027+03 | 2017-03-25 12:28:31.543032+03 | active | VACUUM (FULL, VERBOSE, ANALYZE) xxx; +
| | | | |
(5 rows)
在
运行 vacuum
的情况下重新启动 postgres 是 100% 安全的。VACUUM
、VACUUM (FULL)
、CLUSTER
等都是如此。
它甚至不必在开始时完全重新启动工作,它可以在重新启动之前完成一些工作。