curl -X POST http://192.168.1.181:10080/tables/mydb/reg_20260609/scatter
使用这个curl -scatter打散regions没有变化,如果leader_store_id分布不均,这个能让它自动打散均匀分布吗?我执行后没有变化。
curl -X POST http://192.168.1.181:10080/tables/mydb/reg_20260609/scatter
使用这个curl -scatter打散regions没有变化,如果leader_store_id分布不均,这个能让它自动打散均匀分布吗?我执行后没有变化。
原因:TiDB 的 scatter接口仅打散 Region 数据,不负责均衡 Leader,因此执行后 eader_store_id依旧分布不均、无明显变化。
解决方法参考:等待 PD 的 balance-leader 调度器自动均衡 Leader
从数据库设计角度,这类问题通常可以归结为数据模型和访问模式的匹配度问题。具体需要看你的 schema 和查询模式才能给出更针对性的建议。
Region热点用Key Visualizer定位后针对性优化。
有时候热力图是不准的。从grafana监控里看host region分布,几个节点都基本上均匀分布,但CPU总是那个leader节点高。
可以使用 Region 副本打散(scatter 接口作用) 或
Leader 均衡(PD 调度器负责)
Leader 靠 PD 的balance-leader调度器自动均衡;想提速可调大leader-schedule-limit配额,或用 pd-ctl 手动迁 Leader。
该 API能同时打散 Region 副本与均衡 Leader,执行无变化是存在阻塞条件,并非功能不生效。
scatter 只对指定表做一次性打散调度,且受 PD 调度限额约束——若 region-schedule-limit、leader-schedule-limit 很低或已有大量算子排队,scatter 会不生效或很慢。先 pd-ctl config show 看调度 limit、pd-ctl operator show 看是否有算子排队、以及各 store limit 是否为 0。若只是 leader 分布不均,更直接的是确认 balance-leader-scheduler 已开启并调高限额,让 PD 持续均衡,而不是靠一次 scatter。scatter 更适合新表预分裂后打散数据 region,对已有数据的 leader 均衡效果有限。