文章目录
sqlbench 安装
使用案例
命令行参数
今天给大家介绍一个可以用于测量和比较不同 SQL 语句执行时间的开源工具:sqlbench。如果觉得文章对你有用,欢迎评论📝、点赞👍、推荐🎁
sqlbench 是一个使用 Go 语言开发的 SQL 性能测试工具,主要用于开发环境中不同 SQL 语句执行效率(CPU)的测量和比较。sqlbench 遵循 MIT 开源协议,支持 Windows、Linux 以及 macOS 平台,目前支持 PostgreSQL 数据库。
sqlbench 安装
sqlbench 提供了二进制安装包,可以在 GitHub 上直接下载。如果已经安装了 Go 1.13 或者更高版本,也可以通过源码安装或者升级 sqlbench:
$ go get -u github.com/felixge/sqlbench
使用案例
假如我们需要比较三种不同查询语句计算从 1 到 1000 累计总和的性能。第一种方法是使用窗口函数:
SELECT i, sum(i) OVER (ORDER BY i) AS sum
FROM generate_series(1, 1000) g(i);
第二种方法是使用递归通用表表达式(WITH 子句):
WITH RECURSIVE sums AS (
SELECT 1 AS i, 1 AS sum
UNION
SELECT i+1, sum+i FROM sums WHERE i <= 1000
)
SELECT * FROM sums;
第三种方法是使用高斯求和公式:
SELECT i, (i * (i + 1)) / 2 AS sum
FROM generate_series(1, 1000) g(i);
我们可以分别将它们保存为 3 个文件:window.sql、recursive.sql、gauss.sql;或者使用 sqlbench 源码 examples 目录中提供的示例文件。现在我们想要比较它们的性能差异,输入以下命令分别运行 1000 次上述 3 个查询语句,返回执行时间的统计、PostgreSQL 版本以及执行的 SQL 语句等:
$ ./sqlbench -c postgres://tony:Pswd!1234@192.168.56.104:5432/hrdb -v -n 1000 ./examples/sum/*.sql
其中,-c 用于指定数据库连接,tony:Pswd!1234 是用户名和密码,192.168.56.104 是 PostgreSQL 服务器地址,5432 是服务端口,hrdb 是连接的数据库名;-v 用于打印详细信息,包括所有的 SQL 查询和 PostgreSQL 版本;-n 表示运行查询的次数;最后是要执行的 SQL 脚本文件。
执行以上命令会在终端不停刷新统计数据,最终返回以下结果: