读未提交:在支持事务的数据库中是没有这种情况的
读已提交:另一个事务中已经提交的数据在我的事务中就可以读取出来,大多数业务场景都可以使用此隔离级别,此隔离级别会出现不可重复读,幻读,幻读针对新增和删除,一般没有影响,但是不可重复读针对的是更新update,这就可以会导致问题,不可重复读就是在一个事务中两次读取同一行或几行数据,但是返回的值不一样
e.g.
1.在事务1中,Mary 读取了自己的工资为1000,操作并没有完成
2.在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.
3.在事务1中,Mary 再次读取自己的工资时,工资变为了2000
解决办法:如果只有在修改事务完全提交之后才可以读取数据,则可以避免该问题
不可重读会导致数据不一致,比如在同一个账户,一个事务查询出来1000,然后加500更新为1500,另一个账户查询出来减200变成了800,其实最终结果应该是1300才对(另一个账户查出来如果是1500是对的,但是可能查询出来是1000,就导致了问题,数据明显不是期望的),
要让数据可以重复读,就必须对数据加锁,select * from account where id = 2 for update;
在一个事务更新提交之前另一个事务连查询都查不出来,也就谈不上不可重读了