mysqlslap 一个MySQL数据库压力测试工具

在Xen/KVM虚拟化中,一般来说CPU、内存、网络I/O的虚拟化效率都非常高了,而磁盘I/O虚拟化效率较低,从而磁盘可能会是瓶颈。一般来说,数据库对磁盘I/O要求比较高的应用,可以衡量一下在客户机中运行MySQL、Oracle等数据库服务的性能(不过我知道也有在客户机中运行数据库服务器,效率也还可接受)。本文不介绍MySQL在虚拟机中的性能表现情况(也许今后会考虑),而是介绍一个MySQL数据库的压力测试工具——msqlslap。

mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具。通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存储引擎(MyISAM,InnoDB等)在相同环境下的相同并发压力下的性能差别。
mysqlslap 官方介绍:http://dev.mysql.com/doc/refman/5.6/en/mysqlslap.html

mysqlslap的运行有如下3个步骤:
1. 创建schema、table、test data 等,使用单个连接 (在MySQL中,schema就是database);
2. 运行负载测试,可以使用多个并发客户端连接;
3. 测试环境清理(删除创建的数据、表等),使用单个连接。

对于SQL语句,可以直接在mysqlslap命令行中输入字符串,也可以指定使用包含有SQL语句的文件。
我使用过的几个例子如下:


mysqlslap的语法如下:
shell> mysqlslap [options]

mysqlslap常用参数 [options] 详解(用网上文档修改,并个人总结而来;原汁原味文档,还是参考MySQL官方对mysqlslap的说明吧),:

说明:
测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。可以用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。

一些测试参数实例(-p后面跟的是mysql的用户root的密码):

参考文档:
http://dev.mysql.com/doc/refman/5.6/en/mysqlslap.html
http://www.cnblogs.com/ylqmf/archive/2011/10/21/2220674.html

master

Stay hungry, stay foolish.

One Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注

*