脏读

事务1 事务2
beginTransaction beginTransaction
访问并修改 无操作
无操作 读取数据
无操作 commit
rollback 无操作

事务2获取到的数据就是脏数据

幻读

事务1 事务2
beginTransaction beginTransaction
访问sex为1的数据总数(100) 无操作
无操作 新插入一条sex为1的数据
访问sex为1的数据总数(101) 无操作
无操作 rollback
懵逼脸 嘻嘻嘻

由于事务2的插入操作,造成事务1的幻读
幻读的重点是新增和删除

不可重复读

在一个事务中前后读取到的数据不一样,就是不可重复读

事务1 事务2
beginTransaction beginTransaction
访问id为1的math字段(88) 无操作
无操作 修改id为1的math字段(100)
无操作 commit
访问id为1的math字段(100) 无操作
懵逼脸 嘻嘻嘻

由于事务2的修改操作,造成事务1对数据的不可重复读
不可重复读的重点是修改(如果在修改数据期间,不允许访问此数据,则可以预防不可重复读)
脏读和不可重复读的区别在于,脏读未commit,其他事务都可以查询到未提交的数据,而不可重复读,是在一个事务commit的前后,其他事务读取两次数据(且数据前后不一致)