March 2, 2021

事务隔离级别

事务隔离级别

隔离级别

隔离级别 标识 说明
读未提交 READ UNCOMMITTED 可以在事务B中读取事务A中未提交的insert,update,delete
读已提交 READ COMMITTED 可以在事务B中读取事务A中已提交的insert,update,delete
可重复读 REPEATABLE READ 事务A修改id=1数据,事务B多次读取到id=1的数据是相同的,不会读到事务A的修改
串行化 SERIALIZABLE 每个操作依次执行

隔离效果

隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read)
未提交读(Read uncommitted) 可能 可能 可能
已提交读(Read committed) 不可能 可能 可能
可重复读(Repeatable read) 不可能 不可能 可能
可串行化(Serializable ) 不可能 不可能 不可能

说明

  1. 可重复读:事务中多次读取相同行得到的数据是相同的
  2. 不可重复读:事务中多次读取相同行得到的数据可能是不相同的,读取到的数据可能是无效的
  3. 幻读:以下两个例子
    a. 事务B最开始读取数据id=1,2,事务A新增id=3并提交,接着事务B新增id=3并提交就会失败。
    b. 事务B最开始读取数据id=1,2,事务A新增id=3并提交,接着事务B修改id=3的信息并提交就会成功。