Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgresql中停止/终止查询?_Postgresql - Fatal编程技术网

如何在postgresql中停止/终止查询?

如何在postgresql中停止/终止查询?,postgresql,Postgresql,这个问题是当邮政局长在后台运行您的查询时,如何终止或停止它 例如,您的shell或任何前端可能由于网络问题而断开连接,您不能使用ctrl-D终止它,但后台邮局主管仍在运行您的查询。如何杀死它?我做的是首先检查正在运行的进程是什么 SELECT * FROM pg_stat_activity WHERE state = 'active'; 找到要终止的进程,然后键入: SELECT pg_cancel_backend(<pid of the process>) 选择pg\u can

这个问题是当邮政局长在后台运行您的查询时,如何终止或停止它


例如,您的shell或任何前端可能由于网络问题而断开连接,您不能使用ctrl-D终止它,但后台邮局主管仍在运行您的查询。如何杀死它?

我做的是首先检查正在运行的进程是什么

SELECT * FROM pg_stat_activity WHERE state = 'active';
找到要终止的进程,然后键入:

SELECT pg_cancel_backend(<pid of the process>)
选择pg\u cancel\u backend()
这基本上是“启动”一个请求以优雅地终止,这可能在一段时间后得到满足,尽管查询会立即返回

如果无法终止进程,请尝试:

SELECT pg_terminate_backend(<pid of the process>)
选择pg_terminate_backend()

pg\u cancel\u backend
确实有效,但需要一段时间(如果返回true,就像优雅的清理一样)。pg_terminate_后端更像是一个“硬杀戮”,请参阅通过运行页面上的“阻塞和阻塞活动的С组合”查询可以找到阻塞PID。根据,
pg_cancel_后端
将在该过程中停止当前查询,但
pg_terminate_后端
将在该过程中完成会话。连接的应用程序可以从失败的查询中恢复,但要从关闭的会话中恢复,需要打开新的游标。明智地使用两者。要取消除自身之外的所有请求,请使用:
从pg_stat_activity中选择pg_cancel_backend(pid),其中state='active'和pid pg_backend_pid()如果这两个都无法取消,还有其他方法吗?从状态为“活动”的pg_stat_活动中选择pg_cancel_backend(pid),pg_terminate_backend(pid)@在这种情况下,我怀疑pg_terminate_后端是否会等待pg_cancel_后端。因此,这几乎与“从pg_stat_activity中选择pg_terminate_backend(pid),其中state='active'”相同。我错了吗?顺便说一句:不管怎样,这真是太棒了。如果把它列为答案,那就太酷了。;-)