clikchouse官方提供了一个benchmark工具,能够连接到ClickHouse服务器并重复发送指定的查询。
使用语法:
#第一种语法
echo "single query" | clickhouse-benchmark [keys]
#第二种语法
clickhouse-benchmark [keys] <<< "single query"
#其中的single query代表简单的sql查询
#[keys]表示的是使用的参数
如果想执行多条语句,可以将语句写到文件中,然后将文件传给clickhouse-benchmark。例如:
#在文件queries_file中写sql语句,每条sql语句一行:
SELECT * FROM system.numbers LIMIT 10000000
SELECT 1
#将文件queries_file传递给clickhouse-benchmark
clickhouse-benchmark [keys] < queries_file
keys:
参数 | 含义 | 默认值 |
-c N 或者 --concurrency=N | clickhouse-benchmark发送查询的并发数量 | 1 |
-d N 或者 --delay=N | 运行中返回报告的时间间隔,设置0以禁用 | 1 |
-h WORD 或者 --host=WORD | 服务器host。 对于 comparison mode ,可以使用多个-h。 | localhost |
-p N 或者 --port=N | 服务器port。 对于 comparison mode ,可以使用多个-p。 | 9000 |
-i N 或者 --iterations=N | 查询的总量 | 0 |
-r 或者 --randomize | 在输入的查询多于1个的情况下采用随机顺序 | 无 |
-s 或者 --secure | 使用TLS连接 | 无 |
-t N 或者 --timelimit=N | 时间限制(s),一到时间会停止发送请求 | 0(表示禁用时间限制) |
--confidence=N | T-test的置信区间级别。 可能的值有: 0 (80%), 1 (90%), 2 (95%), 3 (98%), 4 (99%), 5 (99.5%)。 对于 comparison mode , Independent two-sample Student's t-test 测试来确定在改置信区间级别下,两个分布是否相同。 | 5 |
--cumulative | 输出累计统计数据,而不输出间隔统计数据 | 无 |
--database=DATABASE_NAME | clickhouse运行查询的库名 | default |
--json=FILEPATH | JSON输出。当设置了这个键,clickhouse会将报告输出到指定的JSON文件 | 无 |
--user=USERNAME | 运行查询的用户名 | default |
--password=PSWD | 对应用户名的密码 | 空字符串 |
--stacktrace | 堆栈跟踪输出。设置后会输出异常的堆栈输出 | 无 |
--stage=WORD | 服务器上的查询处理阶段。clickhouse会停止查询并返回指定阶段的值。可能值:complete, fetch_columns, with_mergeable_state | complete |
--help | 显示帮助菜单 | 无 |
--continue_on_errors | 有错误时不退出,继续运行 | 无 |
如果想要对查询应用其他设置项,可以将想要应用的设置作为键值传递。
模板为:--<session setting name>= SETTING_VALUE
例如:--max_memory_usage=1048576
输出:
默认情况下,clickhouse会返回每个时间间隔(通过--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参数指定的时间段内,服务器每秒读取多少MB的数据
- result RPS:在--delay参数指定的时间段内,服务器每秒返回多少行查询结果
- result MiB/s:在--delay参数指定的时间段内,服务器每秒返回多少MB的查询结果
- 查询执行时间的百分比。
- 当前版本中,
- 这个并不是n%的sql语句平均运行时间的意思,不然也不会是递增的
- 这个是说,在所有运行的sql语句中,第n%个sql语句的执行时间是多少秒
Comparison mode:
clickhouse-benchmark 可以比较两个正在运行的ClickHouse服务器的性能。
要使用Comparison mode,请使用--host和--port提供两个服务器连接端口,键值按照在列表中的位置组合在一起。clickhouse-benchmark会建立到两个服务器的连接,并发送查询。
每个查询会随机发送到任一个服务器,并分别反悔每台服务器的基准报告。
举例:
echo "SELECT * FROM system.numbers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark -i 10
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.
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.
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.
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.