数据并发存在的问题

1.脏读

A事务读取到B事务尚未提交的更改数据,并在这个数据的基础上进行操作。如果恰巧B事务回滚,那么A事务读到的数据根本是不被承认的。

时间转账事务A转账事务B
T1开始事务
T2开始事务
T3查询账户余额为1000
T4取出500,余额改为500
T5查询账户余额为500
T6撤销事务,余额恢复1000
T7汇入100,把余额改为600
T8提交事务

2.不可重复读

不可重复读是指A事务读取了B事务已经提交的更改数据。假设A在取款事务过程中,B往账户转了100元,A两次读取账户的余额发生不一致。

时间取款事务A转账事务B
T1开始事务
T2开始事务
T3查询账户余额为1000
T4查询账户余额为1000
T5取出100,把余额改为900
T6提交事务
T7查询账户余额为900(和T4查询的不一致)

3.幻想读

A事务读取到B事务提交的新增数据,这时A事务将出现幻想读的问题。幻想读一般发生在计算统计数据的事务中。

时间统计金额事务A转账事务B
T1开始事务
T2开始事务
T3统计总存款数为1000
T4新增一个存款账户,存入100
T5提交事务
T6统计总存款数为1100

4.第一类丢失更新

A事务撤销时,把已经提交的B事务的更新数据覆盖了。

时间取款事务A转账事务B
T1开始事务
T2开始事务
T3查询账户余额为1000
T4查询账户余额为1000
T5汇入100,把余额改为1100
T6提交事务
T7取出100,把余额改为900
T8撤销事务
T9余额恢复为1000

5.第二类丢失更新

A事务覆盖B事务已经提交的数据,造成B事务所做的操作丢失。

时间转账事务A取款事务B
T1开始事务
T2开始事务
T3查询账户余额为1000
T4查询账户余额为1000
T5取出100,把余额改为900
T6提交事务
T7汇入100
T8提交事务
T9把余额改为1100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值