关于开源:如何对-Databend-进行基准测试
Databend 的设计指标之一就是放弃最佳性能,为了更好观测和评估性能,社区不光提供一套简略的本地基准测试计划,还建设了可视化的继续基准测试。 本地基准测试hyperfine 是一种跨平台的命令行基准测试工具,反对预热和参数化基准测试。Databend 倡议应用 hyperfine 通过 ClickHouse / MySQL 客户端执行基准测试,本文将应用 MySQL 客户端来介绍它。 后期筹备:进行本地基准测试之前,必须实现以下几项筹备工作: 参照 Docs - Deploy Databend1 实现部署。装置 MySQL 客户端。依据 hyperfine - installation2 的提醒装置 hyperfine。设计基准测试套件:依据你的数据集特色和要害查问设计 SQL 语句,如果须要事后加载数据,请参考 Docs - Load Data 3 。 为不便示范,这里选用 Continuous Benchmarking - Vectorized Execution Benchmarking4 列出的 10 条语句,保留到 bench.sql 中。 SELECT avg(number) FROM numbers_mt(100000000000)SELECT sum(number) FROM numbers_mt(100000000000)SELECT min(number) FROM numbers_mt(100000000000)SELECT max(number) FROM numbers_mt(100000000000)SELECT count(number) FROM numbers_mt(100000000000)SELECT sum(number+number+number) FROM numbers_mt(100000000000)SELECT sum(number) / count(number) FROM numbers_mt(100000000000)SELECT sum(number) / count(number), max(number), min(number) FROM numbers_mt(100000000000)SELECT number FROM numbers_mt(10000000000) ORDER BY number DESC LIMIT 10SELECT max(number), sum(number) FROM numbers_mt(1000000000) GROUP BY number % 3, number % 4, number % 5 LIMIT 10应用 bash 脚本简化流程:上面给出一个 benchmark.sh 范本,能够简化整个基准测试流程: #!/bin/bashWARMUP=3RUN=10export script="hyperfine -w $WARMUP -r $RUN"script=""function run() { port=$1 sql=$2 result=$3 script="hyperfine -w $WARMUP -r $RUN" while read SQL; do n="-n "$SQL" " s="echo "$SQL" | mysql -h127.0.0.1 -P$port -uroot -s" script="$script '$n' '$s'" done <<< $(cat $sql) script="$script --export-markdown $result" echo $script | bash -x}run "$1" "$2" "$3"在这个脚本中: 应用 -w/--warmup & WARMUP 在理论基准测试之前运行 3 次程序执行来预热。应用 -r/--runs & RUN 要求执行 10 次基准测试。容许指定 Databend MySQL 兼容服务的端口。容许指定输出的 SQL 文件,以及输入时的 Markdown 文件。在应用前须要先运行 chmod a+x ./benchmark.sh 赋予其可执行权限。用法如下所示: ./benchmark.sh <port> <sql> <result>执行基准测试并获取后果: 在这个例子中,MySQL 兼容服务的端口是 3307 ,基准测试用到的 SQL 文件为 bench.sql , 预期的输入在 databend-hyperfine.md 。 ...