【学习SQL数据库】并发操作引起的数据库不一致

丢失修改

事务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读取的数据与数据库不一致,读到了错误的数据

原因

数据库不一致的原因:并发操作破环了事务的隔离性,事务间相互干扰。

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/106240864