IoTDB写入数据后data目录为空
问题现象
向时序数据库 IoTDB 写入少量数据后,使用 CLI 工具可以查询到这部分数据,但是在 data 目录下未查找到对应的 TsFile 文件。
问题原因
写入数据时首先写入 memtable,记录 wal,并没有直接落盘。少量数据写入情况下可能并未触发 memtable 的持久化操作,因此在 data 目录下查看不到对应的 TsFile。而通过 CLI 命令行可以从内存中查询到这部分数据。
解决方案
在 CLI 中手动执行 flush 可以将当前 memtable 的所有数据持久化到磁盘上,将 TsFile 文件封口,然后在 data 下对应的目录中可以获取到完整的 TsFile。
思考
在做测试、备份等场景中,保证此时没有并发写入的条件下,需要当前数据文件完整性的话,可以手动 flush(使用 CLI 或者程序)。