2017-05-30 76 views
0

我一直在使用python3和psycopg2訪問postgreSQL數據庫。如何關閉PostgreSQL數據庫上的空閒連接

我遇到了一個錯誤,暗示我打開了連接。當我運行SELECT * FROM pg_stat_activity時,我的用戶名下出現了一堆連接。它們都處於「閒置」狀態,其中許多顯示了我從未運行過的「查詢」值(例如:select 1,show search_path)。我看過this關於如何自動關閉它們。而且,我還讀到使用pg_terminate_backend是危險的,並且會導致數據庫重新啓動。如何使用python3或SQL自然關閉這些連接?這是一個公司生產數據庫,因此重新啓動它或作爲管理員不是一個選項。讓我知道如果我必須是管理員才能解決此問題。

回答

2

使用pg_terminate_backend(pid int).可以安全地終止您自己的空閒後端進程如果您試圖終止您無法訪問的進程,您將收到錯誤消息,並且不會發生任何特殊情況。不要試圖終止活動進程。

Per the documentation

pg_terminate_backend(PID INT)

終止後端。如果調用角色是其後端正被終止或調用角色已被授予pg_signal_backend的角色的成員,則也可以使用此功能,但只有超級用戶才能終止超級用戶後端。