https://github.com/apache/iotdb/pull/3162

为了避免由于引入连续查询功能使得数据库写入性能劣化,本文将进行连续查询对数据写入性能影响实验。

实验环境

操作系统:Windows 10

RAM:16.0 GB

处理器:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.59 GHz

实验目的

假设有 10 台设备,每台设备有 100 个传感器,不断写入数据到这 1000 条时间序列,测试连续查询实例数量、查询时间间隔和窗口大小对原始数据写入性能(吞吐量)的影响。

实验一:现实场景测试

实验方法

每隔 10ms 写入一行数据。窗口大小、查询时间间隔取值范围均为 1s、2s、4s、8s、10s。

实验结果

上图展示了数据写入吞吐量与连续查询实例数量、查询时间间隔和窗口大小的关系,横坐标为连续查询实例数量,纵坐标为相对基线的吞吐量。

当查询时间间隔大于等于4秒时,曲线较为平稳,吞吐量几乎不随连续查询实例数量的增大而改变,说明当查询时间间隔较大(≥ 4s)时,连续查询实例对数据写入性能影响很小。
同一张图中各个曲线相差不大,说明查询窗口大小对写入性能影响不大。

在实际应用场景中,一般设置的查询时间间隔大于等于 5s,因此连续查询对于原始数据写入性能影响很小。

实验二:极端场景测试

实验方法

为了探究连续查询在极端条件下对原始数据写入性能的影响,在实验二中,
我们每 0.5ms 写入一行数据。窗口大小、查询时间间隔取值范围为 10ms、50ms、100ms、300ms、 600ms。

实验结果

如上图所示,可以发现查询时间间隔越小,写入性能劣化越大。在每条时间序列都注册有连续查询的极端情况下,写入性能下降为基线的 35% 至 40%。

实验结论

  • 连续查询时间间隔越小,原始数据写入性能劣化越大。
  • 连续查询数量越多,原始数据写入性能劣化越大。
  • 当连续查询窗口大小在实验中的取值范围中时,几乎不影响原始数据的写入性能。
  • 当连续查询时间间隔大于等于 4s 时,连续查询对数据写入性能影响很小。

  • No labels