使用 mysqlslap 压测

mysqlslap 是 mysql 自带的压测工具,本文记录使用 mysqlslap 对 SELECT 语句进行压测时使用的各参数及其含义、以及测试结果的简单说明。

压测语句

1mysqlslap -h127.0.0.1 -uroot -p -P6033
2-c 10,50,100,150,200,500,1000,1500,2000,4000,5000
3--number-of-queries=20000 -i 1 --create-schema="test"
4-q "SELECT SQL_NO_CACHE * FROM t1 WHERE (id = 100) AND (rule_id = 1608) AND (date_key = 20211111) AND (rank <= 3) ORDER BY rank, user_id LIMIT 3"

参数说明

-h:服务器 IP 或者域名,同 mysql 命令

-u:连接服务器的用户名,用 mysql 命令

-p:连接服务器的密码,同 mysql 命令

-P:服务器端口,如果是默认端口 3306 则不用指定此参数,同 mysql 命令

-c:并发数量,要同时测试多种不同数量的并发,多个数字之间用英文逗号(,)隔开,并且逗号后面不能有空格以及其它空白字符,否则空格或空白字符后面的并发数会被丢弃。

并发数量表示开启多少个连接发起并发请求,例如:并发数量 10 相当于执行 10 个 mysql 命令连接到服务器,用于模拟 10 个用户的并发

--number-of-queries:对于每 1 种并发数量,总共执行多少次 SQL 语句,按照上面的压测语句,并发数量为 10,总共执行 20000 次查询,则每个连接执行 1000 次查询

-i:对于每 1 种并发数量,进行多少轮测试

--create-schema:指定查询语句所在的数据库

-q:查询语句,对于 SELECT 语句,测试时最好使用 SQL_NO_CACHE 避免使用 SQL 缓存导致测试结果不准备

测试结果

1Benchmark
2	Average number of seconds to run all queries: 18.223 seconds
3	Minimum number of seconds to run all queries: 18.223 seconds
4	Maximum number of seconds to run all queries: 18.223 seconds
5	Number of clients running queries: 10
6	Average number of queries per client: 2000

Average number of seconds to run all queries:执行多轮测试时,每 1 轮测试花费时间的平均值

Minimum number of seconds to run all queries:执行多轮测试时,执行最快的那 1 轮测试所花费的时间

Maximum number of seconds to run all queries:执行多轮测试时,执行最慢的那 1 轮测试所花费的时间

Number of clients running queries:并发数,这个就是 -c 参数指定的那个并发数量

Average number of queries per client:每个连接执行的 SQL 语句数量,等于 --number-of-queries / -c




欢迎扫码关注公众号,我们一起学习更多 MySQL 知识: