如何关闭PostgreSQL数据库上的空闲连接

时间:2017-05-30 21:04:01

标签: python sql database postgresql psycopg2

我一直在使用python3和psycopg2访问postgreSQL数据库。

我遇到一个错误,暗示我打开了连接。当我运行SELECT * FROM pg_stat_activity时,我的用户名下出现了一堆连接。它们都处于“空闲”状态,其中许多都显示我从未运行的“查询”值(例如:select 1show search_path)。

我已经看过this如何自动关闭它们。而且,我还读到使用pg_terminate_backend是危险的,并将导致数据库重新启动。如何使用python3或SQL自然地关闭这些连接?它是一个公司生产数据库,因此重新启动它或作为管理员不是一个选项。如果我必须是管理员来解决这个问题,请告诉我。

1 个答案:

答案 0 :(得分:2)

您可以使用pg_terminate_backend(pid int).安全地终止自己的空闲后端流程如果您尝试终止您无法访问的流程,您将收到错误消息,并且不会发生任何特殊情况。不要试图终止活动进程。

Per the documentation

  

pg_terminate_backend(pid int)

     

终止后端。如果调用角色是终止后端的角色的成员或者已授予调用角色pg_signal_backend,则也允许这样做,但只有超级用户才能终止超级用户后端。