事务并发下的持久层处理

1.事务并发处理引发的问题

事务并发访问数据库会有如下几种情况发生:

①第一类丢失更新:撤消一个事务时,把其它事务已提交的更新的数据覆盖了。
②脏读:一个事务读到另一个事务未提交的更新数据。
③幻读:一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行。
④不可重复读:一个事务两次读同一行数据,可是这两次读到的数据不一样。
⑤第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的更新数据。

2.情况分析

第一种情况:第一类丢失更新:撤消一个事务时,把其它事务已提交的更新的数据覆盖了。

事务具有四个属性(ACID-A,原子性;C,一致性;I,隔离性;D,永久性),只要数据库都支持,事务之间是不可能交叉影响的,事务具有隔离性,所以不用考虑。

第二种情况:对于第二种情况,一般情况下数据库

会有一个默认的隔离级别,通过锁来实现,也不会出现,比如oracle就不支持脏读。第三种情况,业务上很少

出现,比如你要进行一些查询,一般很少查了一遍,接着又查了一遍,即便是有这种情况也不会带来“异常”后果,

多出的数据肯定是有新的业务行为发生了,所以一般也不用处理这种问题。所以一般处理并发带来的问题就是指的第

④⑤中情况,简单说就是对于同一条数据,多个事务你改我也改,或者说你改着我读


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值