订单号生成策略

电商交易系统高并发分布式订单号生成策略
https://www.cnblogs.com/huacw/p/7087535.html

https://www.oschina.net/question/113490_223531

业务场景,高并发,多用户操作

使用microtime生成的时间戳生成唯一订单序列号,事实上高并发情况下有一定的重复几率,就连uniqid(more_entropy参数为false)函数生成的序列号都可能有重复的可能(真坑爹),而more_entropy设置为true的话返回的序列号又太长了

我想用:业务号+年月日+(当天订单数据+1)+用户ID

可是,光查询订单数量这一步就耗时210毫秒左右,太耗资源了

SELECT COUNT(nid)
  FROM `node`
 WHERE type= 'mobile_number'
   AND DATE_FORMAT(FROM_UNIXTIME(created), '%Y-%m-%d')= DATE_FORMAT(NOW(), '%Y-%m-%d')

请问,大家是如何处理这一问题的


暂时使用@_Yud 同学的建议,添加个每天清表的事件

CREATE TABLE `order_seq` (
  `pkid` int(4) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`pkid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

drop event `com`.`truncate_1`;
CREATE EVENT `com`.`truncate_1` 
  ON SCHEDULE EVERY 1 DAY 
  STARTS  '2015-01-21 00:00:00'  ON COMPLETION NOT PRESERVE  
  ENABLE  
  COMMENT 'order_seq'  
  DO begin

/**event body**/
truncate table order_seq;

end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容