什么是脏读、幻读、不可重复读?
脏读、幻读和不可重复读是数据库事务隔离级别中的三种常见问题。
- 脏读(Dirty Reads):事务A读取到了事务B已经修改但尚未提交的数据。
- 不可重读(Non-Repeatable Reads):事务A内部的相同查询语句在不同时刻读出的结果不一致。
- 幻读(Phantom Reads):事务A读取到了事务B提交的新增数据。
id |
age |
1 |
18 |
隔离级别 |
并发问题 |
适用场景 |
隔离级别从上往下,由低到高。 |
读未提交(read-uncommitted) |
可能会导致脏读、幻读或不可重复读 |
并发性要求不高 |
|
读已提交(read-committed) |
可能会导致幻读或不可重复读 |
并发性要求较高 |
|
可重复读(repeatable-read) |
可能会导致幻读 |
数据一致性要求较高 |
|
可串行化(serializable) |
不会产生干扰 |
数据一致性要求非常高 |
