使用以下三個SQL語句來取消正在運作的查詢并終止連接配接
(1)查出活動連接配接清單及其程序ID
<code>select</code> <code>* </code><code>from</code> <code>pg_stat_activity;</code>
(2)取消連接配接上的活動查詢
<code>select</code> <code>pg_cancel_backend(procid);</code>
該操作不會終止連接配接本身
(3)終止該連接配接
<code>select</code> <code>pg_terminate_backend(procid);</code>
如果你未停止某個連接配接上正在執行的語句就直接終止該連接配接,那麼這些語句此時也會被停止掉。在上述步驟2執行完畢後,用戶端應用的挂起狀态被解除,即用戶端可以重新執行語句,有些着急的使用者會在此時再次執行剛剛被終止掉的語句,這又會導緻系統陷入之前的狀态。為了避免此種情況的發生,可以采用直接
終止連接配接的方式。
如果你希望一次性終止某個使用者的所有連接配接,那麼在9.2版及之後的版本上可以執行以下語句:
<code> </code><code>select</code> <code>pg_terminate_backend(pid) </code><code>from</code> <code>pg_stat_activity </code><code>where</code> <code>username=</code><code>'some_role'</code><code>;</code>
在9.2版之前的版本上可以執行以下語句:
<code> </code><code>select</code> <code>pg_terminate_backend(procpid) </code><code>from</code> <code>pg_stat_activity </code><code>where</code> <code>username=</code><code>'some_role'</code><code>;</code>
本文轉自 corasql 51CTO部落格,原文連結:http://blog.51cto.com/corasql/1911927,如需轉載請自行聯系原作者