TiDB 写入热点问题:自增主键引发的 Region 热点现象及优化策略

  1. 针对自增主键带来的写入热点,TiDB 提供了哪些原生的表结构优化方案(例如 AUTO_RANDOMSHARD_ROW_ID_BITS )?它们各自的实现原理和适用场景是什么?
  2. 对于必须保留时间顺序的业务场景,如何通过组合索引或分区表(Partition Table)来打散写入压力?
  3. 在无法修改表结构的前提下,如何通过运维手段(如手动 Split Region)或架构调整(如引入 TiFlash 分担读压力、扩容节点)来缓解热点?

TiDB 当表没有指定主键、或主键不是整数类型时,会自动生成隐式 _tidb_rowid 作为行唯一标识,默认自增顺序生成,写入全部落在末尾 Region,形成热点。 SHARD_ROW_ID_BITS=N 会在 _tidb_rowid 高位填充 N 位随机分片值:

  1. 行 ID 结构:N位随机前缀 + 自增序列后缀
  2. 插入数据时随机分配分片前缀,数据均匀分散到不同 Region;
  3. 配套参数 PRE_SPLIT_REGIONS,建表时提前预分裂对应数量 Region,上线直接打散流量,避免写入挤压后再分裂。

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