首先,region 是一个逻辑的组织结构,不是一个物理的文件,tikv 中物理文件是指 sst。调整 region merge 相关的参数,能够达到减少 region 的目的,因为集群中 region 数量过多会带来一些性能问题, 具体见:
https://docs.pingcap.com/zh/tidb/stable/massive-regions-best-practices/#海量-region-集群调优最佳实践
其次,tikv 集群要释放存储空间,那么需要清理集群中的数据,并且在 gc 和 compaction 的配合下降低存储占用。gc 相关的内容见:
https://docs.pingcap.com/zh/tidb/stable/garbage-collection-overview/#gc-机制简介
最后,删除数据 / gc / compaction 和 empty region 的关系是:
- 当 dml 或 ddl 删除数据后,不会立即释放空间
- 达到 gc 周期后,开始进行 gc 流程
- gc 完成后,drop 操作对应的空间会释放,而 dml 操作需要等待 rocksdb compaction 后,才会释放
- 以 drop 操作为例,此时其占用的物理空间已经释放,当对应的 region 上报心跳给 pd 后,pd 发现该 region 已经变成 empty region,开始进行 region merge 调度
- 集群中空 region 逐步变少
至此,集群中物理空间释放,空 region 数量降低 ~