Apache IoTDB 数据库(版本 0.11.2)中的 tsfile/datastore 太大

Too big tsfile / datastore in Apache IoTDB database (version 0.11.2)

我们在一个场景中使用版本 0.11.2 的 Apache IoTDB 服务器,并观察到一个数据目录/tsfiles 比它们应该的大得多(大约 130 个传感器,每个传感器有 400 万个双精度值,但文件是大约 200 GB)。

是否存在已知问题,或者您是否有任何想法可能导致此问题的原因是如何追踪?

我们唯一能想到的可能是一些合并人工制品,因为我们确实写了很多乱序的数据点,所以合并必须经常发生。

是否有关于如何调试/检查 ts 文件以了解这里发生的事情的任何想法或工具?

感谢任何帮助或提示!

这可能是由于压缩策略。

您可以通过两种方式解决此问题(不需要同时使用):

(1)升级到0.12.2版本

(2)在iotdb-engine.properties中打开配置:force_full_merge=true

原因是:

0.11.2版本的unsequenced data compaction有两种策略

例如,

序列 TsFile 中的块:[1,3]、[4,5]

无序列 TsFile 中的块:[2]

(我用[1,3]表示一个Chunk中2个数据点的时间戳)

(1) 当使用full merge(重写所有数据)时:我们得到一个整齐的序列文件:[1,2,3],[4,5]

(2) 但是,为了加快compaction,我们默认使用append merge,当我们得到一个序列TsFile:[1,3],[4,5],[1,2,3]。在这个TsFile中,[1,3]没有File末尾的元数据,是垃圾数据。

因此,如果您经常合并大量无序数据,就会发生这种情况(获取非常大的 TsFile)。

新的压缩后大 TsFile 将变得整洁。

您也可以使用 TsFileSketchTool 或 example/tsfile/TsFileSequenceRead 查看 TsFile 的结构。