如何捕获客户端信号并在后端终止postgresql查询?

时间:2012-12-17 16:41:35

标签: postgresql signals

postgres客户端正在运行可能长时间运行的查询。客户端收到SIGTERM。理想情况下,我希望客户端捕获SIGTERM,通过发送pg_cancel_backend(pid)然后退出来清理其查询。

这似乎是客户端 - 服务器数据库架构的共同关注点,但我找不到任何解决方案。相反,查询将一直持续到完成,消耗不必要的资源。

客户端如何确定其后端查询的PID? (我不是指以交互方式查看后端查询并选择与发出的查询匹配的查询。)例如,PID是否与持久数据库连接相关联?

当按下ctrl-C时使用psql时这是如何工作的?

1 个答案:

答案 0 :(得分:1)

您可以使用pg_backend_pid()获取当前连接的PID

详情here