商品订单问题处理
1.商品订单涉及到多张表修改,所以关于订单整个sql操作是在事务层面进行处理;
2.有个问题在于订单高并发的情况下,你先查询库存,再减库存的话,可能你查库存的时候别人已经减了库存,数据会有错误。
此时解决方案有三种:1.对于查询库存再减库存的操作应该在代码上加个线程锁;2.使用任务队列celery执行串行任务,启动只有一个进程的celery,让订单一个一个进行处理;3.使用乐观锁,在更新的时候判断此时的库存是否是之前查询出的库存,如果相同,表示没人修改,可以更新库存,否则表示别人抢过资源,不再执行库存更新,这句sql不执行的话整个事务就会回滚,下单失败。不会导致数据错误。
update tb_sku set stock=2 where id=1 and stock=7;
版权声明:本文为weiwei200原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。