数据库的脏读,可重复读,以及幻读的问题

数据库的脏读,可重复读,以及幻读的问题产生于 数据库事务的隔离特性之一 --------------------------------隔离性。

那么,什么是数据库的隔离性,即多个并发的事务之间相互隔离。

数据库的设计者认为,根据不同的事务的并发量可以使用不同的方法解决不同的问题。

并发情况问题一:脏读,

tansaction A 在select操作,   同时tranction B在频繁的update操作,会导致A的查询结果变化,而使得接下来的操作发生变化

解决方法:设置数据库的隔离级别为read commited即可以解决,A的 select  必须在 B 的update进行commit之后 ,select到   持久化到数据的数据。   

       

并发情况问题二:可重复度读

tranction A频繁的进行select操作,同时transaction B在update操作, transaction A 的最终查询结果,依赖于前几次的查询,而B的操作会在A查询时update并且commit·,改变之前查询过的数据,导致最终查询数据不正确

解决方法:设置数据库的隔离级别为repeatable read,让A select  不到 B的update并且commit操作,

 

 

并发情况问题三:幻读

tranction A 进行 insert操作,tranction B 在A之前进行insert 操作,A查询时,看不到B的insert操作后的数据,再插入会报相同主键值

解决方法:设置数据库的隔离级别为serilizable,让B阻塞不能insert,直到A select,insert 之后,B马上进入insert

 

                                                                              

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值