炼气期DBA
(Ti D Ber Ic01xw Vm)
1
万能的tidb社区,请问如何手动调整或分布 TiDB 集群中的 Region,目前有一台服务器tikv负载非常高,怀疑有热点问题。
热点问题就是tidb bug引起,按正常这种分布式数据库,代码就应该在建表时自动打散region.
而不应该通过人为的在创建表时候添加打散SHARD_ROW_ID_BITS = 4参数,开发人员不知道存在这样的问题,没有添加参数,然后就引起热点性能问题,最主要的是成千个表,不可能一个一个表都这么干,开发人员都是有工具创建表,工具根本就没有SHARD_ROW_ID_BITS = 4参数。
克里克里克
(Ti D Ber H052ej9m)
2
首先需要确定是热点问题造成的。
正常情况下,新版本有一定的自动调节region的能力。
如果需要手动打散,可以先通过Dashboard热力图或其它方式确定热点表,考虑使用split打散观察。
Split Region 使用文档 | TiDB 社区版
炼气期DBA
(Ti D Ber Ic01xw Vm)
3
Dashboard热力图看不懂,简单就是天书,完全不知道什么叫亮和不亮,感觉只要有光都是亮的。
既然有热点,难道就不能在监控里写上某些表存在热点吗?这才叫人性化监控,而不是让我们看图去猜是哪几个表。
比如说下面这个图,谁看得出来是哪里存在热点呢?
克里克里克
(Ti D Ber H052ej9m)
4
可以查询热点表:information_schema.tidb_hot_regions
或者pdctl看看hot region
wbslxw
(Ti D Ber Cl S0j Eng)
6
这不是 TiDB 的 bug,是 “默认行为 + 主键 / 行 ID 单调递增” 导致的设计取舍;TiDB 确实做不到开箱即用全自动打散,必须在建表 / 表结构层面配合,或事后批量补救。