现象
时序数据库 IoTDB 删除大量数据后,为什么 data 空间不减反增?
原因
IoTDB 的存储引擎采用 LSM(Log-Structured Merge)架构。在执行删除操作时,系统会生成 .mod 文件来标记删除的数据。这些删除标记会在后续的合并过程中被处理,合并操作会将标记删除的数据进行物理删除。
但如果合并没有触发,或者某个文件长时间没有被合并,那么 .mod 文件中标记删除的数据实际上不会被删除,从而导致空间占用不减反增。
解决方案
- 可以通过检查是否生成 .mod 文件来判断数据是否被删除。使用 settle 工具触发合并任务,实际删除被标记的数据(前提是 tsfile 中有对应的 .mod 文件)。
- 可以通过配置 TTL(数据过期时间)来定期删除数据,确保过期数据被及时清除。