一、clickhouse-benchmark
clickhouse-benchmark 是 ClickHouse 官方提供的命令行基准测试工具,它的主要用途是模拟负载、评估查询性能,以及对比不同配置或版本间的差异。在进行系统调优或架构评估时,这是一个非常实用的帮手。
1、语法
使用前,先来了解其基本语法格式:
$ clickhouse-benchmark --query 查询语句 --ignore-error 忽略错误 -c 同时发送的查询数量 -C 逐步增加并行查询数量直至指定值 -d 报告之间的时间间隔(秒)-h 服务器主机名 -i 查询次数 --port 服务器端口 --cumulative 输出累计数据 --其他参数
2、执行一条SQL
我们可以用它来执行单条 SQL 并查看性能指标。例如,查询一个系统表,并指定执行3次。如果不使用 -i 参数,默认会无限次执行下去。
[root@LQ clickhouse-server]# clickhouse-benchmark --query “select * from system.users” -i 3
Loaded 1 queries.
Queries executed: 3 (100%).
localhost:9000, queries: 3, QPS: 19.786, RPS: 19.786, MiB/s: 0.003, result RPS: 19.786, result MiB/s: 0.003.
0% 0.002 sec.
10% 0.002 sec.
20% 0.002 sec.
30% 0.002 sec.
40% 0.002 sec.
50% 0.002 sec.
60% 0.002 sec.
70% 0.002 sec.
80% 0.002 sec.
90% 0.002 sec.
95% 0.002 sec.
99% 0.002 sec.
99.9% 0.002 sec.
99.99% 0.002 sec.
3、执行多条SQL
如果想对多条 SQL 进行测试,可以先将这些语句写进一个文件,然后运行该文件。
首先,创建 ben.txt 文件,内容如下:
#ben.txt
select * from system.users;
select * from system.tables;
接着,执行命令:
clickhouse-benchmark -i 3 < ben.txt
4、比较多台服务器性能
clickhouse-benchmark 支持指定多个主机地址和端口,命令会将查询发送到所有指定的服务器并发执行,便于通过输出报告对比不同集群或节点的性能差异。这对于数据库/中间件/技术栈的选型与容量规划很有帮助。
clickhouse-benchmark --query “select * from system.users” --host=localhost --port=9000 --host=localhost --port=9000 -i 10
执行结果示例:
[root@LQ clickhouse-server]# clickhouse-benchmark --query “select * from system.users” --host=localhost --port=9000 --host=localhost --port=9000 -i 10
Loaded 1 queries.
Queries executed: 10 (100%).
localhost:9000, queries: 4, QPS: 21.785, RPS: 21.785, MiB/s: 0.003, result RPS: 21.785, result MiB/s: 0.003.
localhost:9000, queries: 6, QPS: 32.677, RPS: 32.677, MiB/s: 0.005, result RPS: 32.677, result MiB/s: 0.005.
0% 0.003 sec. 0.002 sec.
10% 0.003 sec. 0.002 sec.
20% 0.003 sec. 0.002 sec.
30% 0.003 sec. 0.002 sec.
40% 0.003 sec. 0.002 sec.
50% 0.004 sec. 0.002 sec.
60% 0.004 sec. 0.002 sec.
70% 0.004 sec. 0.002 sec.
80% 0.004 sec. 0.002 sec.
90% 0.004 sec. 0.003 sec.
95% 0.004 sec. 0.003 sec.
99% 0.004 sec. 0.003 sec.
99.9% 0.004 sec. 0.003 sec.
99.99% 0.004 sec. 0.003 sec.
Difference at 99.5% confidence: mean difference is 0.0012757649166666666, but confidence interval is 0.0008286564051865036
二、ClickHouse Playground
ClickHouse Playground 是一个线上沙盒环境,它允许用户无需自行搭建服务器或集群,即可通过即时运行查询来试用和探索 ClickHouse。Playground 中预先提供了若干示例数据集,非常适合初学者或开发者快速验证想法。
1、可以使用客户端直接连接
你可以使用本地的 clickhouse-client 直接连接到 Playground 服务器:
clickhouse-client --secure --host play.clickhouse.com --user explorer
2、可以登录网站使用网页客户端
你也可以直接访问 Playground 网站,使用其内置的网页客户端查询示例数据。需要注意的是,该环境通常仅开放查询权限,不允许用户创建新表或插入数据,主要用于体验和教学。
三、clickhouse-compressor
clickhouse-compressor 是一个用于数据压缩和解压缩的独立命令行工具,它支持 ClickHouse 常用的压缩算法,如 LZ4 和 ZSTD。
1、使用LZ4压缩数据
基本用法是通过标准输入输出流进行压缩:
clickhouse-compressor < input_file > output_file
示例:将 test.json 文件压缩为 LZ4 格式。
clickhouse-compressor < test.json > test.json.lz4
2、将LZ4格式的数据解压缩
使用 --decompress 参数进行解压:
clickhouse-compressor --decompress < input_file > output_file
示例:解压 test.json.lz4 文件。
clickhouse-compressor --decompress < test.json.lz4 > test.json
3、使用ZSTD压缩数据
若想使用 ZSTD 算法进行压缩,需要添加 --zstd 参数:
clickhouse-compressor --zstd < input_file > output_file
示例:将 test.json 文件压缩为 ZSTD 格式。
clickhouse-compressor --zstd < test.json > test.json.zst
4、使用ZSTD解压数据
解压 ZSTD 格式文件时,需要同时指定 --zstd 和 --decompress 参数:
clickhouse-compressor --zstd --decompress < input_file > output_file
示例:解压 test.json.zst 文件。
clickhouse-compressor --zstd --decompress < test.json.zst > testzst.json
掌握这三个实用工具,能让你在 ClickHouse 的性能评估、快速体验和数据预处理等场景下游刃有余,从而更高效地完成数据平台的日常运维与开发工作。想了解更多关于后端 & 架构的实战技巧,欢迎访问云栈社区。