1.READ UNCOMMITTED(未提交读)
事务中的修改,即使没有提交,对其他事务也都是可见的。
事务可以读取未提交的数据,即脏读(Dirty Read)。
实际应用中很少使用。
2.READ COMMITTED(提交读)
一个事务从开始到提交之前,所做的任何修改对其他事务都是不可见的,有时也叫不可重复读。
3.REPEATABLE READ(可重复读)
是MySQL的默认事务隔离级别。
在同一事务中,多次读取同样记录的结果是一致的。
无法解决幻读(当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围内的记录时,会产生幻行。)的问题。
InnoDB通过多版本并发控制解决了幻读的问题。
4.SERIALIZABLE(可串行化)
是最高的隔离级别。它通过强制事务串行执行,避免了幻读的问题
隔离级别 | 脏读可能性 | 不可重复读可能性 | 幻读可能性 | 加锁读 |
---|---|---|---|---|
READ UNCOMMITTED | YES | YES | YES | NO |
READ COMMITTED | NO | YES | YES | NO |
REPEATABLE READ | NO | NO | YES | NO |
SERIALIZABLE | NO | NO | NO | YES |