mysql 实验论证 innodb表级锁与行级锁

innodb 的行锁是在有索引的情况下,没有索引的表是锁定全表的.

表锁演示(无索引)

操作1

53454ee806b1da5a1753d1fdfe74a7f3c1b.jpg

操作2

95db6137cb3dcd65dc6c2a060e80353a948.jpg

处于等待状态....

再回到操作1 commit以后,操作2就出来结果了(锁定了8秒,过了6秒左右才去session1提交)。

945232cd64927fea8920cce4e0ab7695fdf.jpg

实验结果是:

我在操作1的for update 操作看似只锁定ID为2的行其实锁定了全表,以至于后面操作2的对ID为1的行update 需要等待操作1锁的释放。

行锁演示(索引为ID)

增加索引:

a5c555f4ea34cdcae26cd5830aeb131128c.jpg

 

ba21a6769dc79197926f7437647307d180c.jpg

c05444a61d41363d4ad954c8de02a6d77ef.jpg

实验结果:

这次的锁定是锁定的行,所以没有被锁定的行(ID不为2的行)可以进行update..

转载于:https://my.oschina.net/u/2364788/blog/3078428

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值