会话或请求不再存在时,在PostgreSQL中停止(长期)运行SQL查询?

Ken*_*hen 50 sql postgresql

我不知道从哪里开始解决这个问题,但如果我有一个AJAX Web应用程序向服务器发送请求并在数据库上运行长查询(在我的情况下是postgresql),有没有办法停止或终止查询如果仍然在运行,用户刷新页面或关闭会话...等?

Fra*_*ens 84

要停止查询:

SELECT pg_cancel_backend(procpid);
Run Code Online (Sandbox Code Playgroud)

要终止数据库连接:

SELECT pg_terminate_backend(procpid);
Run Code Online (Sandbox Code Playgroud)

要获得当前事务的概述,要获取过程ID:

SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

http://www.postgresql.org/docs/current/interactive/functions-admin.html

  • 截至9.2版本,"procpid"已更改为"pid" (6认同)
  • 这不是"当会话或请求不再存在时停止运行SQL查询"这一问题的答案.这是"为任何原因手动停止运行SQL查询"这一问题的答案. (6认同)