雪花算法-数据量少尽量不取模2或4

本文探讨了雪花算法在生成唯一ID时可能出现的问题,特别是在数据量较小或TPS(每秒事务处理量)较低的情况下,由于同一毫秒内可能只分配一个ID,导致ID为2和4的倍数,取模运算时会偏移到0区。因此,建议在使用雪花算法作为分片键时避免取模2或4,以防止数据分布不均。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

雪花算法的坑

雪花算法尽量不要模2或4 会导致id偏移到0区

雪花算法组成

正数统一为0|

时间戳0-0101-0000-1000-0010-1101-0101-0101-1010-1111-0010|

机房01100|

机器00111|

毫秒值碰撞0000-0000-0000 

最后12位表示0位   (Math.pow(2, 12) - 1)=4095 一共4096个数

5位datacenterId和5位workerId表示各 0-31 一共32个数

存在问题

当分配id速率小时,同一毫秒只分配一个id则最后12位都是0,所以不存在2^0,故而雪花生成的id是2,4的倍数,取模偏移0区
数据量少时或者tps低时尽量避免取模2,4,如分片键
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值