1、 读未提交:
mysql数据库此时有一张表数据为:id=1,name="张三"; 事务B 将id=1的数据,name改成了"李四",但是事务并没有提交;但是事务A却可以读取到mysql中id=1的数据name="李四";
2、读已提交:(不可重复读)
事务B将id=1,name改为"李四",此时未提交事务;事务A第一次查询,查询到id=1的name="张三";此时事务B将事务提交;mysql数据库中,id=1,name由"张三"改成了name="李四";事务A第二次查询,发现id=1的name="李四";
3、可重复读
事务B将id=1,name改为"李四",此时未提交事务;事务A第一次查询,查询到id=1的name="张三";此时事务B将事务提交;mysql数据库中,id=1,name由"张三"改成了name="李四";事务A第二次查询,读到的id=1,name还是"张三";事务B在事务运行过程中数据读取的永远是事务开启时候的name="张三",是一样的。
4、串行化:解决幻读问题
4.1幻读
事务A查询到数据只有一条,id=1,name="张三";事务B插入一条数据,id=2,name="李四",事务提交;此时事务A第二次查询,查询到了两条数据,id=1,name="张三"、id=2,name="李四";此时事务A就仿佛看到了幻觉,第一次跟第二次查询,不一样;
4.2 串行化:
事务A查询到数据只有一条,id=1,name="张三";在事务A执行期间,事务B不能执行;事务A第二次查询,仍然查询到数据只有一条,id=1,name="张三";事务A提交;此时事务B可以执行了,事务B插入一条数据,id=2,name="李四",提交事务B;mysql表中此时有了两条数据,id=1,name="张三"、id=2,name="李四";