丢失修改
事务1和事务2读取同一数据后,事务1对数据进行修改,事务2的提交破环了事务1的提交,导致事务1对数据的修改丢失。
假设A为4
时间序列 | 事务1 | 事务2 |
---|---|---|
1 | 读取A(4) | |
2 | 读取A(4) | |
3 | A=A+1(5) | |
4 | A=A+1(5) | |
4 | 提交A(5) | |
5 | 提交A(5) |
最终A的结果是5
事务1的修改并没有起作用
不可重复读
1. 事务1读取数据后,事务2对数据进行了修改并提交,事务1再次读取数据时发生变化。
时间序列 | 事务1 | 事务2 |
---|---|---|
1 | 读取A(4) | |
2 | 读取A(4) | |
3 | A=3 | |
4 | 提交A(3) | |
5 | 读取A(3) |
事务1连续读取的数据不一致
幻影现象
2. 事务1读取数据后,事务2对数据删除了部分记录,事务1再次读取数据时某些记录丢失了。
3. 事务1读取数据后,事务2对数据添加了部分记录,事务1再次读取数据发现多了一些记录。
这里的数据可以是表,记录就是行
读脏数据
事务1读取数据之后,对数据修改并提交,但由于一些原因需要撤销修改。在事务1撤销操作之前,事务2读取了数据。
时间序列 | 事务1 | 事务2 |
---|---|---|
1 | 读取A(4) | |
2 | A=A+1(5) | |
3 | 提交A(5) | |
4 | 读取A(5) | |
5 | 撤销修改 A(4) |
事务2读取的数据与数据库不一致,读到了错误的数据
原因
数据库不一致的原因:并发操作破环了事务的隔离性,事务间相互干扰。