如何生成分库分表的全局id?

分库分表的id生成方式

第一种,维护一个含有自增主键的单表。

创建一个全局唯一的含有自增主键的单表。
在操作分库分表之前,先将数据插入到单表里,生成主键,再操作分库分表。
在这里插入图片描述
优点:简单
缺点:会有性能瓶颈,比如不支持高并发操作。

第二种 uuid

UUID.randomUUID().toString();
在这里插入图片描述
优点:简单易用,一行代码可以保证这个数据的唯一性。
缺点:太长了,并不适合做主键。

第三种 业务字段 + 系统当前时间

如生成订单号:时间戳 + 用户id + 业务id

第四种 snowflake

64位id

id 表示:
0 10111001010011001000101001111111011011110 00001 00001 000000000001
2020-06-09 20:36:29 第一个机房的第一台机器在这一毫秒内的第一个请求。

1bit41bit5bit5bit12bit
含义1为负数,0为正数时间戳(单位毫秒)对应的二进制机房id机器id当前毫秒内该机房该机器产生的请求次数
举例01591706189534 对应的二进制:101110010100110010001010011111110110111100000100001000000000001

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值