数据库事务的四种隔离级别及脏读、幻读、不可重复读【通俗版】

  • 未提交读(Read Uncommitted)
    A事务只要修改数据,其他事务就可以看到
    优点:并发能力最强
  • 提交读(Read Committed)
    A事务修改数据,但未提交,其他事务不能读到A事务未提交的数据
    多数数据默认的事务等级
  • 可重复读(Repeatable Read)
    A事务不会修改其他事务未提交的数据
  • 串行化(Serializable)
    事务按顺序执行
    性能低,很少使用

以上四种级别为逐渐递增方式,如下:√: 可能发生 ×: 不会发生

脏读 不可重复读 幻读
未提交读
提交读 x
可重复读 x x
串行化 x x x

mysql默认可重复读,支持四种
Oracle默认为读写提交,只支持读写和串行化


  • 脏读
    A事务访问数据并修改,但没提交。B事务访问并使用了这个数据
  • 不可重复读
    A事务多次读同一数据,事务未结束,但B事务修改并提交了数据,此时A事务读到数据不一致
  • 幻读
    A事物查询后,B事物添加一数据后提交,A事物两次查询的数据不一样

你可能感兴趣的:(数据库事务的四种隔离级别及脏读、幻读、不可重复读【通俗版】)