当前位置:   article > 正文

mysql加悲观锁后还可以读到的问题_mysql数据加悲观锁可以被读么

mysql数据加悲观锁可以被读么

在用到悲观锁的时候遇到了一个问题

明明锁了行,但是还是能够读取到该行数据,并没有实现读等待,

问题出现在了

悲观锁只会把所有写了forupdate的语句进入队列

例如:

A进行

public void A(){

      bDao.find(select * from bid WHERE bid_id = 1 for update);​

​       ......

      commit();​

}​

B进行​

public void B(){

      bDao.find( select * from bid WHERE bid_id = 1);

       ......​

       commit();​​

}​


C进行

public void C(){

       bDao.find(select * from bid WHERE bid_id = 1 for update);

      ......

      commit();​​​

}​


A先直行,在直行commit之前,B和C进来了

此时B执行,能查询到数据,但是如果之后的业务中有对于bid的update语句​,则会等待,直到Acommit后才会提交修改

C则会在一开始的查询​就开始进行等待,知道Acommit后才会查询到数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/959839
推荐阅读
相关标签
  

闽ICP备14008679号