mysql mysqlslap压力测试用例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql mysqlslap压力测试用例相关的知识,希望对你有一定的参考价值。

A 测试用例

1 只写压力测试:

  用例:自动创建表 写入一百万条数据 客户端并发500 测试innodb存储引擎 

  命令:mysqlslap --auto-generate-sql-add-autoincrement -a --number-of-queries=1000000 --number-char-cols=4 --number-int-cols=4 --engine=innodb --debug-info --concurrency=1000 -uroot -ppass -hmysql_ip --auto-generate-sql-load-type=write 

测试结果:

Benchmark

        Running for engine innodb

        Average number of seconds to run all queries: 65.679 seconds

        Minimum number of seconds to run all queries: 65.679 seconds

        Maximum number of seconds to run all queries: 65.679 seconds

        Number of clients running queries: 1000

        Average number of queries per client: 1000


User time 2.19, System time 8.72

Maximum resident set size 55156, Integral resident set size 0

Non-physical pagefaults 9038, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 1701179, Involuntary context switches 130


2 只读压力测试:

用例:自动创建测试表 (测试表会自动写入100条数据 )全表查询(类似select * from testtable;)一百万次 客户端并发1000 测试innodb             存储引擎 

命令:mysqlslap --auto-generate-sql-add-autoincrement -a  --number-char-cols=4 --number-int-cols=4 --engine=innodb --debug-info --concurrency=1000 -urootchar-cols=4 --number-int-cols=4 --engine=innodb --debug-info --concurrency=1000 -es=1000000         [[email protected] ~]# mysqlslap --auto-generate-sql-add-autoincrement -a  --number-char-cols=4 --number-int-cols=4 --engine=innodb --debug-info --concurrency=1000 -uroot -ppass -hhostname  --auto-generate-sql-load-type=read  --number-of-queries=1000000

测试结果:

Benchmark

        Running for engine innodb

        Average number of seconds to run all queries: 472.059 seconds

        Minimum number of seconds to run all queries: 472.059 seconds

        Maximum number of seconds to run all queries: 472.059 seconds

        Number of clients running queries: 1000

        Average number of queries per client: 1000


User time 76.06, System time 79.68

Maximum resident set size 121716, Integral resident set size 0

Non-physical pagefaults 61682, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 15308027, Involuntary context switches 82

   

3 读写混合测试:

 用例:读写混合测试一百万条语句, 客户端并发1000 测试innodb存储引擎 。select 语句非全表查询,包含条件表达类似(WHERE id =  ‘xxx‘;)

命令: mysqlslap --auto-generate-sql-add-autoincrement -a  --number-char-cols=4 --number-int-cols=4 --engine=innodb --debug-info --concurrency=1000 -uroot -ppass -hmysql_ip  --auto-generate-sql-load-type=mixed  --number-of-queries=1000000

测试结果:

Benchmark

        Running for engine innodb

        Average number of seconds to run all queries: 45.507 seconds

        Minimum number of seconds to run all queries: 45.507 seconds

        Maximum number of seconds to run all queries: 45.507 seconds

        Number of clients running queries: 1000

        Average number of queries per client: 1000


User time 4.41, System time 7.64

Maximum resident set size 56900, Integral resident set size 0

Non-physical pagefaults 9601, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0


总结:读压力测试和读写混合压力测试中使用的select语句不一样,导致结果相差很大。读压力测试是全表所有记录都查询出来,而读写混合测试中的select 语句使用了条件过滤。具体可以再原有命令中增加--only-print参数来打印实际测试过程使用的语句。


B 参数说明:

引用自http://www.ha97.com/5182.html  ,对--number-of-queries解释进行修正。

--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。

--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。

--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。

--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1

--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1

--number-of-queries=N 总的测试的sql语句次数(并发客户数×每客户查询次数)

--query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。

--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。

--commint=N 多少条DML后提交一次。

--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。

--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。

--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。

--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。

--only-print 只打印测试语句而不实际执行。

--detach=N 执行N条语句后断开重连。

--debug-info, -T 打印内存和CPU的相关信息。


本文出自 “我博故我在” 博客,请务必保留此出处http://encoding.blog.51cto.com/1403836/1745390

以上是关于mysql mysqlslap压力测试用例的主要内容,如果未能解决你的问题,请参考以下文章

用mysql自带工具mysqlslap对数据库进行压力测试

MySQL压力测试-mysqlslap

mysqlslap 压力测试使用总结

mysqlslap对mysql进行压力测试

mysql之 mysql数据库压力测试工具(mysqlslap)

mysqlslap 压力测试工具