电商交易系统高并发分布式订单号生成策略
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