2020-04-03 13:23:32 +00:00
---
toc_priority: 61
toc_title: clickhouse-benchmark
---
2020-03-20 10:10:48 +00:00
# clickhouse-benchmark {#clickhouse-benchmark}
2019-12-25 10:42:00 +00:00
Connects to a ClickHouse server and repeatedly sends specified queries.
2020-12-30 13:33:47 +00:00
**Syntax**
2019-12-25 10:42:00 +00:00
2020-12-06 08:53:02 +00:00
``` bash
$ clickhouse-benchmark --query ["single query"] [keys]
```
or
2020-03-20 10:10:48 +00:00
``` bash
2019-12-25 10:42:00 +00:00
$ echo "single query" | clickhouse-benchmark [keys]
```
2020-03-20 10:10:48 +00:00
2019-12-25 10:42:00 +00:00
or
2020-03-20 10:10:48 +00:00
``` bash
2019-12-25 10:42:00 +00:00
$ clickhouse-benchmark [keys] < < < "single query"
```
If you want to send a set of queries, create a text file and place each query on the individual string in this file. For example:
2020-03-20 10:10:48 +00:00
``` sql
2020-12-30 13:33:47 +00:00
SELECT * FROM system.numbers LIMIT 10000000;
SELECT 1;
2019-12-25 10:42:00 +00:00
```
2020-12-30 13:33:47 +00:00
Then pass this file to a standard input of `clickhouse-benchmark` :
2019-12-25 10:42:00 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2020-12-30 17:36:06 +00:00
clickhouse-benchmark [keys] < queries_file ;
2019-12-25 10:42:00 +00:00
```
2020-03-18 18:43:51 +00:00
## Keys {#clickhouse-benchmark-keys}
2019-12-25 10:42:00 +00:00
2021-07-29 15:20:55 +00:00
- `--query=QUERY` — Query to execute. If this parameter is not passed, `clickhouse-benchmark` will read queries from standard input.
2021-01-13 23:16:40 +00:00
- `-c N` , `--concurrency=N` — Number of queries that `clickhouse-benchmark` sends simultaneously. Default value: 1.
- `-d N` , `--delay=N` — Interval in seconds between intermediate reports (to disable reports set 0). Default value: 1.
2021-01-20 15:38:35 +00:00
- `-h HOST` , `--host=HOST` — Server host. Default value: `localhost` . For the [comparison mode ](#clickhouse-benchmark-comparison-mode ) you can use multiple `-h` keys.
2021-01-13 23:16:40 +00:00
- `-p N` , `--port=N` — Server port. Default value: 9000. For the [comparison mode ](#clickhouse-benchmark-comparison-mode ) you can use multiple `-p` keys.
- `-i N` , `--iterations=N` — Total number of queries. Default value: 0 (repeat forever).
2020-12-30 13:33:47 +00:00
- `-r` , `--randomize` — Random order of queries execution if there is more than one input query.
- `-s` , `--secure` — Using `TLS` connection.
2021-01-13 23:16:40 +00:00
- `-t N` , `--timelimit=N` — Time limit in seconds. `clickhouse-benchmark` stops sending queries when the specified time limit is reached. Default value: 0 (time limit disabled).
2020-12-30 13:33:47 +00:00
- `--confidence=N` — Level of confidence for T-test. Possible values: 0 (80%), 1 (90%), 2 (95%), 3 (98%), 4 (99%), 5 (99.5%). Default value: 5. In the [comparison mode ](#clickhouse-benchmark-comparison-mode ) `clickhouse-benchmark` performs the [Independent two-sample Student’ s t-test ](https://en.wikipedia.org/wiki/Student%27s_t-test#Independent_two-sample_t-test ) to determine whether the two distributions aren’ t different with the selected level of confidence.
2020-03-21 04:11:51 +00:00
- `--cumulative` — Printing cumulative data instead of data per interval.
- `--database=DATABASE_NAME` — ClickHouse database name. Default value: `default` .
2020-12-30 13:33:47 +00:00
- `--json=FILEPATH` — `JSON` output. When the key is set, `clickhouse-benchmark` outputs a report to the specified JSON-file.
2020-03-21 04:11:51 +00:00
- `--user=USERNAME` — ClickHouse user name. Default value: `default` .
- `--password=PSWD` — ClickHouse user password. Default value: empty string.
- `--stacktrace` — Stack traces output. When the key is set, `clickhouse-bencmark` outputs stack traces of exceptions.
2020-12-30 13:33:47 +00:00
- `--stage=WORD` — Query processing stage at server. ClickHouse stops query processing and returns an answer to `clickhouse-benchmark` at the specified stage. Possible values: `complete` , `fetch_columns` , `with_mergeable_state` . Default value: `complete` .
2020-03-21 04:11:51 +00:00
- `--help` — Shows the help message.
2019-12-25 10:42:00 +00:00
If you want to apply some [settings ](../../operations/settings/index.md ) for queries, pass them as a key `--<session setting name>= SETTING_VALUE` . For example, `--max_memory_usage=1048576` .
2020-03-18 18:43:51 +00:00
## Output {#clickhouse-benchmark-output}
2019-12-25 10:42:00 +00:00
By default, `clickhouse-benchmark` reports for each `--delay` interval.
Example of the report:
2020-03-20 10:10:48 +00:00
``` text
2019-12-25 10:42:00 +00:00
Queries executed: 10.
localhost:9000, queries 10, QPS: 6.772, RPS: 67904487.440, MiB/s: 518.070, result RPS: 67721584.984, result MiB/s: 516.675.
2020-03-20 10:10:48 +00:00
0.000% 0.145 sec.
10.000% 0.146 sec.
20.000% 0.146 sec.
30.000% 0.146 sec.
40.000% 0.147 sec.
50.000% 0.148 sec.
60.000% 0.148 sec.
70.000% 0.148 sec.
80.000% 0.149 sec.
90.000% 0.150 sec.
95.000% 0.150 sec.
99.000% 0.150 sec.
99.900% 0.150 sec.
99.990% 0.150 sec.
2019-12-25 10:42:00 +00:00
```
In the report you can find:
2020-03-21 04:11:51 +00:00
- Number of queries in the `Queries executed:` field.
2020-03-20 10:10:48 +00:00
2020-03-21 04:11:51 +00:00
- Status string containing (in order):
2019-12-25 10:42:00 +00:00
2020-03-21 04:11:51 +00:00
- Endpoint of ClickHouse server.
- Number of processed queries.
2020-12-30 13:33:47 +00:00
- QPS: How many queries the server performed per second during a period specified in the `--delay` argument.
- RPS: How many rows the server reads per second during a period specified in the `--delay` argument.
- MiB/s: How many mebibytes the server reads per second during a period specified in the `--delay` argument.
- result RPS: How many rows placed by the server to the result of a query per second during a period specified in the `--delay` argument.
- result MiB/s. How many mebibytes placed by the server to the result of a query per second during a period specified in the `--delay` argument.
2019-12-25 10:42:00 +00:00
2020-03-21 04:11:51 +00:00
- Percentiles of queries execution time.
2019-12-25 10:42:00 +00:00
2020-04-30 18:19:18 +00:00
## Comparison Mode {#clickhouse-benchmark-comparison-mode}
2019-12-25 10:42:00 +00:00
2020-03-20 10:10:48 +00:00
`clickhouse-benchmark` can compare performances for two running ClickHouse servers.
2019-12-25 10:42:00 +00:00
To use the comparison mode, specify endpoints of both servers by two pairs of `--host` , `--port` keys. Keys matched together by position in arguments list, the first `--host` is matched with the first `--port` and so on. `clickhouse-benchmark` establishes connections to both servers, then sends queries. Each query addressed to a randomly selected server. The results are shown for each server separately.
2020-03-18 18:43:51 +00:00
## Example {#clickhouse-benchmark-example}
2019-12-25 10:42:00 +00:00
2020-03-20 10:10:48 +00:00
``` bash
2019-12-25 10:42:00 +00:00
$ echo "SELECT * FROM system.numbers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark -i 10
```
2020-03-20 10:10:48 +00:00
``` text
2019-12-25 10:42:00 +00:00
Loaded 1 queries.
Queries executed: 6.
localhost:9000, queries 6, QPS: 6.153, RPS: 123398340.957, MiB/s: 941.455, result RPS: 61532982.200, result MiB/s: 469.459.
2020-03-20 10:10:48 +00:00
0.000% 0.159 sec.
10.000% 0.159 sec.
20.000% 0.159 sec.
30.000% 0.160 sec.
40.000% 0.160 sec.
50.000% 0.162 sec.
60.000% 0.164 sec.
70.000% 0.165 sec.
80.000% 0.166 sec.
90.000% 0.166 sec.
95.000% 0.167 sec.
99.000% 0.167 sec.
99.900% 0.167 sec.
99.990% 0.167 sec.
2019-12-25 10:42:00 +00:00
Queries executed: 10.
localhost:9000, queries 10, QPS: 6.082, RPS: 121959604.568, MiB/s: 930.478, result RPS: 60815551.642, result MiB/s: 463.986.
2020-03-20 10:10:48 +00:00
0.000% 0.159 sec.
10.000% 0.159 sec.
20.000% 0.160 sec.
30.000% 0.163 sec.
40.000% 0.164 sec.
50.000% 0.165 sec.
60.000% 0.166 sec.
70.000% 0.166 sec.
80.000% 0.167 sec.
90.000% 0.167 sec.
95.000% 0.170 sec.
99.000% 0.172 sec.
99.900% 0.172 sec.
99.990% 0.172 sec.
2019-12-25 10:42:00 +00:00
```
2020-12-30 13:33:47 +00:00
2021-09-19 20:05:54 +00:00
[Original article ](https://clickhouse.com/docs/en/operations/utilities/clickhouse-benchmark.md ) <!--hide-->