
脏读。即读取到了其他事务还未提交的“脏数据”,如果那个事务最终回滚,当前事务基于这个错误数据进行的操作就会产生问题
不可重复读。即在同一个事务内,两次读取同一行数据,得到的结果不一致(因为在此期间,有其他并发事务提交了修改操作)
幻读。即在一个事务内执行两次范围查询时,第二次查询结果集中出现了第一次没有的“幻影行”(因为在此期间,有其他并发事务插入了新的数据,并提交了)。
总结对比表
| 隔离级别 | 脏读 | 不可重复读 | 幻读 | 并发性能 |
|---|---|---|---|---|
| 读未提交 | 可能 | 可能 | 可能 | 最高 |
| 读已提交 | 不可能 | 可能 | 可能 | 高 |
| 可重复读 | 不可能 | 不可能 | 可能(MySQL InnoDB除外) | 中 |
| 可串行化 | 不可能 | 不可能 | 不可能 | 最低 |
补充说明
不同的数据库默认隔离级别可能不同:
- MySQL: 默认隔离级别是 可重复读。
- Oracle、PostgreSQL: 默认隔离级别通常是 读已提交。

No responses yet