mysql的高性能压力测试2014-05-15前言:根据业务需要,需测试mysql 性能和压力测试.这里我说下测试方法和 测试过程以及测试中出错的问题估计很多人 跟我一样 要测试mysql 的性能 压力,网上找了很多资料有很多,但是很乱,所以这里我做个总结,拿自己的真实服务器测试的。并且 想测多少数据 都能模拟出来!这里只介绍方法。MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试。[root@localhost smacks]# mysql -Vmysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200 -uadmin -p123456
–auto-generate-sql, -a自动生成测试表和数据–auto-generate-sql-load-type=type测试语句的类型。取值包括:read,key,write,update和mixed(默认)。–number-char-cols=N, -x N自动生成的测试表中包含多少个字符类型的列,默认1–number-int-cols=N, -y N自动生成的测试表中包含多少个数字类型的列,默认1–number-of-queries=N总的测试查询次数(并发客户数×每客户查询次数)–query=name,-q使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。–create-schema测试的schema,MySQL中schema也就是database–commint=N多少条DML后提交一次–compress, -C如果服务器和客户端支持都压缩,则压缩信息传递–concurrency=N, -c N并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符–engine=engine_name, -e engine_name创建测试表所使用的存储引擎,可指定多个–iterations=N, -i N测试执行的迭代次数–detach=N执行N条语句后断开重连–debug-info, -T打印内存和CPU的信息–only-print只打印测试语句而不实际执行
自动生成一条测试用的语句,不用你写sql进行测试比如这句的结果是(分别测试了并发为50,和100时,总共进行1000次访问花费的时间 )这里列出了最大、最小、平均值。均为相同的值,因为只进行了一次测试mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uadmin -p123456分别 测试 myisam 和 innodb 引擎
BenchmarkRunning for engine myisamAverage number of seconds to run all queries: 0.638 secondsMinimum number of seconds to run all queries: 0.565 secondsMaximum number of seconds to run all queries: 0.924 secondsNumber of clients running queries: 50Average number of queries per client: 20BenchmarkRunning for engine myisamAverage number of seconds to run all queries: 0.691 secondsMinimum number of seconds to run all queries: 0.686 secondsMaximum number of seconds to run all queries: 0.696 secondsNumber of clients running queries: 100Average number of queries per client: 10BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 13.189 secondsMinimum number of seconds to run all queries: 12.886 secondsMaximum number of seconds to run all queries: 13.337 secondsNumber of clients running queries: 50Average number of queries per client: 20BenchmarkRunning for engine innodbAverage number of seconds to run all queries: 12.449 secondsMinimum number of seconds to run all queries: 12.299 secondsMaximum number of seconds to run all queries: 12.592 secondsNumber of clients running queries: 100Average number of queries per client: 10
这个工具 无法 自己规定 多少数据,所以我后来 有拿了 super smack 工具测试要去网上下载 vegan.net/tony/supersmack/super-smack-1.3.tar.gztar zxvf super-smack-1.3.tar.gzcd super-smack-1.3./configure --prefix=/usr/local/super-smack-1.3 --with-mysql=/usr/local/mysql/ --with-mysql-lib=/usr/local/mysql/lib/mysql/ --with-mysql-include=/usr/local/mysql/include/mysql/