从 MySQL 迁移到 TiDB 后,发现自增主键表写入性能出现热点,和 MySQL 行为有什么本质区别?该如何优化?

大佬们从 MySQL 迁移到 TiDB 后,我发现自增主键表写入性能出现热点,这和 MySQL 行为有什么本质区别呀?我该怎么优化?

MySQL vs TiDB:自增主键的本质区别

  • 自增主键 = 顺序写入,数据总是追加到当前页末尾
  • 优点:顺序 IO、页分裂少、写入极快,是 MySQL 最佳实践
  • 问题:只有一个节点,无所谓 “热点”,上限就是单机性能

TiDB(分布式 Range 分片)

  • 数据按主键范围分片(Region),每个 Region 对应一个 TiKV 节点
  • 自增主键 → RowID 单调递增 → 所有新数据只往最后一个 Region
  • Region 写满分裂 → 新 Region 继续单点写入 → 永久热点、无法分散
  • 结果:写入退化成单机性能,集群其他节点空闲,QPS 上不去、延迟高

MySQL 自增是优点,TiDB 自增是写入热点根源

1 个赞

Raft多数派写入机制决定了延迟受网络影响大。

  1. 雪花算法和INTO_RANDOM使用一种即可?
  2. 雪花算法不能和AUTO_INCREMENT一起使用,导致冲突呢?

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