2015-12-15 93 views
2

所以,這是一個我有過幾次的問題 - 我會無意中在一個巨大的數據庫中執行SELECT *操作。通常,我只需進入,獲取查詢的pid(SELECT * FROM pg_stat_activity),然後執行SELECT pg_cancel_backend(此處爲PID),然後結束。但有時 - 尤其是查詢,最終將產生行的荒唐數字 - 它只是返回此:無法殺死Postgres查詢

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

...和查詢的生命!我如何殺死這些東西?

+0

如果你在Unix上,你可能需要'kill -9 '。每過一段時間,我都會得到其中的一個。 – Hambone

+1

你當然可以殺死後端,但這應該是絕對的最後手段,因爲它最終會破壞數據庫。如果發生這種情況,可能需要很長時間才能重新啓動,同時將事務日誌轉移到最後一個優點。 – alzee

回答

0

我會嘗試pg_terminate_backend(pid);