在 PostgreSQL 中杀死一个进程 ID

Bilal Shahid 2022年5月14日
在 PostgreSQL 中杀死一个进程 ID

今天,我们将学习如何在使用 PostgreSQL 数据库时在后台终止或停止正在运行的查询。

如果前端停止工作而后台进程仍在运行,则可能会发生这种情况。在这种情况下,你可能想要终止该进程。

使用 pg_cancel_backend 杀死 PostgreSQL 中的进程 ID

首先,使用这个命令查看所有正在运行的任务:

select * from pg_stat_activity;

现在,如果你想从此处删除任务,请使用以下查询:

SELECT pg_cancel_backend(11080), pg_terminate_backend(11080) FROM pg_stat_activity WHERE state = 'active';

我们将 11080 用于 active 进程并使用此语句终止它。稍后它将返回到 idle

因此,pg_cancel_backend 在终止进程时往往有点宽松,因为它需要一些时间。但在许多情况下,它可能会重新运行;因此我们使用 pg_terminate_backend 硬杀进程。

不要将此称为系统中唯一的活动进程,因为这可能会关闭你当前的查询。因此,仅在需要时才明智地使用这些功能。

你始终可以选择终止当前 PostgreSQL 会话并重新启动它,而不是终止进程。

Author: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub