不考虑隔离级别出现的问题:
- 脏读:一个事务读取到另一个事务未提交的的数据
- 不可重复读:一个事务内读取同一条数据前后不一致
- 幻读:一个事务读取时,另一个事务添加了数据,造成前一个事务读取到新的数据、总数不一致(幻读针对的是一整批数据,不可重复读是针对一条数据)
四种隔离级别
- 读未提交,出现脏读、不可重复读、幻读
- 读已提交,避免脏读,出现不可重复读、幻读(只要提交了就能读到,每次查询前都回去读取快照)
- 可重复读,避免脏读、不可重复读,出现幻读(MySQL默认,只在事务开始前读取快照)
- 串行化,避免脏读、不可重复读、幻读
图来自:https://blog.youkuaiyun.com/xiangmincug/article/details/83723181