前言

mysql中一共有4种隔离级别(因为只有InnoDB引擎支持事务,所以也可以说是InnoDB的事务隔离级别)

隔离级别的实现是基于MVCC方案以及锁机制,此文仅作为隔离级别的参考,所以就不过多介绍了

级别

  1. 读未提交 READ UNCOMMITTED
    该模式允许读取其它事务并未提交的数据,会引起脏读(读到了其它事务未提交的数据),如果没有必要的需求,不应该使用

  2. 读已提交(不可重复读) READ COMMITTED
    该模式只会读取其它事务提交后的结果,但是如果当前事务中存在多次同样的查询,有可能会出现结果不一致(因为中间其它事务修改了数据)

  3. 可重复读 REPEATABLE READ
    相比较不可重复读,此模式保证了数据在当前事务中的不变性,即使其他事务修改了数据。
    但是与不可重复读一样,它们都可能会产生幻读(其它事务为表格增加了新的数据条目,导致出现当前事务中多个同样的涉及到条数的查询结果条数不一致)
    该模式是mysql的默认隔离级别

  4. 序列化 SERIALIZABLE
    此模式将事务串行化执行,不会出现任何并发问题

修改隔离级别命令:
set session transaction isolation level “隔离级别”
例如:
set session transaction isolation level READ COMMITTED