脏读。即读取到了其他事务还未提交的“脏数据”,如果那个事务最终回滚,当前事务基于这个错误数据进行的操作就会产生问题

不可重复读。即在同一个事务内,两次读取同一行数据,得到的结果不一致(因为在此期间,有其他并发事务提交了修改操作)

幻读。即在一个事务内执行两次范围查询时,第二次查询结果集中出现了第一次没有的“幻影行”(因为在此期间,有其他并发事务插入了新的数据,并提交了)。

总结对比表

隔离级别脏读不可重复读幻读并发性能
读未提交可能可能可能最高
读已提交不可能可能可能
可重复读不可能不可能可能(MySQL InnoDB除外)
可串行化不可能不可能不可能最低

补充说明

不同的数据库默认隔离级别可能不同:

  • MySQL: 默认隔离级别是 可重复读
  • Oracle、PostgreSQL: 默认隔离级别通常是 读已提交

推荐学习链接:数据库四种隔离级别以及脏读,不可重复读,幻读_哔哩哔哩_bilibili

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注