PD 调度策略最佳实践
里有这么一段解释了不会合并 Truncate 这类操作导致的空 Region
创建过大量表后(包括执行
Truncate Table
操作)又清空了。此时如果开启了 split table 特性,这些空 Region 是无法合并的,此时需要调整以下参数关闭这个特性:
- TiKV: 将
split-region-on-table
设为false
,该参数不支持动态修改。- PD: 使用 PD Control,根据集群情况选择性地设置以下参数。
- 如果集群中不存在 TiDB 实例,将
key-type
的值设置为raw
或txn
。此时,无论enable-cross-table-merge
设置如何,PD 均可以跨表合并 Region。该参数支持动态修改。
config set key-type txn
- 如果集群中存在 TiDB 实例,将
key-type
的值设置为table
。此时将enable-cross-table-merge
设置为true
,可以使 PD 跨表合并 Region。该参数支持动态修改。config set enable-cross-table-merge true
但是在tikv里面region不允许有间隙,也就是说不管region是不是空region它们都是连续的,那像truncate这种操作导致的空regioin,已经与truncate之前的表没有关系了,它还有没有范围的,后面操作出现的key如果在这个范围内,是否会存入这个空 Region 中并与相关的表做关联呢?