怎么生成唯一的订单号

时间:2026-02-14 16:10:31

1、方法: 直接获取数据库的自增主键ID即可


2、优势:无需编码

缺陷:

大表不能做水平分表,否则插入删除时容易出现问题

高并发下插入数据需要加入事务机制

在业务操作父、子表(关联表)插入时,先要插入父表,再插入子表

1、生成方法:

当前时间戳+随机数,例如当前时间为20200401140903,6位随机数:436273,则生成的ID=20200401140903436273

入库前需要检测一下该ID是否已存在.这个在高并发下会有重复的可能

2、优势:编码简单

缺陷:随机数存在重复问题,即使在相同的时间戳下。每次插入数据库前需要校验下是否已经存在相同的数值。

1、    例如:S+yyMMddHHmmss+Math.abs(memberId.hashCode());[说明memberId为uuid的,String的hashCode唯一,而hashcode可能为负数]

2、    优势:同一时间,一个用户不会存在两张订单


    缺陷:会员ID也会透露运营数据,鸡生蛋,蛋生鸡的问题

1、方法:直接调用GUID/UUID生成方法.

2、优势:简单


劣势:用户不友好,索引关联效率较低。
UUID全称:Universally Unique Identifier,即通用唯一识别码。
UUID是由一组32位数的16进制数字所构成,所以理论上UUID的总数为16^32=2^128,约等于3.4*10^38。也就是每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。
UUID的标准形式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,如:550e8400-e19b-41d4-a716-446655440000。
UUID的作用
UUID是让分布式系统中的所有元素都能有唯一的辨识信息,而不要要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其他人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LULS加密分区、GNOME、KDE、Mac OS X等等。
UUID的组成
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
UUID由以下几部分的组合
当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒后又生成了一个UUID,则第一个部分不同,其余相同。
时钟序列。
全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果字符串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Ujique Identifiers)
© 2026 智德知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com