大佬们从 MySQL 迁移到 TiDB 后,我发现自增主键表写入性能出现热点,这和 MySQL 行为有什么本质区别呀?我该怎么优化?
MySQL vs TiDB:自增主键的本质区别
- 自增主键 = 顺序写入,数据总是追加到当前页末尾
- 优点:顺序 IO、页分裂少、写入极快,是 MySQL 最佳实践
- 问题:只有一个节点,无所谓 “热点”,上限就是单机性能
TiDB(分布式 Range 分片)
- 数据按主键范围分片(Region),每个 Region 对应一个 TiKV 节点
- 自增主键 → RowID 单调递增 → 所有新数据只往最后一个 Region写
- Region 写满分裂 → 新 Region 继续单点写入 → 永久热点、无法分散
- 结果:写入退化成单机性能,集群其他节点空闲,QPS 上不去、延迟高
MySQL 自增是优点,TiDB 自增是写入热点根源。
1 个赞
Raft多数派写入机制决定了延迟受网络影响大。
- 雪花算法和INTO_RANDOM使用一种即可?
- 雪花算法不能和AUTO_INCREMENT一起使用,导致冲突呢?
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。