read uncommitted (未提交读) 级别 事务中的修改,即使没有提交,对其他事物也都是可见的。事务可以读取未提交的数据,这也被称为脏读。
read committed( 提交读) 大多数数据库默认的隔离级别都是 read committed(但是MySql不是):一个事务开始时,只能看见已经提交的事务所做的修改. 一个事务从开始提到提交之前,所做的任何修改对其它的事务都是不可见的
repeatable read(可重复读) 该级别保证了在同一个事务中多次读取同样记录的结果是一致的。
但是理论上可重复读还是无法解决另外一个幻读问题,指的是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的实物再次读取该范围的记录时,会产生幻行.
serializable(可串行化) 是最高的隔离级别。它通过强制事务串行执行,避免了前面说的幻读问题.
简单来说,可串行化会在读取的每一行数据上加上锁,所以可能导致大量的超时和锁争用的问题。
实际应用中也很少用到这个隔离级别,只有在非常需要确保数据的一致性且可以接受没有并发的情况下,才考虑采用该级别。