clickhouse-benchmark
连接到 ClickHouse 服务器并重复发送指定的查询。
语法
$ clickhouse-benchmark --query ["single query"] [keys]
或
$ echo "single query" | clickhouse-benchmark [keys]
或
$ clickhouse-benchmark [keys] <<< "single query"
如果要发送一组查询,请创建一个文本文件,并将每个查询放在此文件中的单独字符串中。例如
SELECT * FROM system.numbers LIMIT 10000000;
SELECT 1;
然后将此文件传递给 clickhouse-benchmark
的标准输入
clickhouse-benchmark [keys] < queries_file;
键
--query=QUERY
— 要执行的查询。如果未传递此参数,clickhouse-benchmark
将从标准输入读取查询。-c N
,--concurrency=N
—clickhouse-benchmark
同时发送的查询数量。默认值:1。-d N
,--delay=N
— 中间报告之间的间隔(以秒为单位)(要禁用报告,请设置为 0)。默认值:1。-h HOST
,--host=HOST
— 服务器主机。默认值:localhost
。对于比较模式,您可以使用多个-h
键。-i N
,--iterations=N
— 查询总数。默认值:0(永远重复)。-r
,--randomize
— 如果有多个输入查询,则查询执行的随机顺序。-s
,--secure
— 使用TLS
连接。-t N
,--timelimit=N
— 时间限制,以秒为单位。当达到指定的时间限制时,clickhouse-benchmark
停止发送查询。默认值:0(禁用时间限制)。--port=N
— 服务器端口。默认值:9000。对于比较模式,您可以使用多个--port
键。--confidence=N
— T 检验的置信水平。可能的值:0 (80%),1 (90%),2 (95%),3 (98%),4 (99%),5 (99.5%)。默认值:5。在比较模式下,clickhouse-benchmark
执行独立双样本学生 t 检验,以确定两个分布是否在选定的置信水平下没有差异。--cumulative
— 打印累积数据而不是每个时间间隔的数据。--database=DATABASE_NAME
— ClickHouse 数据库名称。默认值:default
。--user=USERNAME
— ClickHouse 用户名。默认值:default
。--password=PSWD
— ClickHouse 用户密码。默认值:空字符串。--stacktrace
— 堆栈跟踪输出。设置此键后,clickhouse-bencmark
输出异常的堆栈跟踪。--stage=WORD
— 服务器端的查询处理阶段。ClickHouse 停止查询处理并在指定的阶段向clickhouse-benchmark
返回答案。可能的值:complete
,fetch_columns
,with_mergeable_state
。默认值:complete
。--help
— 显示帮助信息。
如果要为查询应用某些设置,请将它们作为键 --<session setting name>= SETTING_VALUE
传递。例如,--max_memory_usage=1048576
。
输出
默认情况下,clickhouse-benchmark
报告每个 --delay
间隔。
报告示例
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.
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.
在报告中,您可以找到
-
Queries executed:
字段中的查询数。 -
状态字符串,包含(按顺序)
- ClickHouse 服务器的端点。
- 已处理的查询数。
- QPS:服务器在
--delay
参数中指定的时间段内每秒执行的查询数。 - RPS:服务器在
--delay
参数中指定的时间段内每秒读取的行数。 - MiB/s:服务器在
--delay
参数中指定的时间段内每秒读取的兆字节数。 - result RPS:服务器在
--delay
参数中指定的时间段内每秒放置到查询结果中的行数。 - result MiB/s。服务器在
--delay
参数中指定的时间段内每秒放置到查询结果中的兆字节数。
-
查询执行时间的百分位数。
比较模式
clickhouse-benchmark
可以比较两个正在运行的 ClickHouse 服务器的性能。
要使用比较模式,请通过两对 --host
、--port
键指定两个服务器的端点。键按参数列表中的位置匹配在一起,第一个 --host
与第一个 --port
匹配,依此类推。 clickhouse-benchmark
建立与两个服务器的连接,然后发送查询。每个查询都寻址到随机选择的服务器。结果显示在一个表格中。
示例
$ echo "SELECT * FROM system.numbers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark --host=localhost --port=9001 --host=localhost --port=9000 -i 10
Loaded 1 queries.
Queries executed: 5.
localhost:9001, queries 2, QPS: 3.764, RPS: 75446929.370, MiB/s: 575.614, result RPS: 37639659.982, result MiB/s: 287.168.
localhost:9000, queries 3, QPS: 3.815, RPS: 76466659.385, MiB/s: 583.394, result RPS: 38148392.297, result MiB/s: 291.049.
0.000% 0.258 sec. 0.250 sec.
10.000% 0.258 sec. 0.250 sec.
20.000% 0.258 sec. 0.250 sec.
30.000% 0.258 sec. 0.267 sec.
40.000% 0.258 sec. 0.267 sec.
50.000% 0.273 sec. 0.267 sec.
60.000% 0.273 sec. 0.267 sec.
70.000% 0.273 sec. 0.267 sec.
80.000% 0.273 sec. 0.269 sec.
90.000% 0.273 sec. 0.269 sec.
95.000% 0.273 sec. 0.269 sec.
99.000% 0.273 sec. 0.269 sec.
99.900% 0.273 sec. 0.269 sec.
99.990% 0.273 sec. 0.269 sec.
No difference proven at 99.5% confidence