• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql空当锁导致死锁_mysql

mysql 搞代码 7年前 (2018-06-09) 136次浏览 已收录 0个评论

mysql间隙锁导致死锁

间隙锁的分析:

表结构如下:

CREATE TABLE `test_gap` (   `ID` int(11) NOT NULL,         -- 主键   `NAME` varchar(255) NOT NULL,  -- 非唯一索引   PRIMARY KEY (`ID`),   KEY `NAME` (`NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表中数据如下:

 

mysql空当锁导致死锁_mysql

假设UPDATE NAME = ‘c’ 或者 DELETE NAME = ‘c’  会产生间隙锁:

此时会去寻找非唯一索引的间隙锁的上下区间,对应表里数据区间就是(a,e);

1:如果插入的数据,属于(a,e)之间,既b,d,此时无法插入,因为b,d被间隙锁锁定

2:如果插入的数据,不属于(a,e)之间,那么不受间隙锁影响,自由插入

3:如果插入的数据,等于a或者e,此时需要再根据主键来判断锁定范围:

      1):如果是a,则取a的最大值ID为50,只要插入的数据ID<50则可以自由插入,ID>50既全部锁定无法插入

      2):如果是e,则取e的最小值ID为30,只要插入的数据ID>30则可以自由插入,ID<30既全部锁定无法插入

 

那么开始模拟死锁情景


mysql空当锁导致死锁_mysql
 执行顺序:1,2,3,4

1 楼 onlylau 前天  
大神好牛逼啊,求加QQ抱大腿!!mysql空当锁导致死锁_mysql

欢迎大家阅读mysql空当锁导致死锁_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql空当锁导致死锁_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址