脏读、幻读、不可重复读
前言: 了解三种场景的前提是我们需要了解数据库的四种事务级别:
串行化 - 可避免所有问题
可重复读 - 不可避免幻读
读已提交 - 避免脏读、幻读
读未提交 - 都不可避免
一 脏读
概念:读取到了其他事务未提交的数据。
二 不可重复读
概念:同一次事务前后查询到的数据不一致的问题。
三 幻读
概念:幻读是一次事务中前后数据量发生变化用户产生不可预料的问题。
四 总结
脏读指读取到其他事务正在处理的未提交数据
不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期
幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期
五 四种隔离级别
MySQL默认Repeatable Read(RR)-可重复读
MySQL 5.1以后默认存储引擎就是InnoDB
因此MySQL默认RR也能解决幻读问题