订单号生成策略

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

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

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

使用microtime生成的时间戳生成唯一订单序列号,事实上高并发情况下有一定的重复几率,就连uniqid(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

你可能感兴趣的:(订单号生成策略)