测试环境:
操作系统:CentOS6.5_x64
Mysql版本:5.1.71
mysqlslap是设计来模拟多个客户端负载MySQL服务器,并报告每个阶段的时间诊断程序。
mysqlslap运行在三个阶段:
1.创建模式,表,以及可选的存储程序或数据,用于测试。这个阶段使用单一客户端连接。
2.运行负载测试。这个阶段可以使用很多客户端连接。
3.清理(断开连接,如果指定删除表)。这个阶段使用单一客户端连接。
Mysql数据库默认最大连接数是100,一般生产环境是不够的,在my.cnf [mysqld]下添加 max_connections=1024 增加到1024,重启Mysql。
Mysql默认使用是MyISAM存储引擎,如下查看:
[root@localhost ~]# mysqlslap --concurrency=100,200 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --number-int-cols=20 --number-char-cols=30 --engine=innodb --create-schema=test --number-of-queries=1024 --host=localhost --user=root --password=123.com --debug-info
参数说明:
--concurrency= #并发连接数量(可逗号隔开),例如:concurrency=100,200
--engines= #要测试的存储引擎,逗号隔开;
--iterations= #运行多少次后,得到结果;
--auto-generate-sql #自动生成SQL脚本来测试;
--auto-generate-sql-load-type= #测试类型是read还是write,还是mixed(混合);
--number-of-queries= #执行查询的次数;
--number-int-cols= #测试表int字段类型的数量;
--number-char-cols= #测试表的char类型字段的数量;
--create-schema =test #创建测试的数据库;
--debug-info #输出CPU、内存等系统相关信息;
测试说明:模拟测试两次读写并发,第一次100,第二次200,自动生成SQL脚本,测试表包含20个init字段,30个char字段,每次执行1024查询请求。测试引擎分别是myisam,innodb,memory。
MyISAM测试
InnoDB测试
Memory测试
测试结果说明:
Myisam第一次100客户端同时发起增查用1.913/s,第二次200客户端同时发起增查用1.49/s
Innodb第一次100客户端同时发起增查用2.94/s,第二次200客户端同时发起增查用3.683/s
Memory第一次100客户端同时发起增查用1.963/s,第二次200客户端同时发起增查用1.599/s
由此可见MyISAM存储引擎处理性能是最好的,也是最常用的,但不支持事务。
InonDB存储引擎提供了事务型数据引(ACID),在事务型引擎里使用最多的。具有事务回滚,系统修复等特点。
Memory存储引擎数据都在内存中进行操作的,默认使用HASH索引,具有很高的插入、查询处理效率,因为数据存在内存中,当Mysql重启或关闭机器这些数据都会消失。 在本次测试中未能体现其优势。不支持事务。
上述数据仅供参考,根据本身业务需求选择合适存储引擎,需要注意的是服务器的性能不同直接影响到测试的结果,应多次测试,求平均值。