如何生成唯一主键 1.利用数据库自增ID,特点是趋势递增,全局唯一,需要保证高可用环境下,使用不同初始值+相同步长,但是扩展性有限制 2.利用单点服务串行化生成递增ID,特点是全局递增,全局唯一,例如存储在redis中,并利用redis原子操作生成,性能瓶颈取决于redis读写性能 3.每台机器自己生成UUID,特点是无序,全局唯一,一般是字符串的数据类型使得检索低效,无序的特性使得插入低效 4.每台主机获取当前的毫秒数,特点是趋势递增,可能出现全局不唯一,不推荐 5.参考snowflake算法,41bit毫秒数+10bit机器序号+12bit毫秒内序列号,特点是趋势递增,全局唯一 根据业务权衡选取2或者5,其次是1,其次是3,最后是4 UUID的缺点 无序,全局唯一,一般是字符串的数据类型使得检索低效,无序的特性使得插入低效 另外附上: [UUID如何保证唯一性?](https://zhuanlan.zhihu.com/p/70375430) [UUID是如何保证唯一性的?](https://www.zhihu.com/question/34876910)
点赞 评论

相关推荐

牛客网
牛客企业服务