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

  • 未提交读(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事物两次查询的数据不一样
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容