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

## 简介

W
wade zhang 已提交
8
taosBenchmark (曾用名 taosdemo ) 是一个用于测试 TDengine 产品性能的工具。taosBenchmark 可以测试 TDengine 的插入、查询和订阅等功能的性能,它可以模拟由大量设备产生的大量数据,还可以灵活地控制数据库、超级表、标签列的数量和类型、普通列的数量和类型、子表的数量、每张子表的数据量、插入数据的时间间隔、taosdump 的工作线程数量等。为了兼容过往用户的使用习惯,安装包提供 了 taosdemo 作为 taosBenchmark 的软链接。
D
dingbo 已提交
9

G
gccgdb1234 已提交
10
taosBenchmark 支持两种配置方式:[命令行参数](#命令行参数)[JSON 配置文件](#json-配置文件)
W
wade zhang 已提交
11 12

## 命令行参数
G
gccgdb1234 已提交
13

G
gccgdb1234 已提交
14
下表列出了命令行参数及简要描述,详细解释请参考 [配置参数详解](#参数详解)
D
dingbo 已提交
15

G
gccgdb1234 已提交
16 17
| 选项名称                                 | 描述                                                         |
| :--------------------------------------- | ------------------------------------------------------------ | --- |
G
gccgdb1234 已提交
18
| [-f/--file](#json-配置文件)                       | 使用 JSON 配置文件指定所有参数, 与命令行其他参数不能同时使用 |
G
gccgdb1234 已提交
19 20
| -c/--config-dir                          | TDengine 集群配置文件所在的目录,默认路径是 /etc/taos/       |
| -h/--host                                | 要连接 TDengine 服务端的 FQDN,默认值为 localhost。          |
G
gccgdb1234 已提交
21
| -P/--port                                | 要连接的 TDengine 服务器的端口号,默认值为 6030。            |
G
gccgdb1234 已提交
22
| [-I/--interface](#insert-mode)           | 数据插入模式,默认值为 taosc。                               |
G
gccgdb1234 已提交
23 24
| -u/--user                                | 用于连接 TDengine 服务端的用户名,默认值为 root。            |
| -p/--password                            | 用于连接 TDengine 服务端的密码,默认值为 taosdata。          |
G
gccgdb1234 已提交
25 26 27 28 29 30 31 32 33
| -o/--output                              | 指定结果输出文件的路径,默认值为 ./output.txt。              |
| -T/--thread                              | 指定插入数据的线程数,默认值为 8                             |
| [-i/--insert-interval](#insert-interval) | 交错插入模式的插入间隔,单位为 ms,默认值为 0。              |
| -S/--timestampstep                       | 每个子表中插入数据的时间戳步长,单位是 ms,默认值是 1        |
| [-B/--interlace-rows](#interlace-rows)   | 交错插入模式下向每个子表每次插入的数据行数                   |
| [-r/--rec-per-req](#record-per-request)  | 每次向 TDengine 服务端请求插入的记录数,默认值为 30000       |
| -t/--tables                              | 子表的数量,默认值为 10000。                                 |
| -n/--records                             | 每个子表插入的记录数,默认值为 10000。                       |
| -d/--database                            | 数据库的名称,默认值为 test。                                |
G
gccgdb1234 已提交
34
| [-l/--columns](#columns)                 | 超级表的数据列数                                             |
G
gccgdb1234 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| [-A/--tag-type](#tag-type)               | 超级表的标签列的数据类型。                                   |
| [-b/--data-type](#data-type)             | 超级表的数据列的数据类型                                     |
| -w/--binwidth                            | nchar 和 binary 数据类型的默认长度,默认值为 64。            |
| -m/--table-prefix                        | 子表名称的前缀,默认值为 d                                   |
| -E/--escape-character                    | 在超级表和子表名称中使用转义字符,可选。                     |
| -C/--chinese                             | nchar 和 binary 是否基本的 Unicode 中文字符,可选。          |
| [-N/--normal-table](#normal-table)       | 只创建普通表,不创建超级表,可选。                           |
| [-M/--random](#random)                   | 插入数据为随机值,可选。                                     |
| -x/--aggr-func                           | 插入后查询聚合函数,可选。                                   |
| -y/--answer-yes                          | 通过确认提示继续,可选。                                     |
| [-R/--disorder-range](#disorder-range)   | 失序时间戳的范围,基于数据库的精度,默认值为 1000            |
| [-O/--disorder](#disorder-ratio)         | 插入无序时间戳的数据的百分比,默认为 0。                     |
| [-F/--prepare_rand](#prepared-rand)      | 生成随机数据的随机个数,默认为 10000                         |
| -a/--replica                             | 创建数据库时的副本数量,默认值为 1。                         |
| -V/--version                             | 显示版本信息并退出                                           |
| -?/--help                                | 显示帮助信息并退出。                                         |
D
dingbo 已提交
51

W
wade zhang 已提交
52
## JSON 配置文件
D
dingbo 已提交
53

G
gccgdb1234 已提交
54
### JSON 配置文件示例 (插入场景)
D
dingbo 已提交
55 56 57 58 59 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

```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"]
            }
          ]
        }
      ]
    }
  ]
}
```

W
wade zhang 已提交
141
### 配置文件参数说明 (插入场景)
D
dingbo 已提交
142 143 144 145

| 组           | 选项名称                                      | 描述                                                                                      |
| ------------ | --------------------------------------------- | ----------------------------------------------------------------------------------------- |
|              | filetype                                      | 文件类型,指定哪种测试,对于插入测试,需要为 insert。                                     |
G
gccgdb1234 已提交
146 147 148 149 150 151
|              | cfgdir                                        | TDengine 集群配置文件所在的目录,默认值是 /etc/taos。                                     |
|              | host                                          | TDengine 服务端的 FQDN,默认为 localhost。                                                |
|              | port                                          | TDengine 服务器的端口号,默认为 6030。                                                    |
|              | user                                          | 连接 TDengine 服务端的用户名,默认为 root。                                               |
|              | password                                      | 连接 TDengine 服务端的密码,默认为 taosdata。                                             |
|              | [connection_pool_size](#connection-pool-size) | 客户端连接池的大小,默认为指定的插入线程数。                                              |
D
dingbo 已提交
152 153 154
|              | thread_count                                  | 插入和创建表的线程数,默认为 8。                                                          |
|              | result_file                                   | 保存输出结果的文件路径,默认为 ./output.txt。                                             |
|              | confirm_parameter_prompt                      | 在执行过程中传递确认提示,默认为无。                                                      |
G
gccgdb1234 已提交
155 156 157
|              | [insert_interval](#insert-interval)           | 交错插入模式的间隔时间,默认值为 0                                                        |
|              | [interlace_rows](#interlace-rows)             | 每个子表的交错插入行数,默认值为 0。                                                      |
|              | [num_of_records_per_req](#record-per-request) | 每个插入请求中的记录数,默认值为 30000。                                                  |
D
dingbo 已提交
158
|              | [prepare_rand](#prepared-rand)                | 随机产生的数据数量,默认值为 10000                                                        |
G
gccgdb1234 已提交
159
|              | chinese                                       | nchar 和 binary 都是随机中文字符串,默认值为否。                                          |
D
dingbo 已提交
160 161
| dbinfo       | name                                          | 数据库名称,必填                                                                          |
| dbinfo       | drop                                          | 插入测试前是否删除数据库,默认值为是。                                                    |
G
gccgdb1234 已提交
162 163
| dbinfo       | replica                                       | 数据库副本的数量,默认值是 1。                                                            |
| dbinfo       | days                                          | 单个数据文件中存储数据的时间跨度,默认值为 10。                                           |
D
dingbo 已提交
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
| dbinfo       | cache                                         | 内存块的大小,单位是 MB,默认值是 16。                                                    |
| dbinfo       | blocks                                        | 每个 vnode(tsdb) 中的缓存大小的内存块的数量,默认值为 6。                                 |
| dbinfo       | precision                                     | 数据库时间精度,默认值为 "ms"。                                                           |
| dbinfo       | keep                                          | 保留数据的天数,默认值为 3650。                                                           |
| dbinfo       | minRows                                       | 文件块中的最小记录数,默认值为 100                                                        |
| dbinfo       | minRows                                       | 文件块中的最大记录数,默认值为 4096                                                       |
| dbinfo       | comp                                          | 文件压缩标志,默认值为 2。                                                                |
| dbinfo       | walLevel                                      | wal 级别,默认值是 1。                                                                    |
| dbinfo       | cachelast                                     | 是否允许将每个表的最后一条记录保留在内存中,默认值为 0                                    |
| dbinfo       | quorum                                        | 异步写需要的确认次数,默认为 1                                                            |
| dbinfo       | fsync                                         | 当 wal 设置为 2 时,fsync 的间隔时间,单位为 ms,默认值为 3000。                          |
| dbinfo       | update                                        | 是否支持数据更新,默认值为 0。                                                            |
| super_tables | name                                          | 超级表的名称,必须填写。                                                                  |
| super_tables | child_table_exists                            | 子表是否已经存在,默认为否。                                                              |
| super_tables | child_table_count                             | 子表的数量,必填                                                                          |
| super_tables | childtable_prefix                             | 子表名称的前缀,必须填写。                                                                |
| super_tables | escape_character                              | 超级表和子表的名称包括转义字符,默认为否。                                                |
| super_tables | [auto_create_table](#auto-create-table)       | SQL 语句是否自动创建子表。                                                                |
| Super_tables | [batch_create_tbl_num](#batch-create-tbl-num) | 为每个请求创建的子表数量,默认为 10。                                                     |
| super_tables | [data_source](#data-source)                   | 数据资源类型,选项:rand, sample。                                                        |
| super_tables | [insert_mode](#insert-mode)                   | 插入模式,选项:taosc, rest, stmt, sml,默认为 taosc。                                    |
| super_tables | [non_stop_mode](#non-stop-mode)               | 插入模式是否为持续不停的写入,默认为 no                                                   |
| super_tables | [line_protocol](#line-protocol)               | 行协议,可选项:line, telnet, json, 默认为 line。                                         |
| super_tables | [tcp_transfer](#tcp-transfer)                 | 使用 tcp 还是 http 协议,默认为 http。                                                    |
| super_tables | insert_rows                                   | 每个子表的记录数,默认为 0。                                                              |
G
gccgdb1234 已提交
189
| super_tables | [childtable_offset](#childtable-offset)       | 获取子表列表时的偏移量量。                                                                |
D
dingbo 已提交
190
| super_tables | [childtable_limit](#childtable-limit)         | 插入数据的子表数量。                                                                      |
G
gccgdb1234 已提交
191 192 193
| super_tables | [interlace_rows](#interlace-rows)             | 交错插入模式下每个子表每次插入的数据行数,默认为 0。                                      |
| super_tables | [insert_interval](#insert-interval)           | 交错插入模式下两次插入的时间间隔,当 interlace_rows 大于 0 时有效。                       |
| super_tables | [partial_col_num](#partial-col-num)           | 指定仅向前多少列写入数据,默认为 0。                                                      |
G
gccgdb1234 已提交
194
| super_tables | [disorder_ratio](#disorder-ratio)             | 乱序时间戳的数据比例,默认为 0                                                            |
G
gccgdb1234 已提交
195
| super_tables | [disorder_range](#disorder-range)             | 无序时间戳的回退范围,只有当 disorder_ratio 大于 0 时才有效,默认为 1000。                |
G
gccgdb1234 已提交
196
| super_tables | timestamp_step                                | 每条记录的时间戳步长,默认为 1。                                                          |
D
dingbo 已提交
197 198 199 200 201 202 203
| super_tables | start_timestamp                               | 每个子表的时间戳起始值,默认值是 now。                                                    |
| super_tables | sample_format                                 | 样本数据文件的类型,现在只支持 csv。                                                      |
| super_tables | [sample_file](#sample-file)                   | 样本文件,仅当 data_source 为 "sample "时有效。                                           |
| super_tables | [use_sample_ts](#use-sample-ts)               | 样本文件是否包含时间戳,默认为否。                                                        |
| super_tables | [tags_file](#tags-file)                       | 原理与[sample_file](#sample-file)相同,标签数据样本文件,仅支持 taosc、rest insert 模式。 |
| columns/tags | [type](#type)                                 | 数据类型,必填                                                                            |
| columns/tags | [len](#len)                                   | 数据长度,默认为 8。                                                                      |
G
gccgdb1234 已提交
204 205 206 207 208
| columns/tags | [count](#count)                               | 该类型列连续出现的数量,默认为 1。                                                        |
| columns/tags | [name](#name)                                 | 该的名称,连续的列名将是 name\_#{number}。                                                |
| columns/tags | min                                           | 数字数据类型的 列/标签 的最小值值                                                         |
| columns/tags | max                                           | 数字数据类型的 列/标签 的最大值值                                                         |
| columns/tags | values                                        | nchar/binary 列/标签的值域,将从值中随机选择。                                            |
D
dingbo 已提交
209

G
gccgdb1234 已提交
210
### JSON 配置文件 (查询场景)
D
dingbo 已提交
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 238 239 240 241 242 243 244 245 246 247 248 249 250 251

```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"
      }
    ]
  }
}
```

W
wade zhang 已提交
252
### 配置文件参数说明 (查询场景)
D
dingbo 已提交
253

G
gccgdb1234 已提交
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
| 组                                      | 选项                     | 描述                                                   |
| --------------------------------------- | ------------------------ | ------------------------------------------------------ |
|                                         | filetype                 | 文件类型,指定哪种测试,对于查询测试,需要指定为 query |
|                                         | cfgdir                   | TDengine 集群配置文件所在的目录。                      |
|                                         | host                     | TDengine 服务端的 FQDN,默认为 localhost。             |
|                                         | port                     | TDengine 服务端的端口号,默认为 6030。                 |
|                                         | user                     | 连接 TDengine 服务端的用户名,默认为 root。            |
|                                         | password                 | 连接 TDengine 服务端的密码,默认为 taosdata。          |
|                                         | confirm_parameter_prompt | 在执行过程中传递确认提示,默认为否。                   |
|                                         | database                 | 数据库的名称,必填                                     |
|                                         | query_times              | 查询次数                                               |
|                                         | query mode               | 查询模式,选项:taosc 和 rest,默认为 taosc。          |
| specified_table_query/super_table_query | query_interval           | 查询时间间隔,单位是秒,默认是 0                       |
| specified_table_query/super_table_query | concurrent/threads       | 执行 SQL 的线程数,默认为 1。                          |
| super_table_query                       | stblname                 | 超级表名称, 必填                                       |
| sqls                                    | [sql](#sql)              | 执行的 SQL 命令,必填                                  |
| sqls                                    | result                   | 查询结果的结果文件,没有则为空。                       |
D
dingbo 已提交
271

G
gccgdb1234 已提交
272
### JSON 配置文件 (订阅场景)
D
dingbo 已提交
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311

```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"
      }
    ]
  }
}
```

W
wade zhang 已提交
312
### 配置文件参数说明(订阅场景)
D
dingbo 已提交
313

G
gccgdb1234 已提交
314 315
| 组                                      | 选项                     | 描述                                                     |
| --------------------------------------- | ------------------------ | -------------------------------------------------------- |
G
gccgdb1234 已提交
316
|                                         | filetype                 | 文件类型,指定哪种测试,对于订阅测试,需设置为 subscribe |
G
gccgdb1234 已提交
317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
|                                         | cfgdir                   | TDengine 集群配置文件的目录。                            |
|                                         | host                     | TDengine 服务端的 FQDN,默认为 localhost。               |
|                                         | port                     | TDengine 服务端的端口号,默认为 6030。                   |
|                                         | user                     | TDengine 服务端的用户名,默认为 root。                   |
|                                         | password                 | TDengine 服务端的密码,默认为 taosdata。                 |
|                                         | databases                | 数据库名称,需要                                         |
|                                         | confirm_parameter_prompt | 在执行过程中是否通过确认提示。                           |
| specified_table_query/super_table_query | concurrent/threads       | 执行 SQL 的线程数,默认为 1。                            |
| specified_table_query/super_table_query | interval                 | 执行订阅的时间间隔,默认为 0。                           |
| specified_table_query/super_table_query | restart                  | no: 继续之前的订阅,yes: 开始新的订阅。                  |
| specified_table_query/super_table_query | keepProgress             | 是否保留订阅的进度。                                     |
| specified_table_query/super_table_query | resubAfterConsume        | 是否取消订阅,然后再次订阅?                             |
| super_table_query                       | stblname                 | 超级表 的名称,必填                                      |
| sqls                                    | [sql](#sql)              | 执行的 SQL 命令,必填                                    |
| sqls                                    | result                   | 查询结果的结果文件,没有则为空。                         |
D
dingbo 已提交
332

W
wade zhang 已提交
333
## 参数详解
D
dingbo 已提交
334

335
### insert mode
D
dingbo 已提交
336

G
gccgdb1234 已提交
337
可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应 直接调用 libtao.so 提供的普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、以及 taosAdapte 的 schemaless 接口写入
D
dingbo 已提交
338

339
### insert interval
D
dingbo 已提交
340

G
gccgdb1234 已提交
341 342
只有当[interlace rows](#interlace-rows)大于 0 时才起作用。
意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
D
dingbo 已提交
343

344
### partial col num
D
dingbo 已提交
345

G
gccgdb1234 已提交
346
若该值为正数 n 时, 则仅向前 n 列写入,仅当 [insert_mode](#insert-mode) 为 taosc 和 rest 时生效,如果 n 为 0 则是向全部列写入。
D
dingbo 已提交
347

348
### batch create tbl num
D
dingbo 已提交
349

G
gccgdb1234 已提交
350
创建子表时每批次的建表数量,默认为 10。
D
dingbo 已提交
351

G
gccgdb1234 已提交
352
注:实际的批数不一定与该值相同,当执行的 SQL 语句大于支持的最大长度时,会自动截断再执行,继续创建。
D
dingbo 已提交
353

354
### auto create table
D
dingbo 已提交
355

G
gccgdb1234 已提交
356
仅当 [insert_mode](#insert-mode) 为 taosc, rest, stmt 并且 childtable_exists 为 "no" 时生效,该参数为 "yes" 表示 taosdump 在插入数据时会自动创建不存在的表;为 "no" 则表示要插入的表必须提前创建好。
D
dingbo 已提交
357

358
### interlace rows
D
dingbo 已提交
359

G
gccgdb1234 已提交
360
如果它的值为 0,意味着逐个子表逐个子表插入,直到上一张子表的数据插入全部完成才会开始插入下一张子表的数据。如果它的值为正数 n,将首先插入 n 条记录到第一张子表,然后插入 n 条记录到第二张子表,依此类推,在为最后一张子表插入了 n 条记录后会回到第一张子表重复这个过程,直到所有子表数据插入完成。
D
dingbo 已提交
361

362
### record per request
D
dingbo 已提交
363

G
gccgdb1234 已提交
364
每次请求插入的数据行数,也即 batch size,当其设置过大时,TDegnine 客户端驱动会返回相应的错误信息,此时需要调低这个参数的设置以满足写入要求。
D
dingbo 已提交
365

366
### columns
D
dingbo 已提交
367

G
gccgdb1234 已提交
368
指定总的普通列的数量。如果同时设置了该参数和[-b/--data-type](#data-type),则最后的结果列数为两者取大。如果 columns 指定的数量大于 [-b/--data-type](#data-type) 指定的列数,则未指定的列类型默认为 INT, 例如: `-l 5 -b float,double`, 那么最后的列为 `FLOAT,DOUBLE,INT,INT,INT`。如果 columns 指定的数量小于或等于 [-b/--data-type](#data-type) 指定的列数,则结果为 [-b/--data-type](#data-type) 指定的列和类型,例如: `-l 3 -b float,double,float,bigint`,那么最后的列为 `FLOAT,DOUBLE,FLOAT,BIGINT`
D
dingbo 已提交
369

370
### tag type
D
dingbo 已提交
371

G
gccgdb1234 已提交
372
设置超级表的标签类型,nchar 和 binary 类型可以同时设置长度,例如:
D
dingbo 已提交
373

G
gccgdb1234 已提交
374 375 376
```
taosBenchmark -A INT,DOUBLE,NCHAR,BINARY(16)
```
D
dingbo 已提交
377

G
gccgdb1234 已提交
378
如果没有设置标签类型,默认是两个标签,其类型分别为 INT 和 BINARY(16)。
D
dingbo 已提交
379

G
gccgdb1234 已提交
380
注意:在有的 shell 比如 bash 命令里面 “()” 需要转义,则上述指令应为:
D
dingbo 已提交
381

G
gccgdb1234 已提交
382 383 384
```
taosBenchmark -A INT,DOUBLE,NCHAR,BINARY\(16\)
```
D
dingbo 已提交
385

386
### data type
D
dingbo 已提交
387

G
gccgdb1234 已提交
388
指定普通列类型,如果不使用则默认为有三个普通列,其类型分别为 FLOAT, INT, FLOAT。
D
dingbo 已提交
389

390
### random
D
dingbo 已提交
391

G
gccgdb1234 已提交
392
若配置次参数,则随机生成要插入的数据。对于数值类型的 标签列/数据列,其值为该类型取值范围内的随机值。对于 NCHAR 和 BINARY 类型的 标签列/数据列,其值为指定长度范围内的随机字符串。
D
dingbo 已提交
393

394
### disorder ratio
D
dingbo 已提交
395

G
gccgdb1234 已提交
396
随机乱序时间戳的百分比,最大为 50,即为 50%。随机乱序时间戳为当前应插入数据的时间戳倒退随机乱序范围[disorder-range](#disorder-range)范围内的时间戳。
D
dingbo 已提交
397

398
### disorder range
D
dingbo 已提交
399

G
gccgdb1234 已提交
400
随机乱序时间戳的回退范围,只有当[-O/--disorder](#disorder-ratio)大于 0 时才有效,单位与数据库的时间精度相同。
D
dingbo 已提交
401

402
### prepared rand
D
dingbo 已提交
403

G
gccgdb1234 已提交
404 405
作为数据源预先生成的随机数据的数量,小的 prepare_rand
会节省内存,但会减少数据种类。若为 1,则生成的所有同类型的数据相同。
D
dingbo 已提交
406

407
### connection pool size
D
dingbo 已提交
408

G
gccgdb1234 已提交
409
该配置决定 taosBenchmark 预先建立的与 TDengine 服务端之间的连接的数量。若不配置,则与所指定的线程数相同。
D
dingbo 已提交
410

411
### data source
D
dingbo 已提交
412

G
gccgdb1234 已提交
413
数据的来源,默认为 taosBenchmark 随机产生,可以配置为 sample,即为使用 sample_file 参数指定的文件内的数据。
D
dingbo 已提交
414

415
### line protocol
D
dingbo 已提交
416

G
gccgdb1234 已提交
417
使用行协议插入数据,仅当 [insert_mode](#insert-mode) 为 sml 或 sml-rest 时生效,可选项为 line, telnet, json。
D
dingbo 已提交
418

419
### non stop mode
D
dingbo 已提交
420

G
gccgdb1234 已提交
421
指定是否持续写入,若为 "yes" 则 insert_rows 失效,直到 Ctrl + C 停止程序,写入才会停止。默认值为 "no"
D
dingbo 已提交
422

G
gccgdb1234 已提交
423
注:即使在持续写入模式下 insert_rows 失效,但其也必须被配置为一个非零正整数。
D
dingbo 已提交
424

425
### tcp transfer
D
dingbo 已提交
426

G
gccgdb1234 已提交
427
telnet 模式下的通信协议,仅当 [insert_mode](#insert-mode) 为 sml-rest 并且 [line_protocol](#line-protocol) 为 telnet 时生效。如果不配置,则默认为 http 协议。
D
dingbo 已提交
428

429
### normal table
D
dingbo 已提交
430

G
gccgdb1234 已提交
431
仅当 [insert_mode](#insert-mode) 为 taosc, stmt, rest 模式下可以使用,若指定则不创建超级表,只创建普通表。
D
dingbo 已提交
432

433
### childtable limit
D
dingbo 已提交
434

G
gccgdb1234 已提交
435
仅当 childtable_exists 为 yes 时生效,指定从超级表获取子表列表的上限。
D
dingbo 已提交
436

437
### childtable offset
D
dingbo 已提交
438

G
gccgdb1234 已提交
439
仅当 childtable_exists 为 yes 时生效,指定从超级表获取子表列表时的偏移量,即从第几个子表开始。
D
dingbo 已提交
440

441
### sample file
D
dingbo 已提交
442

G
gccgdb1234 已提交
443
指定 csv 格式的文件作为数据源,仅当 data_source 为 sample 时生效。
D
dingbo 已提交
444

G
gccgdb1234 已提交
445
若 csv 文件内的数据行数小于等于 prepared_rand,那么会循环读取 csv 文件数据直到与 prepared_rand 相同;否则则会只读取 prepared_rand 个数的行的数据。也即最终生成的数据行数为二者取小。
D
dingbo 已提交
446

447
### use sample ts
D
dingbo 已提交
448

G
gccgdb1234 已提交
449
仅当 data_source 为 sample 时生效,表示 sample_file 指定的 csv 文件内是否包含第一列时间戳,默认为 no。 若设置为 yes, 则使用 csv 文件第一列作为时间戳,由于同一子表时间戳不能重复,生成的数据量取决于 csv 文件内的数据行数相同,此时 insert_rows 失效。
D
dingbo 已提交
450

451
### tags file
D
dingbo 已提交
452

G
gccgdb1234 已提交
453
仅当 [insert_mode](#insert-mode) 为 taosc, rest 的模式下生效。
D
dingbo 已提交
454

G
gccgdb1234 已提交
455
最终的 tag 的数值与 childtable_count 有关,如果 csv 文件内的 tag 数据行小于给定的子表数量,那么会循环读取 csv 文件数据直到生成 childtable_count 指定的子表数量;否则则只会读取 childtable_count 行 tag 数据。也即最终生成的子表数量为二者取小。
D
dingbo 已提交
456

457
### type
D
dingbo 已提交
458

G
gccgdb1234 已提交
459
可选值请参考 [TDengine 支持的数据类型](reference/taos-sql/data-type)
D
dingbo 已提交
460

G
gccgdb1234 已提交
461
注:JSON 数据类型比较特殊,只能用于标签,当使用 JSON 类型作为 tag 时有且只能有这一个标签,此时 [count](#count)[len](#len) 代表的意义分别是 JSON tag 内的 key-value pair 的个数和每个 KV pair 的 value 的值的长度,value 默认为 string。
D
dingbo 已提交
462

463
### count
D
dingbo 已提交
464

G
gccgdb1234 已提交
465
指定该类型列连续出现的数量,例如 `"count": 4096` 即可生成 4096 个指定类型的列。
D
dingbo 已提交
466

467
### len
D
dingbo 已提交
468

G
gccgdb1234 已提交
469
指定该数据类型的长度,对 NCHAR,BINARY 和 JSON 数据类型有效。如果对其他数据类型配置了该参数,若为 0 , 则代表该列始终都是以 null 值写入;如果不为 0 则被忽略。
D
dingbo 已提交
470

471
### name
D
dingbo 已提交
472

G
gccgdb1234 已提交
473
列的名字,若与 count 同时使用,比如 `"name":"current", "count":3`, 则 3 个列的名字分别为 current, current_2. current_3
D
dingbo 已提交
474

475
### sql
D
dingbo 已提交
476

G
gccgdb1234 已提交
477 478
对于超级表的查询 SQL,在 SQL 命令中保留 "xxxx",程序会自动将其替换为超级表的所有子表名。
替换为超级表中所有的子表名。