mysql官网解读之如何最小化和处理死锁

死锁的产生

  1. mysql死锁学习第一篇
  2. mysql官网解读之InnoDB Transaction Model

避免死锁

既然存在死锁,那么如何避免死锁呢?

在这里插入图片描述

避免死锁

上图讲解了死锁的原因:数据库的操作不是原子性操作,所以有了各种锁,像gap,表锁行锁。

  1. 使用SHOW ENGINE INNODB STATUS来查看死锁的原因,一般是最后死锁的原因
  2. 第二个框框告诉你,死锁并不可怕,因为innodb会检测死锁进行相应的回滚。
  3. 保持交易小,持续时间短,对于一些占用长时间的请求要进行相应的优化。
  4. 可以使用rc级别的mysql事务隔离级别,在上面的链接也解释了rr和rc的区别以及相关的影响,主要rc是取消了gap锁,当进行范围查询(没有命中唯一索引的时候,rc级别会释放不命中的行数,从而减少死锁的可行性)
  5. 更第4点很像,让mysql命中更精确,更少的行数,从获取更少的锁,减少死锁的可能性。
  6. 减少锁定,比如for update这种表锁级别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值