标签:insert 库存 优缺点 用户 订单 付款 下单 电商
没有哪种好,最关键是看自己的业务适合哪种
1、下单减库存。生成一个订单,库存减1 。但其实用户并没有完成付款,没有走完订单流程
这种情况,用户量大的时候,会出现恶意下单情况,即只下单,不付款。因此很多电商平台都会设置一个订单保留时间,超过时间,订单失效,库存返还
这种情况还会有一种,库存不多的时候(比如促销),实际意义上是有库存。但是因为一小部分人的订单没有完成,因此其他用户会看到已售罄的情况,会在某个时间点阻止其他用户购买。淘宝这点做得蛮好的,当有其他用户未付款时,淘宝会提示“其他用户正在付款中”
2、付款减库存。一个订单付完款后才减去相应的库存
这种处理方式基本能避免掉1内的所有问题,但也会诞生新的问题。即“超卖”,用户拍下时有货,付款后没货,这种体验会很差。
具体实践时使用哪种方式,就看具体情况了。
有人评价:一般第一种。第二种遇到热卖商品时,会形成大量超卖订单。
3、订单系统:先减库存还是先下订单
答案是先下单再减库存
以 MySQL 作为 DB 为例,下订单就是 insert,在使用索引的情况下,insert 插入是行级锁,支持每秒 4W 的并发。减库存就是 update 操作,命中索引时也是行级锁,但是这是个独占锁,所有的操作都要等待前一个释放锁后才能继续 update。
问题就在这里,根据 MySQL 两段锁协议,我们应该把热点操作放到离 commit 近的位置,这样可以减少行级锁的持有时间!自然处理效率就更好一些。
事务begin —> insert —> 其他操作 —> update —> 事务commit
标签:insert,库存,优缺点,用户,订单,付款,下单,电商 来源: https://blog.csdn.net/lastinglate/article/details/117902182
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。