MySQL提供了4个事务隔离级别,从低到高分别是:
- READ UNCOMMITTED
最低的隔离级别。一个事务可以读取另一个事务修改但还没有提交的数据。
可能导致脏读(读取未提交数据)、不可重复读和幻读。 - READ COMMITTED
一个事务只能读取已经被其他事务提交的数据。
可以避免脏读,但可能产生不可重复读和幻读。 - REPEATABLE READ
一个事务在整个过程中看到的 personally都是相同的。
可以避免脏读和不可重复读,但可能产生幻读。 - SERIALIZABLE
最高的隔离级别。完全序列化事务的执行,作为他们依次执行。
可以避免脏读、不可重复读和幻读。但性能最低。
这4个隔离级别从下到上依次提供:
- 完整性:数据的完整性越来越高
- 一致性:读写数据的结果越一致
- 隔离性:事务之间的隔离性越高
- 性能:平均性能从高到低
MySQL的默认隔离级别是REPEATABLE READ。
适当的选择隔离级别可以很好的平衡一致性、隔离性和性能之间的关系。