再次提醒,在你开始任何一个新的测试用例前,你都需要确认配置文件config.properties
中的配置信息是否符合预期。
假设工作负载参数是:
+--------------------------+------------+--------------+-------------+------------+--------------------+--------+
| Measurement/StorageGroup | tag/device | field/sensor | concurrency | batch size | point interval(ms) | loop |
+--------------------------+------------+--------------+-------------+------------+--------------------+--------+
| 10 | 50 | 500 | 20 | 100 | 200 | 10000 |
+--------------------------+------------+--------------+-------------+------------+--------------------+--------+
注意:此配置下总的时间序列数为:deivce * sensor = 25,000
,每个时间序列的点数为 batch size * loop = 20,000
,
总数据点数为 deivce * sensor * batch size * loop = 500,000,000
。 每个数据点占用空间大小可以按 16 字节估计,则原始数据总大小为 8G。
那么对应的,需要修改config.properties
文件如下所示。请在完成修改后去掉相应配置项前的#
以确保改动生效:
HOST=127.0.0.1
PORT=6667
DB_SWITCH=IoTDB-100-SESSION_BY_TABLET
BENCHMARK_WORK_MODE=testWithDefaultPath
OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0
GROUP_NUMBER=10
DEVICE_NUMBER=50
SENSOR_NUMBER=500
CLIENT_NUMBER=20
BATCH_SIZE_PER_WRITE=100
POINT_STEP=200
LOOP=10000
如果您想要使用乱序方式写入数据,那么您需要对config.properties
文件的如下属性进行修改:
# 是否乱序写入
IS_OUT_OF_ORDER=true
# 乱序写入模式,目前如下2种
# POISSON 按泊松分布的乱序模式
# BATCH 批插入乱序模式
OUT_OF_ORDER_MODE=BATCH
# 乱序写入的数据的比例
OUT_OF_ORDER_RATIO=0.5
# 是否为等长时间戳
IS_REGULAR_FREQUENCY=true
# 泊松分布的期望和方差
LAMBDA=2200.0
# 泊松分布模型的随机数的最大值
MAX_K=170000
此处已经介绍了一些参数的基本修改操作,之后的部分将省略相关设置,如有需要请进入如下页面查看。 Testconfigurations
常规测试模式除了用于写入数据,还可以仅仅查询数据。
常规测试模式可以支持用户进行读写混合的测试,需要注意的是这种场景下的读写混合的时间戳都是从写入开始时间开始。
常规测试模式可以支持用户进行读写混合的测试(查询最近写入数据),需要注意的是这种场景下的查询时间范围为当前最大写入时间戳的左侧临近的数据。
IoTDB Benchmark支持您使用数据库存储测试过程中的系统数据,目前支持使用CSV记录。
为了后续的分析,iot-benchmark可以将测试信息存储到数据库中(如果你不想存储测试数据,那么设置TEST_DATA_PERSISTENCE=None
即可)
为了生成可以重复使用的数据集,iot-benchmark提供生成数据集的模式,生成数据集到FILE_PATH,以供后续使用正确性写入模式和正确性查询模式使用。
为了验证数据集写入的正确性,您可以使用该模式写入生成数据模式中生成的数据集,目前该模式仅支持IoTDB v1.0 及更新的版本和InfluxDB v1.x
在运行这个模式之前需要先使用正确性写入模式写入数据到数据库。为了验证数据集写入的正确性,您可以使用该模式查询写入到数据库中的数据集,目前该模式仅支持IoTDB v1.0 和 InfluxDB v1.x。
为了更方便、快速完成正确性验证,iot-benchmark也支持双数据库模式。
- 对于上文中提到的所有测试场景,除特别说明,均支持双数据库进行。请在
verification
项目中启动测试。 - 对于下文中的正确性验证的相关测试场景,均必须在双数据库模式下运行,并且目前仅支持IoTDB v1.0 及更新的版本和timescaledb。
为了进行下文中的正确性验证,首先需要将数据写到两个数据库中。
为了更高效的验证数据库数据的正确性,iot-benchmark提供通过对比两个数据库间的数据来完成正确性验证。注意,在进行该测试前,请先使用上文中的常规测试模式之写入(双数据库)完成数据库写入,目前建议使用JDBC方式。
为了更高效的验证数据库查询的正确性,iot-benchmark提供通过对比两个数据库间的数据查询结果的差异来完成正确性验证。
注意:
- 在进行该测试前,请先使用上文中的常规测试模式之写入(双数据库)完成数据库写入。
- LOOP的值不能过大,满足:LOOP(query) * QUERY_INTERVAL(query) * DEVICE_NUMBER(write) <= LOOP(write) * POINT_STEP(write)
- 目前正确性验证部分仅支持IoTDB v1.0 及更新的版本和TimeScaleDB
- 快速指引