分类: Mysql/postgreSQL
2013-01-19 22:54:15
mysqlslap 可以考虑用来构建复杂业务的数据库访问的测试用例;可以分别构建读、写、混合的测试负载;
可以进行多表测试;可以执行比较大的并发测试;不同引擎的测试;
可以配置参与测试的表的列的类型,这算是比较好的测试选项。
但是测试的请求执行时的灵活性不够大,是重复执行的,随机性需要测试人员自己来控制;
同时测试数据的准备和清理过程没有分离,大型的测试准备工作没法复用;
它也没有提供测试结果的图形化输出。
总之,mysqlslap算是一个比较底层的测试工具,能对mysql服务器测试提供原生的一些支持。
mysqlslap可以做复杂业务的数据库访问的基线测试,但是要做比较大的改造。
sysbench 可以考虑用来做数据库服务器的一个简单的性能基线测试,可以综合利用它还可测试CPU,磁盘IO的数据来进行
系统分析。
可以提供比较数据库测试比较专业的测试结果;也能做读、写、混合的测试;支持带存储过程的混合测试;
测试的准备过程与清理过程是分离的。
但是不支持多表测试;测试用例不能自定义;
super smack 提供量化负载加载;可以在内部或外部产生测试数据;不同的连接上可以执行不同的查询语句;
测试数据可以随机化,因此也就决定了super smack可以用来模拟复杂业务的数据库访问。
甚至super smack可以用来模拟真实用户上线后访问数据库的压力。
mysqlslap 可以通过改造测试数据的准备和清理过程来缩短测试的时间
sybench 改进的余地比较小,可以通过升级到0.5版提供多表的测试。
再来看测试工具的测试模型,这个模型决定了能否满足我们的测试需求。
mysqlslap
并发模型
多线程模式,每个线程一个连接,不是大并发的模型,大并发模型一般是连接模型与处理模型分离。
话又说回来,如果是连接模型与处理模型分离,那么就是变成了服务器了。
压力模型
每个连接上多次执行请求,请求是完全相同的,不能随机。
每个连接/线程是独立的。
不支持分布式来构建压力
sysbench
并发模型
多线程模型,每个线程对应一个连接
压力模型
每个连接上多次执行请求,请求随机构造,并支持事务测试
所有的连接/线程共享请求执行的总数
不支持分布式来构建压力
super-smack
并发模型
多进程模型,每个进程对应一个连接,可以扩展至多个连接
压力模型
每个连接上多次执行请求,同一个连接上执行的多次请求是随机的;
每个连接执行的请求也是不同的。
所有的连接/进程是独立的。
不支持分布式来构建压力
后续有需要,会使用tpcc,tpch,tsung来测试mysql