qq_zHv_0
2020-05-15 10:37
我有问题?数据库的默认隔离级别会防止脏读,但是 在 mybatis这边如果只有一个sqlsession 应该不会出现脏读,如果是两个以上是sqlsession操作同一条数据,是不是就会出现?脏读的现象?分布式环境中?
一级缓存 是sqlsession 级别的,所以多个sqlsession 不存在上面说的脏读的问题。就算是分布式的环境下,就像视频中的说的 SqleSession是开启数据库事务的,这个就要结合数据库 默认的事物级别有关系了 正常MySql 默认的是可重复读,然后利用MVCC和数据库的锁 去解决了 幻读的问题!
查询不会,增删改都会产生这些脏读.....
脏读是说一个事务读到了另外一个事务未提交的数据,MySQL的默认事务隔离级别是可重复读的,一个事务不会读到其他事务未提交的数据,所以不会出现脏读的情况。Mybatis中的sqlsession是线程私有的(使用了ThreadLocal)。
理解有错误。既然一级缓存是sqlsession级别的。那不同的sqlsession是不是共用一个缓存?如果不是,应该是会有脏读的吧
Mybatis缓存详解
8040 学习 · 22 问题
相似问题