mysql 释放行锁_Mysql调用什么情况会用到行锁与表锁

专注于Java领域优质技术,欢迎关注

在调用存储过程中,就会涉及到表锁,行锁这一概念:所谓区别:有索引的时候就是行锁,没有索引的时候就是表索

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

表锁演示(无索引)

Session1:

335813b52d886685c1f80c7d45babf8f.png

Session2:

mysql> update innodb_test set name='sjis' where id = 1 ;

处于等待状态....

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

mysql> update innodb_test set name='sjis' where id = 1 ;Query OK, 1 row affected (8.11 sec)Rows matched: 1 Changed: 1 Warnings: 0

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

行锁演示(索引为ID)

Session1:

9765d3dabe91752b462116732513e861.png

Session2:

40e09103604ff0e1e282d9762f9fe644.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值