一、查看哪些用戶在鏈接數據庫
select * from pg_stat_activity ;
這里的pg_stat_activity其實是一個視圖,它的定義可以在postgres這個數據庫里面的視圖部分找到。
二、殺死進程
現在我們找出所有連接到數據庫的進程了,那么如何去殺死那些IDEL的進程從而釋放出連接呢?如果pg的版本是 8.4及以上的,可以很簡單地用下面的語句來殺死所有IDEL進程 :
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE current_query='<IDLE>'
pg_terminate_backend是pg的內部方法,另外還有一個叫pg_cancel_backend,這個方法在8.4以前的版本中就一直存在。這兩個方法的區別在於:
- pg_cancel_backend 只是取消當前某一個進程的查詢操作,但不能釋放數據庫連接
- pg_terminate_backend 可以在pg的后台殺死這個進程,從而釋放出寶貴的連接資源