mysql共享锁与排他锁

共享锁与排他锁都是对行级锁而言的。

定义:

      共享锁(S锁):又被称为读锁,某条数据被事务a加上了共享锁,其他事务也可以访问到该条数据(仅能访问不能修改)

      排他锁(X锁):又被称为写锁,事务a获取了某行数据的排他锁,其他事务就不能获取该行的排他锁了,而事务a是可以对该条数据进行读取,修改操作。

拓展:mysql的Innodb引擎,update,delete,insert都会自动给涉及到的数据加上排他锁,select语句默认不会加任何锁类型。select ...for update 就给给select语句加上排他锁。如果事务a通过该种方式给某条数据加上了排他锁,那么事务b可以这样进行读取该条数据select...(去掉for update)。

验证:

1、表a数据如下

 

 

2、开启事务a,查询数据id=1的数据(给该条数据增加排他锁),不提交,然后开启事务b,同时也查询id=1的数据,执行结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

由于右侧进程执行被阻塞,一直等待,最终报了锁超时的错误。

3、将左侧的内容取消增加的排他锁会出现什么情况呢?实验结果如下:

发现结果也查询出来了

最后补充下:slect语句添加共享锁:select ...  LOCK IN SHARE MODE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值