MySQL事务的隔离级别

165 阅读1分钟

1.MySQL默认的事务隔离级别是可重复读。

2.脏读、幻读和不可重复读

  • 脏读:一个事务读取到了另一个事务尚未提交的操作
  • 幻读:一个事务多次查询时读取到了另一个已提交事务插入的数据
  • 不可重复读:一个事务多次查询时读取到了另一个已提交事务修改、删除后的数据

3.MySQL事务的四种隔离级别

  1. 读未提交——READ UNCOMMITTED
    该隔离级别的事务可以读取到其它事务中还没有提交的修改。依次,会产生脏读。脏读产生了,那当然也会产生不可重复读和幻读的问题。
  2. 读已提交——READ COMMITTED
    该隔离级别的事务不能读取到还没有提交的其他事务中的修改,但是可以度舞蹈其它事务已提交的修改。因此不会产生脏读,但是会产生不可重复读和幻读。
  3. 可重复读——REPEATABLE READ
    该级别是MySQL系统默认的事务隔离级别。该级别下的事务不能读取到其它已提交或者未提交的事务的修改。因此不会产生脏读,不可重复读、幻读。
  4. 序列化——SERIALIZABLE
    这是事务的最高隔离级别,会强制事务进行排序,相当于对事务进行了加锁操作。但是也正因如此,执行效率也有所下降。