由于mysql今天导入了数据,其中一个表已死锁。 介绍如何解决死锁问题
以下是导致mysql死锁的四个条件
互斥条件:一个资源只能由一个进程占用,不能由两个或多个进程占用
不可抢占条件:进程已经获取的资源在未使用之前无法抢占。 只能抢占在使用后自己释放
申请占用条件:流程本身已经至少拥有一个资源,并且需要其他资源,但该资源被其他流程占用,并且没有释放自己已经占用的资源
循环等待条件:发生死锁时,始终会形成进程——资源的循环。 在进程集合{p1、p2、p3}中,p1请求p2占有的资源,p2请求p3占有的资源,p3请求p1占有的资源
解决死锁的方案
第一个:
1 .询问是否锁定表
show OPEN TABLES where In_use 0;
2 .查询进程(如果您具有SUPER权限,则可以查看所有线程。 否则,只能显示自己的线程)
显示流程列表
3 .进程id (以上命令的id列) ) ) ) ) ) )。
基尔德
第二个:
1 .查看锁定的事务
select * from information _ schema.innodb _ Trx;
2 .杀死进程id (以上命令中的trx_mysql_thread_id列) )。
基尔线程ID