当前位置:网站首页>Load Base Split 使用文档
Load Base Split 使用文档
2022-07-30 14:50:00 【添香小铺】
Load Base Split 是 TiKV 在 4.0 版本引入的特性,旨在解决 Region 访问分布不均匀造成的热点问题,比如小表的全表扫描。
场景描述
在 TiDB 中,当流量集中在某些节点时很容易形成热点。PD 会尝试通过调度 Hot Region,尽可能让这些 Hot Region 均匀分布在各个节点上,以求获得更好的性能。
但是 PD 的调度的最小粒度是 Region。如果集群的热点数目少于节点数目,或者说存在某几个热点流量远高于其他 Region,对 PD 的热点调度来说,能做到的也只是让热点从一个节点转移到另一个节点,而无法让整个集群承担负载。
这种场景在读请求居多的 workload 中尤为常见。例如对小表的全表扫描和索引查找,或者是对一些字段的频繁访问。
在此之前解决此类问题的办法是手动输入命令去拆分一个或几个热点 Region,但是这样的操作存在以下两个问题:
- 均匀拆分 Region 并不一定是最好的选择,请求可能集中在某几个 Key 上,即使均匀拆分后热点可能仍然集中在其中一个 Region 上,可能需要经过多次均匀拆分才能达到目标。
- 人工介入不够及时和易用。
实现原理
Load Base Split 会基于统计信息自动拆分 Region。通过统计去识别出那些读流量在 10s 内持续超过阈值的 Region,并在合适的位置将这些 Region 拆分。在选择拆分的位置时,会尽可能平衡拆分后两个 Region 的访问量,并尽量避免跨 Region 的访问。
Load Base Split 后的 Region 不会被迅速 Merge。一方面,PD 的 MergeChecker 会跳过 hot Region ,另一方面 PD 也会针对心跳信息中的 QPS去进行判断,避免 Merge 两个 QPS 很高的 Region。
使用方法
目前的 Load Base Split 的控制参数为 split.qps-threshold(QPS 阈值)和 split.byte-threshold(流量阈值)。如果连续 10s 内,某个 Region 每秒的各类读请求之和都超过 QPS 阈值或流量阈值,那么就对此 Region 进行拆分。
目前默认开启 Load Base Split,但配置相对保守,split.qps-threshold 默认为 3000,split.byte-threshold 默认为 30MB/s。如果想要关闭这个功能,将这两个阈值全部都调到足够高即可。
目前有两种办法修改配置:
通过 SQL 语句修改,例如:
set config tikv split.qps-threshold=3000通过 TiKV 修改,例如:
curl -X POST "http://ip:status_port/config" -H "accept: application/json" -d '{"split.qps-threshold":"3000"}'
同理,目前也有两种办法查看配置:
通过 SQL 查看,例如:
show config where type='tikv' and name like '%split.qps-threshold%'通过 TiKV 查看,例如:
curl "http://ip:status_port/config"
注意
从 v4.0.0-rc.2 起可以使用 SQL 语句来修改和查看配置。
边栏推荐
- 1222. 可以攻击国王的皇后-力扣双百代码
- GeoServer + openlayers
- Huawei issues another summoning order for "Genius Boys"!He, who had given up an annual salary of 3.6 million, also made his debut
- Fink异步IO的实战(关联维表)
- 难道Redis真的变慢了吗?
- Could not acquire management access for administration
- 极验深知v2分析
- In-depth analysis of Kubernetes application management
- DDS Arbitrary Waveform Output Based on FPGA
- 分布式前修课:MySQL实现分布式锁
猜你喜欢

In-depth analysis of Kubernetes application management

元宇宙的前景及四大赛道

惊艳!京东T8纯手码的Redis核心原理手册,基础与源码齐下

MongoDB starts an error Process: 29784 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)

存储器映射、位带操作

【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释

golang modules初始化项目

How is the B+ tree index page size determined?

Lock wait timeout exceeded solution

ISELED---氛围灯方案的新选择
随机推荐
QIIME2得到PICRUSt2结果后如何分析
1222. 可以攻击国王的皇后-力扣双百代码
【重磅来袭】教你如何在RGBD三维重建中获取高质量模型纹理
如何做好技术选型
EST综述:eDNA的多种状态以及在水环境中持久性的认知
本地事务与分布式事务
1700. 无法吃午餐的学生数量
嵌入式开发:嵌入式基础知识——正确启动固件项目的 10 条建议
Extremely Knowing v2 Analysis
[Cloud Native] Service Industry Case - Solutions for Unpredictable Concurrency Scenarios
【喂到嘴边了的模块】准备徒手撸GUI?用Arm-2D三分钟就够了
ECCV2022 | FPN错位对齐,实现高效半监督目标检测 (PseCo)
How do luxury giants such as GUCCI and LV deploy the metaverse, should other brands keep up?
TensorFlow自定义训练函数
Packages - Notes
Flink本地UI运行
Metaverse Post Office AI space-themed series of digital collections will be launched at 10:00 on July 30th "Yuanyou Digital Collection"
In-depth analysis of Kubernetes application management
惊艳!京东T8纯手码的Redis核心原理手册,基础与源码齐下
华为云重磅发布开源软件治理服务——软件成分分析