- 【TiDB 版本】:V3.0.5
- 【问题描述】:查询系统信息表TIKV_REGION_STATUS,发现keys为0,但是region的size特别大
我理解的是keys为0的应该size也为0,或者很小比如1兆 2兆,这些就是作为empty-region存在。
为什么查询系统统计信息会出现这种落差?
我理解的是keys为0的应该size也为0,或者很小比如1兆 2兆,这些就是作为empty-region存在。
为什么查询系统统计信息会出现这种落差?
由于 approximate_size 和 approximate_keys 是估算值,确实有可能存在误差
目前统计 region size,delete entries 没有计算在内(https://github.com/tikv/tikv/issues/6161) ,也可能导致 size 结果不准;可以确认这些 region 所属的表或索引,以及表上做过什么操作
尝试调整 region merge 阈值,调小 max-merge-region-keys 调大 max-merge-region-size,等 region merge 后再查看 region 统计信息
比如 : max-merge-region-keys 0 max-merge-region-size 100
这样来合并这些统计不准确的?
另外这两个merge的配置是或还是和?
设置为 0 是关闭 merge,可以设置 max-merge-region-keys 10 和 max-merge-region-size 150
这两个配置是和的关系,即同时满足条件的 region 才能 merge
3.0.5 版本默认同一个表内的 region 才可以 merge,开启跨表 region merge 需要设置参数
TiKV: split-region-on-table 设为 false,该参数修改后需要重启 TiKV 生效
PD: namespace-classifier 设为 default ,该参数修改后需要重启 PD 生效
还可以尝试手动 merge region,如
operator add merge-region 1 2 // 将 Region 1 与 Region 2 合并