多个sqlseesion会不会出现?脏读

来源:2-3 mybatis一级缓存生命周期

qq_zHv_0

2020-05-15 10:37

我有问题?数据库的默认隔离级别会防止脏读,但是 在 mybatis这边如果只有一个sqlsession  应该不会出现脏读,如果是两个以上是sqlsession操作同一条数据,是不是就会出现?脏读的现象?分布式环境中?

写回答 关注

4回答

  • burg_xun
    2020-08-16 11:38:57

    一级缓存 是sqlsession 级别的,所以多个sqlsession 不存在上面说的脏读的问题。就算是分布式的环境下,就像视频中的说的 SqleSession是开启数据库事务的,这个就要结合数据库 默认的事物级别有关系了  正常MySql 默认的是可重复读,然后利用MVCC和数据库的锁 去解决了 幻读的问题!

  • 我是一哈呀
    2020-06-12 13:50:09

    查询不会,增删改都会产生这些脏读.....

  • 草鱼禾
    2020-05-15 21:53:03

    脏读是说一个事务读到了另外一个事务未提交的数据,MySQL的默认事务隔离级别是可重复读的,一个事务不会读到其他事务未提交的数据,所以不会出现脏读的情况。Mybatis中的sqlsession是线程私有的(使用了ThreadLocal)。

  • qq_zHv_0
    2020-05-15 13:50:52

    理解有错误。既然一级缓存是sqlsession级别的。那不同的sqlsession是不是共用一个缓存?如果不是,应该是会有脏读的吧

Mybatis缓存详解

学习mybatis一级缓存、二级缓存及自定义缓存的使用

8040 学习 · 22 问题

查看课程

相似问题