mysql死锁分析

本文探讨了MySQL中死锁的原因,特别是由于更新查询、事务隔离级别和Next-Key Locks引发的问题。分析了update语句如何可能导致全表锁定,并强调了在特定情况下,如insert和delete操作,也可能造成死锁。同时,提到了正确理解和使用锁类型以防止死锁的重要性。
摘要由CSDN通过智能技术生成

showEngine  InnoDB STATUS ;

死锁日志结果如下:

------------------------
LATEST DETECTED DEADLOCK
------------------------
150224 23:53:48
*** (1) TRANSACTION:
TRANSACTION 6643B841, ACTIVE 0.018 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 601951, OS thread handle 0x2b8fa8081700, query id 803818222 10.160.63.103 mocha Updating
UPDATE selfie_ll SET    ScoreAverage=85.57353,ScoreCount=3,ChangeTime=NOW(),UpdateTime=NOW() WHERE  ID=33340
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 608 page no 467 n bits 192 index `PRIMARY` of table `moocha`.`<span style="font-family: Arial, Helvetica, sans-serif;">selfie_ll</span><span style="font-family: Arial, Helvetica, sans-serif;">` trx id 6643B841 lock_mode X locks rec but not gap waiting</span>
*** (2) TRANSACTION:
TRANSACTION 6643B837, ACTIVE 0.055 sec starting index read
mysql tables in use 2, locked 2
302 lock struct(s), heap size 47544, 40666 row lock(s)
MySQL thread id 541948, OS thread handle 0x2b8da8081700, query id 803818202 10.161.182.86 mocha Sending data
UPDATE selfie_ll SL INNER  JOIN ( SELECT AA.ID,        @VAR_NvWangRank:=@VAR_NvWangRank+1 AS NvWangRank FROM   selfie_ll AA WHERE  AA.TopicID=11 AND AA.ISValid=1 ORDER  BY AA.ScoreCount DESC, AA.ScoreAverage DESC, AA.ID ASC )  AS  BB ON BB.ID=SL.ID SET    SL.NvWangRank=BB.NvWangRank
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 608 page no 467 n bits 192 index `PRIMARY` of table `moocha`.`selfie_ll` trx id 6643B837 lock mode S
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 608 page no 467 n bits 192 index `PRIMARY` of table `moocha`.`selfie_ll` trx id 6643B837 lock_mode X locks rec but not gap waiting
*** WE ROLL BACK TRANSACTION (1)


RECORD LOCKS space id 608 page no 467 n bits 192 index `PRIMARY` of table `moocha`.`selfie_ll` trx id 6643B841 lock_mode X locks rec but not gap waiting
这句告诉我们锁信息,表空间id为608,page no表示锁在这个表空间的467页上面,192表示在锁bitmap的位置,6643B841表示事务的id,x表示锁为排他锁, not gap waiting表示这里使用的行级别锁类型不是gap 。 这里应该是没有使用gap锁,因为在innodb中,update 和select没有使用意向锁,而gap在innodb中作为一种意向锁,在insert时使用,并且不会有任何阻塞作用。

下面进行事务分析

*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 608 page no 467 n bits 192 index `PRIMARY` of table `moocha`.&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值