mysql 并发问题_mysql数据库并发问题解决方案?

最近写购物程序时当考虑到并发情况下避免出现超额购买的问题。

想了下面如图1这个流程

9f9134a23506054d6348e22c03e344c3.png

当接到买入请求时更新库存(操作方式如图2)

89f0a13530f6de283be52cc55f78106a.png

操作返回int i若为1则表示库存足够,可以购买。0则表示库存不足。若更新库存成功则开启事务(允许用户进行支付操作,这里会引用外部api,由于事务允许并发,所以不会干扰性能,考虑到支付操作时是针对的单行记录,其他线程不会对此事务造成干扰引起错乱)

问题1:现在不明白的是图2中标注出的那一行,他的返回的原理是什么。内部是否是原子性的实现,若内部实现采用的是类似row_count(),在并发情况下就会出现获取返回条目与实际不符,导致判断出错。

问题2:这种流程还会出现哪些严重的问题。

-----------------------------------------分割线-----------------------------------------------

虽然介绍说事务是原子性的,但并不是真正意义上一个事务执行完才可以执行另一个事务。遇到并发的情况下,多个事务对库存的同时进行读操作后再进行写操作会造成错误。 所以在刚接到请求时更新库存没有用到事务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值