【Mysql】mysql 锁机制——实操

表锁

读锁

下面我们为user_info表加read锁,针对——session1
在这里插入图片描述

查询自己锁定的表
在这里插入图片描述
查询未锁定的表
在这里插入图片描述
多锁定的表进行更新或者插入
在这里插入图片描述

针对——session2
查询锁定的表
在这里插入图片描述
查询未锁定的表
在这里插入图片描述
更新锁定的表,处于阻塞状态
在这里插入图片描述
锁定的表,释放锁,session2更新成功,将abc改为ab。
在这里插入图片描述

写锁

多user_info加写锁——针对session1
在这里插入图片描述
查询锁定的表
在这里插入图片描述
对锁定的表进行更新
在这里插入图片描述
查询未锁定的表
在这里插入图片描述
释放锁
在这里插入图片描述
针对——session2
查询锁定的表,一直处于阻塞态
在这里插入图片描述

查询成功
在这里插入图片描述

总结:

总结读锁
Session1
1. 加读锁
2. 可以查自己锁定的表
3. 不可以查询其他没有锁定的表
4. 不能对读锁定的表进行插入或更新

Session2
1. 可以查询锁定的表,其他未锁定的表也可以查询
2.不能对锁定的表进行插入或更新,处于等待,等session1释放锁

总结写锁
session1
1.加写锁
2.查询锁定的表
3.可以对锁定的表进行更新
4.不可以查询未锁定的表

Session2
1.查询锁定的表,处于阻塞,等待释放锁,才可以访问。
2.可以查询未锁定的表
3.对锁定的表进行修改,处于阻塞,等待释放锁,才可以,和查询类似。

行锁

行锁偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

关闭自动提交

set autocommit=0;        // 0关闭,1开启

在这里插入图片描述
查询product_info
在这里插入图片描述
更新一条数据
在这里插入图片描述
再次查询,从6变为10
在这里插入图片描述
查询session2,依然是6
在这里插入图片描述
提交session1
在这里插入图片描述
查询session2
在这里插入图片描述
session2提交再查询
在这里插入图片描述
session1 更新查询
在这里插入图片描述

总结

session1
1.关闭自动提交
2.更新不提交,没有commit
3.commit
Session2
1.关闭自动提交
2.处于阻塞状态,一直等待
3.接触阻塞,更新正常进行,需要commit
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值