【问题标题】:Cannot kill a Postgres query无法终止 Postgres 查询
【发布时间】:2015-12-16 06:23:26
【问题描述】:

所以,这是我遇到过几次的问题——我会不小心从一个巨大的数据库中执行 SELECT *。通常,我只是进去,获取查询的 pid (SELECT * FROM pg_stat_activity),然后执行 SELECT pg_cancel_backend(PID here),瞧,它就结束了。但有时——尤其是最终会产生大量行的查询——它只是返回:

db=# select pg_cancel_backend(5246);
 pg_cancel_backend
-------------------
 t
(1 row)

...查询继续存在!我如何杀死这些东西??

【问题讨论】:

  • 如果你在 Unix 上,你可能需要kill -9 <pid>。每隔一段时间我就会得到其中一个。
  • 你当然可以杀死 -9 后端,但这应该是绝对的最后手段,因为它最终会破坏数据库。如果发生这种情况,在将事务日志前滚到最后一个好点时,可能需要很长时间才能重新启动。

标签: postgresql


【解决方案1】:

我会尝试 pg_terminate_backend(pid);

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    相关资源
    最近更新 更多