MySQL数据库事务的隔离级别

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章