数据库并发事务可能导致的问题

读脏

例如我对事件1进行insert操作,insert into demo vaules(1,‘sb’)

此时事件还未提交。这时我进行了查询。select * from demo where name = 'sb'

我得到了(1,'sb')

那么此时我读取了未提交的事务操作的记录,这个就叫做读脏

不可重复读

举例,我首先对一条记录进行了查询,即事件1:select name from demo where id = '1'

我得到了('sb')

那么我此时再运行事件2并且提交,update demo set name = 'dsb' where id = '1'

此时再回到事件1 : select name from demo where id = '1'

('dsb')

即,事务2对事务1进行了影响,导致一个事务内相同的查询,得出了不同的结果

幻读

事务1的事件是,查询该表中有无该商品,如果没有则加一条。商品sku是唯一的,添加重复的报错

那么事件1执行,select * from goods where sku = 'xxx-yyy-27'

结果显示null

那么此时另外一个事件2,insert into goods  values('xxx-yyy-27')

这时事件1进行插入,会提示

Error:duplicate key!

也就是说,已提交的事务2对事务1产生了影响,导致事件1查询结果为null,实际的值在他查询过后被插入了,

所以事件1再进行插入的时候便会报错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值