务场景,高并发,多用户操作
使用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 同学的建议,添加个每天清表的事件
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
order_seq:
pkid | autoincrement
insert into order_seq set pkid=null;
得到返回的主键为(当天订单数据+1)部分
每天对pkid做清0
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。