删除数据导致的死锁

在这个事务的生命周期中,在进行插入和删除要满足一个条件,就是在一个事务的操作的记录范围内,与另一个事务的操作的范围内,不能有重合,这里不是指的实际的范围,而是你条件的范围。

 

这里MYSQL的设计中的思想是,对所有有可能产生变化的记录全部要加锁,包含不存在的KEY,一般来说如果设计中通过条件来判断操作的范围即可,如我们上面的操作中,一个只要锁3,4 记录即可,另一个只要锁 5好记录即可,但是这使我们人类的想法,而到了数据库中,条件的范围是需要判断的,而且COST 很大,你不知道一个条件的COST 是大是小,所以基于MYSQL的B+TREE 的方式中,无论你DELETE 的操作使用什么隔离级别(RN除外),你都会导致一个key range locking 的锁,保护你操作的区间的记录不被 INSERT 或 DELETE 操作后变化产生的不可预知的数据逻辑错误的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值