AUTO_RANDOM生成的id过长

【 TiDB 使用环境】生产环境 、测试环境

【 TiDB 版本】v 5.1.0

【遇到的问题:问题现象及影响】生产建表语句使用AUTO_RANDOM(id bigint(20) unsigned NOT NULL AUTO_RANDOM COMMENT ‘自增ID’ ),产生的id 20位,会超出长整型(8字节)的范围,长整型最大只能接受9223372036854775807这么大。),比如只生成15~18位id等?

我记得没错的话,是不支持往下修改的
考虑新建一张表,改一下 id 的大小,导过去(不过注意验证下位数,我好像记得位数设置不一定生效来着)

1 个赞

应该是用了 unsign,因此取值范围到了 2^64(20位数字),如果想要减少一位,可以试试在 Auto_random 后面加(5,63),这个功能 6.3 之后开始支持,可以截断 auto_random 的取值范围。

1 个赞

5.1 没看到这个文档,可能不支持

1 个赞

应该是,我在5.4.3上测试,不支持这种AUTO_RANDOM(3,36)写法,但是6.5是支持的。。。

1 个赞

我们改为bigint(1)和bigint(20)测试都是19位,后期id会不会用爆满,感觉不会,这么多值都是随机的,不是递增的。
1

所以如果你只要 18 位的数字,Auto_random 后面加(5,59)的方案可行么?
这个的含义是,64-59=5 前五位都是 0 用于限制 id 范围,之后的 5 位是按时间打散的 random 值, 最后的 59-5=54 位用于自增。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。