MySQL事务的隔离级别有哪几种?

MySQL提供了4个事务隔离级别,从低到高分别是:

  1. READ UNCOMMITTED
    最低的隔离级别。一个事务可以读取另一个事务修改但还没有提交的数据。
    可能导致脏读(读取未提交数据)、不可重复读和幻读。
  2. READ COMMITTED
    一个事务只能读取已经被其他事务提交的数据。
    可以避免脏读,但可能产生不可重复读和幻读。
  3. REPEATABLE READ
    一个事务在整个过程中看到的 personally都是相同的。
    可以避免脏读和不可重复读,但可能产生幻读。
  4. SERIALIZABLE
    最高的隔离级别。完全序列化事务的执行,作为他们依次执行。
    可以避免脏读、不可重复读和幻读。但性能最低。

这4个隔离级别从下到上依次提供:

  • 完整性:数据的完整性越来越高
  • 一致性:读写数据的结果越一致
  • 隔离性:事务之间的隔离性越高
  • 性能:平均性能从高到低

MySQL的默认隔离级别是REPEATABLE READ。
适当的选择隔离级别可以很好的平衡一致性、隔离性和性能之间的关系。