tidb 表中 auto_random 的字段的分片位有什么用?

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.0
【资源配置】5 个 TiKV 节点
【附件:截图/日志/监控】
tidb 表中 auto_random 的字段的分片位有什么用?
不太明白其具体作用是什么,能有大佬解释一下吗?
能在创表之后数据写入时打散 id 生成?使数据均匀的分布在 TiKV 节点上?如果是那为什么能做到这个呢,是因为 id 生成算法受其影响吗?求助

你如果用 AUTO_INCREMENT自动增长的话,写热点可能只在1个region上, 通过auto_random 的字段的分片位分片的话,写热点会由多个region共同承担
具体见这里
SHARD_ROW_ID_BITS | PingCAP 文档中心

1 个赞

那比如我这里有 5 个 TiKV节点的话,我设置分片位应该是 2 还是 3 呢,2 的话会使一个节点没有负载到吗?3 的话又会怎么样呢

5个tikv节点的话,设2或3都行

有个不同的观点:虽然随机唯一可以解决热点问题,但是region的分隔是根据range进行的。 对总体性能有提升不??后期的合并影响大吗??产生的值随机值短时间内会很大不? 比如 1 10000 100000 999999跨度很大的值

性能有提升减少了热点,只有确定会有大量数据写入才需要打散,所以基本不会合并


这个文档中的两处感觉有点歧义,能给解释下吗大佬

没啥歧义吧?第一句话的意思,如果没多副本,那每个region只能存放在一个节点上,第二句话的意思,就是实际是有多副本的,那每个region除了leader存放在一个节点上之外,其他的follower都存放在其他节点上啊

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