AUTO_RANDOM的主键在Tikv的节点扩缩容后会发生改变吗

AUTO_RANDOM的主键在Tikv的节点扩缩容后会发生改变吗?
准备给节点扩容,但因为有表用AUTO_RANDOM的id做了关联,所有担心这个问题。

已有数据是不会影响的,tikv扩缩容后,数据移动的单位式region数据内容不会变的

完全不会影响,数据写入后不会随意改变的

已经有的不会变化的

不会变化,如果写入了还会变,就太不离奇了。

你问的不会是自增主键吧,自增主键应该会有一部分空缺,因为自增值是提前分配的,缩容了,应该会少了一段。

有影响也没影响,本身就是随机无序的。
auto_random key 的一个原理大概如下:
Sign bit - 固定为 0 的符号位,即 AutoRandom 的分配总是非负数,长度为 1。
Shard bits - 生成随机数对 ID 值域打散,该段长度 AutoRandom 后面的括号中指定,默认为 5。根据statts做hash
Increment bits - 自增位,用于保证 ID 的唯一性以及单语句多value Insert 、显示事务内多个insert时,分配的连续性,自增部分同样受auto_id_cache影响(和auto_increment一样)。
三段的示意图如下:

不会变化的

AUTO_RANDOM 原有数据不受影响,收缩服务器中的内存部分应该会丢失,其它没有影响

AUTO_RANDOM 主键在 TikV 的节点扩缩容后通常不会发生改变。在 TiDB 中,AUTO_RANDOM 是一种主键生成策略,用于在表没有明确指定主键时自动生成一个唯一的主键。这个主键的生成是依赖数据库的内部机制,并且是保证在同一个数据库实例中全局唯一的。
当你在 TikV 节点进行扩缩容时,你实际上是在改变物理存储节点的数量,而不会影响到数据库实例内部的主键生成机制。AUTO_RANDOM 主键的生成不受物理存储节点数量的影响,因此,在扩缩容操作后,原有表中的 AUTO_RANDOM 主键不会发生改变。
但是,在扩缩容操作过程中,需要确保数据迁移的完整性和一致性。在扩缩容操作期间,TiDB 集群会自动进行数据迁移以平衡各个节点的负载。这个过程中,数据的读写操作是可以正常进行的,因为 TiDB 设计了故障转移和数据复制机制来保证在扩缩容过程中的数据一致性。
总的来说,AUTO_RANDOM 主键在 TikV 节点扩缩容后不会改变,你可以放心进行扩缩容操作。但需要注意的是,扩缩容操作可能会影响到集群的性能,所以在操作前应当做好计划,选择合适的时机进行。

已经存在的不会再变化了

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