如何在Oracle、MySQL、PostgreSQL上终止会话或取消SQL查询
warning:
这篇文章距离上次修改已过190天,其中的内容可能已经有所变动。
在Oracle、MySQL和PostgreSQL中,你可以使用不同的方法来终止正在执行的SQL查询或会话。
Oracle:
- 使用
ALTER SYSTEM KILL SESSION
终止会话。你需要知道会话的SID和SERIAL#。
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
- 如果想要取消正在执行的查询,可以通过设置一个较短的超时来中断长时间运行的操作。
- 使用
MySQL:
- 使用
KILL QUERY
来取消当前查询,然后使用KILL CONNECTION
来终止会话。
KILL QUERY <thread_id>; KILL CONNECTION <thread_id>;
- 注意,在MySQL 8.0以前,
KILL QUERY
仅发送信号到数据库要求取消操作,实际终止需要等待事务管理器处理完当前语句后才生效。
- 使用
PostgreSQL:
- 使用
pg_cancel_backend
函数取消后台作业或查询。你需要知道进程ID(PID)。
SELECT pg_cancel_backend(pid);
- 如果需要终止会话,可以使用
pg_terminate_backend
函数,但这通常需要超级用户权限。
SELECT pg_terminate_backend(pid);
- 使用
请注意,终止会话或查询可能会导致数据不一致或其他问题,所以应谨慎使用这些操作,并且在生产环境中应由经验丰富的数据库管理员进行。
评论已关闭