公司的用户数突然并发数激增,紧急处理,添加了服务的带宽输出,内存等一些服务器操作,解决了使产品正常使用。
发现一天3000多单的数据里,有很多不同的订单,但是订单号却相同,查了半天,获取订单号的接口没有问题,创建订单的接口也没有问题,
问题就出现在高并发下:
1、订单号是根据获取当天最大的订单号+1,作为参数插入数据库,生成订单,
2、在获取订单号到生成订单有一定的时间差,大概也就是几毫秒的时间差,但是在高并发下,就有可能同时获取到相同的订单号,
找到问题了,解决办法:
1、订单表中给ordre_sn订单号这个字段加上唯一索引,(数据库一开始设计的并不好)
2、在产生相同订单号的时候,将order_sn+1后再次插入数据库,如果还是有相同的订单号,则不在+1重复插入(其实这个操作可以省掉,直接报系统繁忙就可以了)
还有什么好的办法解决这类问题吗?求教。
上一篇:高并发情况下如何保证订单号不重复
下一篇:高德地图判断点是否在圆或多边形内