空region为什么没自动合并

【 TiDB 使用环境】测试/ Poc
【 TiDB 版本】7.5.1


请问空region为什么没自动合并呢?

如果没超过split-merge-interval,那是不会合并的。检查下你的这个配置。
还有max-merge-region-size和max-merge-region-keys merge-schedule-limit 这些。看看都正常么。
还有 enable-cross-table-merge 如果是false的话,你有空表就是空region,也不会merge

都是默认值,没调整
schedule.split-merge-interval是1h0m0s
schedule.max-merge-region-size是20
schedule.max-merge-region-keys是200000
schedule.enable-cross-table-merge是true
那是还没触发merge的条件吗

1 个赞

需要看一下配置

拉一下时间线,是不是没有到时间点

这个状态已经很久了,不是时间的问题

还没到merge条件吧

查询下,看看
SELECT
store_id,
leader_count,
region_count
FROM
INFORMATION_SCHEMA.TIKV_STORE_STATUS;

我们以前遇到空region多的原因是: 合并region的task失败了,pd内存不够扩容后就正常了

±---------±-------------±-------------+
| store_id | leader_count | region_count |
±---------±-------------±-------------+
| 4 | 185 | 544 |
| 5 | 177 | 544 |
| 1 | 182 | 544 |
±---------±-------------±-------------+

可以到 pd leader节点上查看一下日志情况,用empty region 为关键字确认下有没有相关调度策略运行情况

创建过大量表后(包括执行 Truncate Table 操作)又清空了。此时如果开启了 split table 特性,这些空 Region 是无法合并的,此时需要调整以下参数关闭这个特性:
TiKV: 将 split-region-on-table 设为 false,该参数不支持动态修改。

如果不是有>1w的空region大概率不是设置问题,很有可能是有些根据时间分区的分区表。每一个分区其实对应一个物理表,有自己的table_id,如果时间没到,这个物理表就是空的,对应的region也就是空region。

你这看着空region不算多,优先考虑是不是上面这个情况。

1 个赞

看regin_merge的参数值,根据需要调整,如果已配置合理,但没有执行,就需要看PD上的日志了。

应该是没有触发merge