MySQL排查长事务,以及锁表导致无法执行sql

在日常使用时,经常可能会遇到新增一个索引等很久,或者无法删除一个表等等。这种情况大概率是因为开启了事务导致锁表,无法执行。那么这个时候我们可以使用以下命令去查询并关闭事务

1、查询sql执行进程

SHOW FULL PROCESSLIST;

结果例:

IdUserHostdbCommandTimeStateInfo
532231rootxxxabcQuery0startingSHOW FULL PROCESSLIST
  • ID是当前info中执行的sql进程号
  • User是执行当前sql的用户
  • Host是执行sql的电脑
  • db是sql执行的所在数据库
  • command是sql类型,上图Query指的是查询类型
  • Time是sql执行的持续时间
  • State是sql执行的状态
  • Info是执行的具体sql

2、结束进程

以上面的sql进程号为例:

KILL 532231

3、或者使用另一条命令去查询正在执行的事务

SELECT * FROM information_schema.innodb_trx

这条命令可以查询到当前开启的事务


已发布

分类

,

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注