AUTO_RANDOM为主键应该如何PRESPLIT表

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.3
在数据迁移的场景,有很多表源库没有主键,TIDB由于规范要求必须主键,为了省事,开发者向这些表添加了一些AUTO_RANDOM类型的ID作为主键。大部分是小表,但是也有大表。
数据量是已知的,有什么办法可以提前打散数据?以便迁移时候不需要到达阈值后再联机做分裂?
AUTO_RANDOM值里面包含了时间,感觉不好做RANGE和LIST的预判。
TiDB 高并发写入场景最佳实践 | PingCAP 文档中心
问题二

建表语句增加 pre_spli_regions,插入的语句 id 值指定 为 null,是不是就可以了?

这个怎么理解?就是说开发后来还是在上游表加了id,但是自己用雪花/uuid生成了一个不重复,业务也不相关的做了主键?

AUTO_RANDOM可以帮助解决传统自增主键在分布式环境下可能遇到的全局唯一性和热点问题。需要考虑的根据表规模确定分片数

mark,学习

自问自答了,找到一篇好文章:
专栏 - 关于auto_random的几个知识点 | TiDB 社区
跟大家一起分享一下。

1 个赞

如果在建表语句中,主键列设置了AUTO_RANDOM,这种应该会自动打散了吧,
聚簇表就是采用AUTO_RANDOM来自动打散,
非聚簇表就是采用SHARD_ROW_ID_BITS自动打散。

这么看还不能拼那种一个insert多个value的特大语句。

当insert 多个value时 会是一段连续递增的值