为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

冷魇 2017-10-01 22:22:32

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

想了下面如图1这个流程

http://img1.sycdn.imooc.com/59d0f6cc000120cd09680245.jpg

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

http://img3.sycdn.imooc.com/59d0f6f00001e71107590222.jpg

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

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

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


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

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

查看完整描述

1 回答

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信