sql 如何快速KILL 事务锁或者等待执行的语句

本文介绍数据库中死锁现象及其解决办法。通过查询当前执行的事务及进程列表,找到死锁进程并终止,以此解除死锁状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   前几天刚遇到这么一个情况,在调试程序过程中,后台有断点,程序还没走完,前台界面有刷新了几遍,结果后台出现异常。原因是事务锁导致。何为锁,

锁 

   锁是计算机协调多个进程或线程访问某一个资源的机制。在数据库中,除传统的计算资源(CPU、RAM、IO)的争用意外,数据也是一种许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问的一个重要因素。从这个角度来说,锁对数据库尤其重要,也更加复杂。

死锁

 

     发生死锁后,InnoDB一般都能自动检测到,并使一个事务释放锁并回退,另一个事务获得锁,继续完成事务。但在涉及外部锁,或涉及表锁的情况下,InnoDB并不能完全自动检测到死锁,这需要通过设置锁等待超时参数 innodb_lock_wait_timeout来解决。需要说明的是,这个参数并不是只用来解决死锁问题,在并发访问比较高的情况下,如果大量事务因无法立即获得所需的锁而挂起,会占用大量计算机资源,造成严重性能问题,甚至拖跨数据库。我们通过设置合适的锁等待超时阈值,可以避免这种情况发生。

 

 

 

 

如何快速解决:

第一:

执行:SELECT * FROM information_schema.INNODB_TRX 语句;查出正在执行的事务 ;

候志杰

第二:

执行: SHOW PROCESSLIST  查看进程:找出死锁对应的进程id;

QQ:153358882

 

 

 

第三:

执行:kill id; 如:kill 1

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侯志杰

希望能帮的您

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值