1未提交读
事务中的修改,即使没有提交,对其他事务都是可见的,事务读取未提交的数据,称为脏读,会导致很多问题,很少使用;
2提交读
事务中的修改,只有在提交后对于其他事务才是可见的,也称为不可重复读,因为两次读取的内容可能不一样;
3可重复读(mysql的默认事务隔离级别)
解决了脏读的问题,同一个事务中多次读取同样的记录结果是一样的,但理论上无法解决幻读的问题,幻读是指某个事务在读取某个范围内的数据时,另一个事务在这个范围插入了一行数据,当前一个事务再次读取这个范围的记录时,产生的幻行的问题;
4可串行化
强制事务串行执行,解决了幻读的问题,即在每一行数据前加锁,可能导致大量的超时和锁争用的问题,实际中很少用,只有为了确保数据的一致性和可接受无并发时才使用;
隔离级别 脏读可能性 不可重复读可能性 幻读可能性 加锁读
未提交 yes yes yes no
提交 no yes yes no
可重复 no no yes no
可串行化 no no no yes