MySQL的事务隔离级别

事务隔离级别描述了一个事务可能受其他并发执行事务的影响程度。

隔离级别 脏读 不可重复读 幻读
读未提交
读已提交 ×
可重复读 × ×
串行化 × × ×

如上图MySQL中的事务隔离级别主要有四种:

  1. 读未提交(Read Uncommitted) 这是隔离级别最低的一种。这里事务可以读取其他未提交事务修改过的数据。可能会导致脏读、不可重复读和幻读的问题。
  2. 读已提交(Read Committed) 这可以防止脏读,因为事务只能读取已经提交的数据。但是不可重复读或幻读的问题仍然可能存在。
  3. 可重复读(Repeatable Read)
    这进一步可以防止不可重复读情况发生。因为同一个事务中多次读取同一数据结果是一致的。但幻读的问题仍然可能存在。
  4. 串行化(Serializable) 这是最高的隔离级别,通过强制事务顺序执行,可以完全杜绝上述隔离问题。但性能最差。

InnoDB存储引擎的默认隔离级别就是可重复读。

事务用于保证数据一致性,隔离级别用于在一定程度上隔离不同事务对数据库的影响。合理利用事务与设置隔离级别,可以优化应用的性能。

你可能感兴趣的:(mysql,mysql,数据库)