THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Markdown |
---|
# 目标 写一个负载程序使得IoTDB能在长期写入,覆盖层级合并、顺序乱序合并,实际删除数据,重启下,数据能够正确查询。 # 运行命令 ``` java -jar XXX.jar -username root... ``` # 可配置项 组数,设备数,每个设备sensor数量,循环重复插入查询次数,写入模式(顺序,乱序,删除)。组数(storageGroupNumber),设备数(deviceNumber),每个设备sensor数量(sensorNumber),循环重复插入查询次数(Loop,从零开始),写入模式(顺序,乱序,删除)。 # 数据规模案例 例如,10组,每组10个设备,每个设备10个sensor (`sg1~sg10, d1~d10, s1~s10`)。 ### # 1. 普通写入查询 例如,10组X10设备X10个sensor=1000个sensor写入。单客户端写入。写入之后立即查询。 ### 步骤一:写入 每个sensor写入十万个数据点 例如设备d1 time | s1 | s2 | ... | s10 ---|---|---|---|---| 1 | 1 | 1 | ... | 1 2 | 2 | 2 | ... | 2 ... | ... | ... | ... | ... 100000 | 100000 | 100000 | 100000 | 100000 ### 步骤二:原始数据部分查询 ##### 单设备单传感器 随机选择1个时间范围(随机选择一个时间点,时间点前后各查1000个,如果选择了最后(99000,100000]时间点,就查(99000,100000]的数据)。随机选择一个组一个设备,再随机选择2个传感器。总共两次查询。每次查询时间范围都不一样。随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。随机选择一个组(sgN, 1<= N <= 组数)一个设备(dN, 1<= N <= 设备数),再随机选择2个传感器(sN,1<=N <= 传感器数)。总共两次查询。 例如设备d1 ``` select s1 from root.sg1.d1 where time >= 99100 and time <= 1099 select s100s10 from root.sg1.d1 where time >= 12001201 and time <= 2200 ``` ##### 多设备单传感器 随机选择1个时间范围(随机选择一个时间点,时间点前后各查1000个,如果选择了最后(99000,100000]时间点,就查(99000,100000]的数据)。随机选择一个组,随机选择2个传感器。总共两次查询。每次查询时间范围都不一样。随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。随机选择一个组,设备全选,随机选择2个传感器。总共两次查询。 例如 ``` select s1 from root.sg1.d1, root.sg1.d2, ..., root.sg1.d10 where time >= 99100 and time <= 1099 select s4 from root.sg1.d1, root.sg1.d2, ..., root.sg1.d10 where time >= 12001201 and time <= 2200 ``` ##### 单设备多传感器 随机选择1个时间范围(随机选择一个时间点,时间点前后各查1000个,如果选择了最后(99000,100000]时间点,就查(99000,100000]的数据)。随机选择一个组一个设备。总共一次查询。每次查询时间范围都不一样。随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。随机选择一个组一个设备,传感器全选。总共一次查询。 例如 ``` select s1, s1, ...,s10 from root.sg1.d1 where time >= 99100 and time <= 1099 ``` ### 步骤三:聚合查询 ##### 单设备单传感器 随机选择1个时间范围(随机选择一个时间点,且必须为10的整数倍,往后查1000个,如果选择了最后(99000,100000]时间点,就查(99000,100000]的数据)。随机选择一个组一个设备,再随机选择2个传感器。总共四次查询。每次查询时间范围都不一样。聚合函数分别为`last随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。随机选择一个组一个设备,再随机选择2个传感器。总共四次查询。聚合函数分别为`last_value,count`。 ``` select count(s1) from root.sg1.d1 where time >= 10001001 and time <= 2000 select last_value(s1) from root.sg1.d1 where time >= 30003001 and time <= 4000 select count(s100) from root.sg1.d1 where time >= 40004001 and time <= 5000 select last_value(s100) from root.sg1.d1 where time >= 50005001 and time <= 6000 ``` ##### 多设备单传感器 和原始数据同理 ##### 单设备多传感器 和原始数据同理 ### 步骤四:降采样查询 步骤四:聚合查询全时间范围 ##### 单设备单传感器 随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。随机选择一个组一个设备,再随机选择2个传感器。总共四次查询。聚合函数分别为`last_value,count`。 ``` select count(s1) from root.sg1.d1 select last_value(s1) from root.sg1.d1 select count(s10) from root.sg1.d1 select last_value(s10) from root.sg1.d1 ``` ##### 多设备单传感器 和原始数据同理 ##### 单设备多传感器 和原始数据同理 ### 步骤五:降采样查询 ##### 单设备单传感器 例如设备d1 随机选择1个时间范围(随机选择一个时间点,且必须为10的整数倍,往后查1000个,如果选择了最后(99000,100000]时间点,就查(99000,100000]的数据)。步长为10。随机选择一个组一个设备,再随机选择2个传感器。总共六次查询。每次查询时间范围都不一样。聚合函数分别为`last随机在[1,100000 * (Loop + 1)]中选择1个时间点T,查询[T-999, T]数据。如果T选择在[1,1000],那么就查[1,1000]的数据。步长为100。随机选择一个组一个设备,再随机选择2个传感器。总共六次查询。聚合函数分别为`last_value, first_value, count`。 ``` select first_value(s1) from root.sg1.d1 group by ((1000, 2000], 10) select last_value(s1) from root.sg1.d1 group by ((3000, 4000], 10) select count(s1) from root.sg1.d1 group by ((4000, 5000], 10) select first_value(s100) from root.sg1.d1 group by ((5000, 6000], 10) select last_value(s100) from root.sg1.d1 group by ((7000, 8000], 10) select count(s100) from root.sg1.d1 group by ((9000, 10000], 10) ``` ##### 多设备单传感器 和原始数据同理 ##### 单设备多传感器 和原始数据同理 ### 重复写入查询 每个sensor再写入十万个数据点 例如设备d1 time | s1 | s2 | ... | s10 ---|---|---|---|---| 100001 | 100001 | 100001 | ... | 100001 100002 | 100002 | 100002 | ... | 100002 ... | ... | ... | ... | ... 200000 | 200000 | 200000 | 200000 | 200000 重复上述操作 # 2. 乱序写入查询 ### 步骤一:执行1. 普通写入查询 ### 步骤二:执行flush操作 ### 步骤三:写入乱序点 每个sensor随机插入N*100(1 <= N <= 9)个乱序数据点,数据全部加一。随机选择一个sensor,随机在[1,100000 * (Loop + 1)]中选择1个时间点T,插入[T-999, T]的乱序数据并且乱序数据全部加一。 例如设备d1 time | s1 | s2 | ... | s100 ---|---|---|---|---| 5000199001 | 5000299002 | 5000299002 | ... | 5000299002 5000299002 | 5000399003 | 5000399003 | ... | 5000399003 ... | ... | ... | ... | ... 100000 | 100001 | 100001 | 100001 | 100001 ### 步骤四:查询 随机选择1个时间范围(随机在sensor选择一个乱序数据插入时间点,时间点前后各查1000个)。其余全部和1随机在[T-999,T]选择一个点K,查询[K-999,K]。其余全部和1. 普通写入查询同理。 ### 步骤五:重复写入查询 重复上述操作。 # 3. 删除写入查询 ### 步骤一:执行1. 普通写入查询 ### 步骤二:删除点 每个sensor随机删除N*100(1 <= N <= 9)个时间点数据。随机选择一个sensor,随机在[1,100000 * (Loop + 1)]中选择1个时间点T,删除[T-999, T]的数据。 ### 步骤三:原始数据部分查询 随机选择1个时间范围(随机在删除时间段选择一个时间点,时间点前后各查1000个)。其余全部和1随机在[T-999,T]选择一个点K,查询[K-999,K]。其余全部和1. 普通写入查询同理。 # 4. 验证正确性 顺序数据插入数据与时间一致,且为INT64类型。乱序数据插入数据与时间+1一致。如果出现不一致的数据,将不一致的数据和sql打印到日志里。 |
...