事务的四种隔离级别

  1. Read Uncommitted(读未提交):保证了读取过程中不会读取到非法数据。
  2. READ COMMITTED(读已提交):大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但仍未提交的数据,避免了“脏读”。该级别适用大多数系统。
  3. REPEATABLE READ(可重复读):保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读”和“不可重复读”,但是带来了更多的性能损失。
  4. Serializable(串行化):最严格的级别,事务串行执行,资源消耗最大。
隔离级别 脏读
Dirty reads
脏读
Dirty reads
幻读
phantom
Read Uncommitted
读未提交(不加锁)
READ COMMITTED
读已提交(RC)
×
REPEATABLE READ
可重复读(RR)(默认)
× ×
Serializable
串行化(全程加锁)
× × ×
  • 脏读:读到了其他事务未提交的脏数据。
    例如:事务 B 执行过程中修改了数据 X,在未提交前,事务 A 也读取了 X,但事务 B 却回滚了,这样事务 A 就形成了脏读。
  • 不可重复读:在一个事务内,最开始读到的数据和事务结束前任意时刻读到的同一批数据出现不一致的情况。
    例如:事务 A 先读取了一条数据,然后再执行逻辑的时候,事务 B 将这条数据改变了,然后事务 A 再次读取该数据,发现数据不匹配,这就是所谓的不可重复读。
  • 幻读:事务的某次 select 操作得到的结果所表示的数据状态无法支撑其后续的业务操作。
    例如:事务 A select 某条记录是否存在,不存在,准备插入此记录,但执行 insert 操作的时候发现此记录已存在,此时就产生了幻读。





  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 Liangxj
  • 访问人数: | 浏览次数: