MYSQL中如何强制终止一条语句的执行?

MYSQL中如何强制终止一条语句的执行?,第1张

KILL命令的语法格式如下:KILL [CONNECTION | QUERY] thread_id

步骤如下:

1、KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。

2、KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。

3、如果您拥有PROCESS权限,则您可以查看所有线程

4、如果您拥有超级管理员权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。

5、您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。

首先登录mysql,然后使用: show processlist查看当前mysql中各个线程状态。

以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.

然后运行kill命令,命令格式如下:

[sql] view plain copy

kill id

- 示例:

kill 8358

杀掉即可。

默认情况下, MySQL启用自动提交模式(变量autocommit为ON)

如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果都没加,默认是session。

全局变量作用域:服务器每次启动将为所有的全局变量赋初始值,修改全局变量针对于所有的会话(连接)有效,但不能跨重启(重启服务器全局变量恢复为默认值)。

会话变量作用域:仅仅针对于当前会话(连接)有效

查询会话事务提交模式:

show session variables like 'autocommit'

查询全局事务提交模式:

show global variables like 'autocommit'

Value的值为ON,表示autocommit开启。OFF表示autocommit关闭。

set global autocommit=0

set SESSION autocommit=0

禁止自动提交

SET AUTOCOMMIT=0

开启自动提交:

SET AUTOCOMMIT=1

查询 正在执行的事务:

SELECT * FROM information_schema.INNODB_TRX

查看正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS

查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS

结束正在执行的事务:

使用mysql命令杀掉线程:kill 线程id (trx_mysql_thread_id)

手动提交模式:

BEGIN

SQL;

COMMIT


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5901221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存