mysql锁:mysql lock in share mode 和 select for update

select ... lock in share mode

select ... for update

注意点:

1.都在事务内起作用;

2.所涉及的是行锁(即innodb引擎);

3.保证当前session事务所锁定的行不会被其他session所修改(这里的修改指更新或者删除);

4.select ... lock in share mode是共享锁,语句如:select * from t where id=2 lock in share mode;

5.select ... for update是排它锁,语句如:select * from t where id=2 for update;

6.共享锁允许其他事务加共享锁读取,但是,不允许其他事务去做修改,或者加排它锁,而需要注意的是共享锁容易造成死锁;

7.排它锁更加严格,不允许其他事务加共享锁(但可select读该行)或者排它锁,更加不允许其他事务修改加锁的行。

使用情景:

1.select ... lock in share mode 保证所有人查到的数据是最新数据,应用的场景主从库数据的同步;

2.select ... for update 查到的数据确保是最新数据,并且查到后的数据只允许自己来修改的时候,需要用到 for update 子句,应用的场景库存,并发。

zhaohao

大家好,欢迎来到赵豪博客!赵豪,94年生人,PHP程序员一枚,因为对PHP开发有着相对比较浓厚的兴趣,所以现在从事着PHP程序员的工作。 今天再次开通这个博客,这里将记录我的职业生涯的点点滴滴,感谢来访与关注!如果我的博客能给您带来一些帮助那真是一件非常荣幸的事情~

相关推荐

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

mysql锁:mysql lock in share mode 和 select for update
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close