2012-12-17 51 views
1

postgres客戶端正在運行一個可能長時間運行的查詢。客戶收到一個SIGTERM。理想情況下,我希望客戶端捕獲SIGTERM,通過發送pg_cancel_backend(pid)來清除查詢,然後退出。如何捕獲客戶端信號並在後端終止postgresql查詢?

這似乎是客戶端 - 服務器數據庫體系結構常見的問題,但我找不到任何解決方案。相反,查詢將繼續直到完成,消耗不必要的資源。

客戶端如何確定後端查詢的PID? (我並不是指交互式地查看後端查詢並選擇看起來與發出的查詢相匹配的查詢。)例如,是否有與持久數據庫連接關聯的PID?

按下ctrl-C時如何使用psql時如何工作?

回答

1

您可以使用pg_backend_pid()獲取當前連接的PID

詳情here

+0

只有9.2允許用戶取消自己的呼叫。早期版本需要以超級用戶的方式建立新連接。 –