05-taosbenchmark.md 24.6 KB
Newer Older
D
dingbo 已提交
1 2 3 4 5 6 7
---
title: taosBenchmark
sidebar_label: taosBenchmark
---

## 简介

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
taosBenchmark (曾用名 taosdemo ) 是一个用于测试 TDengine 产品性能的工具。taosBenchmark 可以测试 TDengine 的插入、查询和订阅等功能的性能,它可以模拟由大量设备产生的大量数据,还可以灵活地控制数据库、超级表、标签列的数量和类型、数据列的数量和类型、子表的数量、每张子表的数据量、插入数据的时间间隔、taosBenchmark 的工作线程数量、是否以及如何插入乱序数据等。为了兼容过往用户的使用习惯,安装包提供 了 taosdemo 作为 taosBenchmark 的软链接。

## 安装

@shuduo @yangzhao ,请在这里添加 taosBenchmark 安装的简要说明

## 运行

### 配置和运行方式

taosBenchmark 支持两种配置方式:[命令行参数](#命令行参数)[JSON 配置文件](#json-配置文件)。这两种方式是互斥的,在使用配置文件时只能使用一个命令行参数 `-f <json file>` 指定配置文件。在使用命令行参数运行 taosBenchmark 并控制其行为时则不能使用 `-f` 参数而要用其它参数来进行配置。除此之外,taosBenchmark 还提供了一种特殊的运行方式,即无参数运行。

taosBenchmark 支持对 TDengine 做完备的性能测试,其所支持的 TDengine 功能分为三大类:写入、查询和订阅。这三种功能之间是互斥的,每次运行 taosBenchmark 只能选择其中之一。值得注意的是,所要测试的功能类型在使用命令行配置方式时是不可配置的,命令行配置方式只能测试写入性能。若要测试 TDegnine 的查询和订阅性能,必须使用配置文件的方式,通过配置文件中的参数 `filetype` 指定所要测试的功能类型。

**在运行 taosBenchmark 之前要确保 TDengine 集群已经在正确运行。**

### 无命令行参数运行

执行下列命令即可快速体验 taosBenchmark 对 TDengine 进行基于默认配置的写入性能测试。

```bash
taosBenchmark
```

G
gccgdb1234 已提交
32
在无参数运行时,taosBenchmark 默认连接 `/etc/taos` 下指定的 TDengine 集群,并在 TDengine 中创建 10000 张表,每张表中写入 10000 条记录。
33 34 35 36 37 38 39 40 41

### 使用命令行配置参数运行

在使用命令行参数运行 taosBenchmark 并控制其行为时,`-f <json file>` 参数不能使用。所有配置参数都必须通过命令行指定。以下是使用命令行方式测试 taosBenchmark 写入性能的一个示例。

```bash
@shuduo @yangzhao 请在这里添加使用命令行配置参数运行的示例,示例一定要经过实际运行检验
```

G
gccgdb1234 已提交
42
上面的命令 `此处插入解释`
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

### 使用配置文件运行

taosBenchmark 安装包中提供了配置文件的示例,位于 `@shuduo @yangzhao 此处插入路径`

使用如下命令行即可运行 taosBenchmark 并通过配置文件控制其行为。

```bash
taosBenchmark -f <json file>
```

**下面是几个配置文件的示例:**

#### 插入场景 JSON 配置文件示例

<details>
<summary>插入场景配置示例</summary>
D
dingbo 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

```json
{
  "filetype": "insert",
  "cfgdir": "/etc/taos",
  "host": "127.0.0.1",
  "port": 6030,
  "user": "root",
  "password": "taosdata",
  "connection_pool_size": 8,
  "thread_count": 4,
  "result_file": "./insert_res.txt",
  "confirm_parameter_prompt": "no",
  "insert_interval": 0,
  "interlace_rows": 100,
  "num_of_records_per_req": 100,
  "prepared_rand": 10000,
  "chinese": "no",
  "databases": [
    {
      "dbinfo": {
        "name": "db",
        "drop": "yes",
        "replica": 1,
        "days": 10,
        "cache": 16,
        "blocks": 8,
        "precision": "ms",
        "keep": 3650,
        "minRows": 100,
        "maxRows": 4096,
        "comp": 2,
        "walLevel": 1,
        "cachelast": 0,
        "quorum": 1,
        "fsync": 3000,
        "update": 0
      },
      "super_tables": [
        {
          "name": "stb",
          "child_table_exists": "no",
          "childtable_count": 100,
          "childtable_prefix": "stb_",
          "escape_character": "yes",
          "auto_create_table": "no",
          "batch_create_tbl_num": 5,
          "data_source": "rand",
          "insert_mode": "taosc",
          "line_protocol": "line",
          "insert_rows": 100000,
          "childtable_limit": 10,
          "childtable_offset": 100,
          "interlace_rows": 0,
          "insert_interval": 0,
          "partial_col_num": 0,
          "disorder_ratio": 0,
          "disorder_range": 1000,
          "timestamp_step": 10,
          "start_timestamp": "2020-10-01 00:00:00.000",
          "sample_format": "csv",
          "sample_file": "./sample.csv",
          "use_sample_ts": "no",
          "tags_file": "",
          "columns": [
            { "type": "INT", "name": "id" },
            { "type": "DOUBLE", "count": 10 },
            { "type": "BINARY", "len": 16, "count": 3 },
            { "type": "BINARY", "len": 32, "count": 6 }
          ],
          "tags": [
            { "type": "TINYINT", "count": 2, "max": 10, "min": 98 },
            {
              "type": "BINARY",
              "len": 16,
              "count": 5,
              "values": ["beijing", "shanghai"]
            }
          ]
        }
      ]
    }
  ]
}
```

146 147 148 149 150 151
</details>

#### 查询场景 JSON 配置文件示例

<details>
<summary>查询场景配置示例</summary>
D
dingbo 已提交
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

```json
{
  "filetype": "query",
  "cfgdir": "/etc/taos",
  "host": "127.0.0.1",
  "port": 6030,
  "user": "root",
  "password": "taosdata",
  "confirm_parameter_prompt": "no",
  "databases": "db",
  "query_times": 2,
  "query_mode": "taosc",
  "specified_table_query": {
    "query_interval": 1,
    "concurrent": 3,
    "sqls": [
      {
        "sql": "select last_row(*) from stb0 ",
        "result": "./query_res0.txt"
      },
      {
        "sql": "select count(*) from stb00_1",
        "result": "./query_res1.txt"
      }
    ]
  },
  "super_table_query": {
    "stblname": "stb1",
    "query_interval": 1,
    "threads": 3,
    "sqls": [
      {
        "sql": "select last_row(ts) from xxxx",
        "result": "./query_res2.txt"
      }
    ]
  }
}
```

193 194 195 196 197 198
</details>

#### 订阅场景 JSON 配置文件示例

<details>
<summary>订阅场景配置示例</summary>
D
dingbo 已提交
199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237

```json
{
  "filetype": "subscribe",
  "cfgdir": "/etc/taos",
  "host": "127.0.0.1",
  "port": 6030,
  "user": "root",
  "password": "taosdata",
  "databases": "db",
  "confirm_parameter_prompt": "no",
  "specified_table_query": {
    "concurrent": 1,
    "interval": 0,
    "restart": "yes",
    "keepProgress": "yes",
    "sqls": [
      {
        "sql": "select * from stb00_0 ;",
        "result": "./subscribe_res0.txt"
      }
    ]
  },
  "super_table_query": {
    "stblname": "stb0",
    "threads": 1,
    "interval": 10000,
    "restart": "yes",
    "keepProgress": "yes",
    "sqls": [
      {
        "sql": "select * from xxxx where ts > '2021-02-25 11:35:00.000' ;",
        "result": "./subscribe_res1.txt"
      }
    ]
  }
}
```

238
</details>
D
dingbo 已提交
239

240
## 命令行参数详解
D
dingbo 已提交
241

242
#### -f/--file <json file\>
G
gccgdb1234 已提交
243

244
要使用的 JSON 配置文件,由该文件指定所有参数,本参数与命令行其他参数不能同时使用。没有默认值。
D
dingbo 已提交
245

246
#### -c/--config-dir <dir\>
G
gccgdb1234 已提交
247

248
TDengine 集群配置文件所在的目录,默认路径是 /etc/taos 。
D
dingbo 已提交
249

250
#### -h/--host <host\>
G
gccgdb1234 已提交
251

252
指定要连接的 TDengine 服务端的 FQDN,默认值为 localhost。
D
dingbo 已提交
253

254
#### -P/--port <port\>
G
gccgdb1234 已提交
255

256
要连接的 TDengine 服务器的端口号,默认值为 6030。
D
dingbo 已提交
257

258
#### -I/--interface <insertMode\>
G
gccgdb1234 已提交
259

260
插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc 。
D
dingbo 已提交
261

262
#### -u/--user <user\>
G
gccgdb1234 已提交
263

264
用于连接 TDengine 服务端的用户名,默认为 root
D
dingbo 已提交
265

266
#### -p/--password <passwd\>
G
gccgdb1234 已提交
267

268
用于连接 TDengine 服务端的密码,默认值为 taosdata。
D
dingbo 已提交
269

270
#### -o/--output <file\>
G
gccgdb1234 已提交
271

272
结果输出文件的路径,默认值为 ./output.txt。
D
dingbo 已提交
273

274
#### -T/--thread <threadNum\>
G
gccgdb1234 已提交
275 276

插入数据的线程数量,默认为 8。
D
dingbo 已提交
277

278
#### -B/--interlace-rows <rowNum\>
G
gccgdb1234 已提交
279

280
启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
D
dingbo 已提交
281

282
#### -i/--insert-interval <timeInterval\>
G
gccgdb1234 已提交
283

284
指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
D
dingbo 已提交
285

286
#### -r/--rec-per-req <rowNum\>
G
gccgdb1234 已提交
287

288
每次向 TDegnine 请求写入的数据行数,默认值为 30000 。
D
dingbo 已提交
289

290
#### -t/--tables <tableNum\>
G
gccgdb1234 已提交
291

292
指定子表的数量,默认为 10000 。
D
dingbo 已提交
293

294
#### -S/--timestampstep <stepLength\>
G
gccgdb1234 已提交
295

296
每个子表中插入数据的时间戳步长,单位是 ms,默认值是 1。
D
dingbo 已提交
297

298
#### -n/--records <recordNum\>
G
gccgdb1234 已提交
299

300
每个子表插入的记录数,默认值为 10000 。
D
dingbo 已提交
301

302
#### -d/--database <dbName\>
G
gccgdb1234 已提交
303

304
所使用的数据库的名称,默认值为 test 。
D
dingbo 已提交
305

306
#### -b/--data-type <colType\>
G
gccgdb1234 已提交
307

308
超级表的数据列的类型。如果不使用则默认为有三个数据列,其类型分别为 FLOAT, INT, FLOAT。
D
dingbo 已提交
309

310
#### -l/--columns <colNum\>
G
gccgdb1234 已提交
311

312
超级表的数据列的总数量。如果同时设置了该参数和 `-b/--data-type`,则最后的结果列数为两者取大。如果本参数指定的数量大于 `-b/--data-type` 指定的列数,则未指定的列类型默认为 INT, 例如: `-l 5 -b float,double`, 那么最后的列为 `FLOAT,DOUBLE,INT,INT,INT`。如果 columns 指定的数量小于或等于 `-b/--data-type` 指定的列数,则结果为 `-b/--data-type` 指定的列和类型,例如: `-l 3 -b float,double,float,bigint`,那么最后的列为 `FLOAT,DOUBLE,FLOAT,BIGINT`
D
dingbo 已提交
313

314
#### -A/--tag-type <tagType\>
G
gccgdb1234 已提交
315

316
超级表的标签列类型。nchar 和 binary 类型可以同时设置长度,例如:
G
gccgdb1234 已提交
317

G
gccgdb1234 已提交
318 319 320
```
taosBenchmark -A INT,DOUBLE,NCHAR,BINARY(16)
```
G
gccgdb1234 已提交
321

G
gccgdb1234 已提交
322 323
如果没有设置标签类型,默认是两个标签,其类型分别为 INT 和 BINARY(16)。
注意:在有的 shell 比如 bash 命令里面 “()” 需要转义,则上述指令应为:
G
gccgdb1234 已提交
324

G
gccgdb1234 已提交
325 326 327
```
taosBenchmark -A INT,DOUBLE,NCHAR,BINARY\(16\)
```
D
dingbo 已提交
328

329
#### -w/--binwidth <length\>
G
gccgdb1234 已提交
330

331 332 333
nchar 和 binary 类型的默认长度,默认值为 64。

#### -m/--table-prefix <tablePrefix\>
G
gccgdb1234 已提交
334

335 336 337
子表名称的前缀,默认值为 "d"。

#### -E/--escape-character
G
gccgdb1234 已提交
338

339 340 341
开关参数,指定在超级表和子表名称中是否使用转义字符。默认值为不使用。

#### -C/--chinese
G
gccgdb1234 已提交
342

343 344 345
开关参数,指定 nchar 和 binary 是否使用 Unicode 中文字符。默认值为不使用。

#### -N/--normal-table
G
gccgdb1234 已提交
346

347 348 349
开关参数,指定只创建普通表,不创建超级表。默认值为 false。仅当插入模式为 taosc, stmt, rest 模式下可以使用。

#### -M/--random
G
gccgdb1234 已提交
350

351
开关参数,插入数据为生成的随机值。默认值为 false。若配置此参数,则随机生成要插入的数据。对于数值类型的 标签列/数据列,其值为该类型取值范围内的随机值。对于 NCHAR 和 BINARY 类型的 标签列/数据列,其值为指定长度范围内的随机字符串。
G
gccgdb1234 已提交
352 353
|

354
#### -x/--aggr-func
G
gccgdb1234 已提交
355

356 357 358
开关参数,指示插入后查询聚合函数。默认值为 false。

#### -y/--answer-yes
G
gccgdb1234 已提交
359

360 361 362
开关参数,要求用户在提示后确认才能继续。默认值为 false 。

#### -O/--disorder <Percentage\>
G
gccgdb1234 已提交
363

364 365 366
指定乱序数据的百分比,其值域为 [0,50]。默认为 0,即没有乱序数据。

#### -R/--disorder-range <timeRange\>
G
gccgdb1234 已提交
367

368 369 370
指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。

#### -F/--prepare_rand <Num\>
G
gccgdb1234 已提交
371

372 373 374
生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。

#### -a/--replica <replicaNum\>
G
gccgdb1234 已提交
375

376 377 378
创建数据库时指定其副本数,默认值为 1 。

#### -V/--version
G
gccgdb1234 已提交
379

380 381 382
显示版本信息并退出。不能与其它参数混用。

#### -?/--help
G
gccgdb1234 已提交
383

384 385 386 387 388
显示帮助信息并退出。不能与其它参数混用。

## 配置文件参数详解

### 通用配置参数
G
gccgdb1234 已提交
389

390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409
本节所列参数适用于所有功能模式。

- filetype: 要测试的功能,可选值为 `insert`, `query``subscribe`。分别对应插入、查询和订阅功能。每个配置文件中只能指定其中之一。
- cfgdir: TDengine 集群配置文件所在的目录,默认路径是 /etc/taos 。
- host: 指定要连接的 TDengine 服务端的 FQDN,默认值为 localhost。
- port: 要连接的 TDengine 服务器的端口号,默认值为 6030。
- user: 用于连接 TDengine 服务端的用户名,默认为 root
- password: 用于连接 TDengine 服务端的密码,默认值为 taosdata。

### 插入场景配置参数

查询场景下 `filetype` 必须设置为 `insert`,该参数及其它通用参数详见[通用配置参数](#通用配置参数)

#### 数据库相关配置参数

创建数据库时的相关参数在 json 配置文件中的 `dbinfo` 中配置,具体参数如下。这些参数与 TDengine 中 `create database` 时所指定的数据库参数相对应。

- name: 数据库名
- drop: 插入前是否删除数据库,默认为 true
- replica: 创建数据库时指定的副本数
G
gccgdb1234 已提交
410
- days: 单个数据文件中存储数据的时间跨度,默认值为 10
411
- cache: 缓存块的大小,单位是 MB,默认值是 16
G
gccgdb1234 已提交
412
- blocks: 每个 vnode 中缓存块的数量,默认为 6
413 414 415 416 417 418 419 420 421 422 423 424 425
- precision: 数据库时间精度,默认值为 "ms"
- keep: 保留数据的天数,默认值为 3650
- minRows: 文件块中的最小记录数,默认值为 100
- maxRows: 文件块中的最大记录数,默认值为 4096
- comp: 文件压缩标志,默认值为 2
- walLevel: WAL 级别,默认为 1
- cacheLast: 是否允许将每个表的最后一条记录保留在内存中,默认值为 0,可选值为 0,1,2,3
- quorum: 多副本模式下的写确认数量,默认值为 1
- fsync: 当 wal 设置为 2 时,fsync 的间隔时间,单位为 ms,默认值为 3000
- update: 是否支持数据更新,默认值为 0, 可选值为 0, 1, 2

#### 超级表相关配置参数

G
gccgdb1234 已提交
426
创建超级表时的相关参数在 json 配置文件中的 `super_tables` 中配置,具体参数如下表。
427 428 429

- name: 超级表名,必须配置,没有默认值。
- child_table_exists: 子表是否已经存在,默认值为 "no",可选值为 "yes" 或 "no"
G
gccgdb1234 已提交
430
- child_table_count: 子表的数量,默认值为 10
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459
- child_table_prefix: 子表名称的前缀,必选配置项,没有默认值
- escape_character: 超级表和子表名称中是否包含转义字符,默认值为 "no",可选值为 "yes" 或 "no"
- auto_create_table: 仅当 insert_mode 为 taosc, rest, stmt 并且 childtable_exists 为 "no" 时生效,该参数为 "yes" 表示 taosBenchmark 在插入数据时会自动创建不存在的表;为 "no" 则表示要插入的表必须提前创建好。
- batch_create_tbl_num: 创建子表时每批次的建表数量,默认为 10。注:实际的批数不一定与该值相同,当执行的 SQL 语句大于支持的最大长度时,会自动截断再执行,继续创建。
- data_source: 数据的来源,默认为 taosBenchmark 随机产生,可以配置为 sample,即为使用 sample_file 参数指定的文件内的数据。
- insert_mode: 插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc 。
- non_stop_mode: 指定是否持续写入,若为 "yes" 则 insert_rows 失效,直到 Ctrl + C 停止程序,写入才会停止。默认值为 "no",即写入指定数量的记录后停止。注:即使在持续写入模式下 insert_rows 失效,但其也必须被配置为一个非零正整数。
- line_protocol: 使用行协议插入数据,仅当 insert_mode 为 sml 或 sml-rest 时生效,可选项为 line, telnet, json。
- tcp_transfer: telnet 模式下的通信协议,仅当 insert_mode 为 sml-rest 并且 line_protocol 为 telnet 时生效。如果不配置,则默认为 http 协议。
- insert_rows: 每个子表插入的记录数,默认为 0 。
- childtable_offset: 仅当 childtable_exists 为 yes 时生效,指定从超级表获取子表列表时的偏移量,即从第几个子表开始。
- childtable_limit: 仅当 childtable_exists 为 yes 时生效,指定从超级表获取子表列表的上限。
- interlace_rows: 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
- insert_interval: 指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
- partial_col_num: 若该值为正数 n 时, 则仅向前 n 列写入,仅当 insert_mode 为 taosc 和 rest 时生效,如果 n 为 0 则是向全部列写入。
- disorder_ratio: 指定乱序数据的百分比,其值域为 [0,50]。默认为 0,即没有乱序数据。
- disorder_range: 指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。
- timestamp_step: 每个子表中插入数据的时间戳步长,单位是 ms,默认值是 1。
- start_timestamp: 每个子表的时间戳起始值,默认值是 now。
- sample_format: 样本数据文件的类型,现在只支持 "csv" 。
- sample_file: 指定 csv 格式的文件作为数据源,仅当 data_source 为 sample 时生效。若 csv 文件内的数据行数小于等于 prepared_rand,那么会循环读取 csv 文件数据直到与 prepared_rand 相同;否则则会只读取 prepared_rand 个数的行的数据。也即最终生成的数据行数为二者取小。
- use_sample_ts: 仅当 data_source 为 sample 时生效,表示 sample_file 指定的 csv 文件内是否包含第一列时间戳,默认为 no。 若设置为 yes, 则使用 csv 文件第一列作为时间戳,由于同一子表时间戳不能重复,生成的数据量取决于 csv 文件内的数据行数相同,此时 insert_rows 失效。
- tags_file: 仅当 insert_mode 为 taosc, rest 的模式下生效。 最终的 tag 的数值与 childtable_count 有关,如果 csv 文件内的 tag 数据行小于给定的子表数量,那么会循环读取 csv 文件数据直到生成 childtable_count 指定的子表数量;否则则只会读取 childtable_count 行 tag 数据。也即最终生成的子表数量为二者取小。

#### 标签列与数据列配置参数

指定超级表标签列与数据列的配置参数分别在 `super_tables` 中的 `columns``tag` 中。

- type: 指定列类型,可选值请参考 TDengine 支持的数据类型。
G
gccgdb1234 已提交
460
  注:JSON 数据类型比较特殊,只能用于标签,当使用 JSON 类型作为 tag 时有且只能有这一个标签,此时 count 和 len 代表的意义分别是 JSON tag 内的 key-value pair 的个数和每个 KV pair 的 value 的值的长度,value 默认为 string。
461 462 463 464 465 466 467 468 469
- len: 指定该数据类型的长度,对 NCHAR,BINARY 和 JSON 数据类型有效。如果对其他数据类型配置了该参数,若为 0 , 则代表该列始终都是以 null 值写入;如果不为 0 则被忽略。
- count: 指定该类型列连续出现的数量,例如 "count": 4096 即可生成 4096 个指定类型的列。
- name: 列的名字,若与 count 同时使用,比如 "name":"current", "count":3, 则 3 个列的名字分别为 current, current_2. current_3
- min: 数据类型的 列/标签 的最小值。
- max: 数据类型的 列/标签 的最大值。
- values: nchar/binary 列/标签的值域,将从值中随机选择。

#### 插入行为配置参数

G
gccgdb1234 已提交
470
- thread_count: 插入数据的线程数量,默认为 8。
471 472 473 474
- connection_pool_size: 预先建立的与 TDengine 服务端之间的连接的数量。若不配置,则与所指定的线程数相同。
- result_file: 结果输出文件的路径,默认值为 ./output.txt。
- confirm_parameter_prompt: 开关参数,要求用户在提示后确认才能继续。默认值为 false 。
- interlace_rows: 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0, 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
G
gccgdb1234 已提交
475 476 477 478 479 480
`super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。
- insert_interval:
  指定交错插入模式的插入间隔,单位为 ms,默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
`super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。
- num_of_records_per_req:
  每次向 TDegnine 请求写入的数据行数,默认值为 30000 。当其设置过大时,TDegnine 客户端驱动会返回相应的错误信息,此时需要调低这个参数的设置以满足写入要求。
481 482 483 484 485 486 487
- prepare_rand: 生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。

### 查询场景配置参数

查询场景下 `filetype` 必须设置为 `qeury`,该参数及其它通用参数详见[通用配置参数](#通用配置参数)

#### 执行指定查询语句的配置参数
G
gccgdb1234 已提交
488

489
查询子表或者普通表的配置参数在 `specified_table_query` 中设置。
G
gccgdb1234 已提交
490 491

- query_interval: 查询时间间隔,单位是秒,默认值为 0
492 493 494 495 496 497
- threads: 执行查询 SQL 的线程数,默认值为 1
- sqls:
  - sql: 执行的 SQL 命令,必填
  - result: 保存查询结果的文件,未指定则不保存

#### 查询超级表的配置参数
G
gccgdb1234 已提交
498

499
查询超级表的配置参数在 `super_table_query` 中设置。
G
gccgdb1234 已提交
500

501
- stblname: 指定要查询的超级表的名称,必填
G
gccgdb1234 已提交
502
- query_interval: 查询时间间隔,单位是秒,默认值为 0
503 504 505
- threads: 执行查询 SQL 的线程数,默认值为 1
- sqls:
  - sql: 执行的 SQL 命令,必填;对于超级表的查询 SQL,在 SQL 命令中保留 "xxxx",程序会自动将其替换为超级表的所有子表名。
G
gccgdb1234 已提交
506
    替换为超级表中所有的子表名。
507 508 509
  - result: 保存查询结果的文件,未指定则不保存

### 订阅场景配置参数
G
gccgdb1234 已提交
510

511 512 513
查询场景下 `filetype` 必须设置为 `subscribe`,该参数及其它通用参数详见[通用配置参数](#通用配置参数)

#### 执行指定订阅语句的配置参数
G
gccgdb1234 已提交
514

515
订阅子表或者普通表的配置参数在 `specified_table_query` 中设置。
G
gccgdb1234 已提交
516 517 518

- threads: 执行 SQL 的线程数,默认为 1
- interva: 执行订阅的时间间隔,单位为秒,默认为 0
519 520 521 522 523 524 525 526
- restart: "yes" 表示开始新的订阅,"no" 表示继续之前的订阅,默认值为 "no"
- keepProgress: "yes" 表示保留订阅进度,"no" 表示不保留,默认值为 "no"
- resubAfterConsume: "yes" 表示取消之前的订阅然后再次订阅, "no" 表示继续之前的订阅,默认值为 "no"
- sqls:
  - sql: 执行的 SQL 命令,必填;
  - result: 保存查询结果的文件,未指定则不保存

#### 订阅超级表的配置参数
G
gccgdb1234 已提交
527

528
订阅超级表的配置参数在 `super_table_query` 中设置。
G
gccgdb1234 已提交
529

530
- stblname: 要订阅的超级表名称,必填
G
gccgdb1234 已提交
531 532
- threads: 执行 SQL 的线程数,默认为 1
- interva: 执行订阅的时间间隔,单位为秒,默认为 0
533 534 535 536 537
- restart: "yes" 表示开始新的订阅,"no" 表示继续之前的订阅,默认值为 "no"
- keepProgress: "yes" 表示保留订阅进度,"no" 表示不保留,默认值为 "no"
- resubAfterConsume: "yes" 表示取消之前的订阅然后再次订阅, "no" 表示继续之前的订阅,默认值为 "no"
- sqls:
  - sql: 执行的 SQL 命令,必填;对于超级表的查询 SQL,在 SQL 命令中保留 "xxxx",程序会自动将其替换为超级表的所有子表名。
G
gccgdb1234 已提交
538
    替换为超级表中所有的子表名。
539
  - result: 保存查询结果的文件,未指定则不保存