我们在场景中使用版本 0.11.2 的 Apache IoTDB 服务器,并观察到数据目录/tsfiles 比应有的大得多(大约 130 个传感器,每个传感器有 400 万个双值,但文件约为 200GB)。
是否存在已知问题,或者您是否有任何想法可能导致此问题以及如何追踪?
我们唯一能想到的可能是一些合并工件,因为我们确实乱序写入了许多数据点,因此合并必须经常发生。
是否有关于如何调试/检查 tsfiles 以了解这里发生的情况的任何想法或工具?
这可能是由于压缩策略所致。
您可以通过两种方式解决此问题(不需要同时进行):
(1)升级至0.12.2版本
(2)打开iotdb-engine.properties中的配置:force_full_merge=true
原因是:
0.11.2版本中的无序数据压缩有两种策略。
例如,
序列 TsFile 中的块:[1,3], [4,5]
无序 TsFile 中的块:[2]
(我用[1,3]表示一个Chunk中2个数据点的时间戳)
(1) 当使用完全合并(重写所有数据)时:我们得到一个整齐的序列文件:[1,2,3],[4,5]
(2) 然而,为了加快压缩速度,当我们得到一个序列 TsFile: [1,3],[4,5],[1,2,3] 时,我们默认使用追加合并。在这个TsFile中,[1,3]在File的末尾没有元数据,它是垃圾数据。
因此,如果您经常合并大量无序数据,就会发生这种情况(获得一个非常大的 TsFile)。
新的压缩后,大的 TsFile 将变得整洁。
您还可以使用 TsFileSketchTool 或 example/tsfile/TsFileSequenceRead 查看 TsFile 的结构。