使用--auto-generate-sql参数表示用mysqlslap工具自己生成的SQL脚本来测试并发压力
创新互联建站-专业网站定制、快速模板网站建设、高性价比济水街道网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式济水街道网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖济水街道地区。费用合理售后完善,十余年实体公司更值得信赖。
mysqlslap --auto-generate-sql -uroot -p123456
并发测试,使用–concurrency来模拟并发连接,连接数可以多个,用逗号隔开
mysqlslap --auto-generate-sql --concurrency=100 -uroot -p123456
mysqlslap --auto-generate-sql --concurrency=50,100 -uroot -p123456
使用--iterations模拟迭代测试,用于需要多次执行测试得到平均值。
mysqlslap --auto-generate-sql --iterations=5 -uroot -p123456
使用--engine测试不同的存储引擎的性能进行对比
mysqlslap --auto-generate-sql --concurrency=50,100 --iterations=5 --engine=myisam,innodb -uroot -p123456
--query=name,-q 指定自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。--create-schema 指定自定义的测试数据库名称,
mysqlslap --auto-generate-sql --concurrency=50,100 --create-schema="landclash" --query="call landclash.sp_player_getname(34);" --number-of-queries=5000 -uroot -p123456
首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。
怎么使用tpcc做mysql的压力测试
首先mysql/bin 目录里应该有mysqlslap.exe,我的版本是 5.5.11,里面是有这玩意的
在执行之前需要在mysql里建一个mysqlslap的database
use mysqlslap
然后建表news,classify输数据...
在命令行里输入:
C:\Program Files\MySQL\MySQL Server 5.5\binmysqlslap -u root –no-defaults -p -c
reate-schema=example --query="SELECT n.* FROM news n,classify c WHERE n.type=c.id AND c.type='2'" --iterations=1000
其中-u为username,-p为使用密码,query引号后的内容为执行的测试的sql,循环1000次
要求输入密码
Enter password: ****
结果:
Benchmark
Average number of seconds to run all queries: 0.007 seconds
Minimum number of seconds to run all queries: 0.000 seconds
Maximum number of seconds to run all queries: 1.016 seconds
Number of clients running queries: 1
Average number of queries per client: 1
一个是使用测试工具,比如mysqlslap等等等等。 追问: mysqlslap工具在网上看了,但不知道怎么用啊,能否告知一二?要下载这个工具吗? 回答: 你要是有MYSQL5系列的数据库,这个工具是自带的啊。如果没有,建议下载。 追问: 我是MySql5.1的啊,但还是没找到在哪儿啊?能否指点一下啊,谢谢! 回答: 晕,你当成可视化的了?无语。你打开控制台,然后就可以执行测试的命令了。你可以参考下MYSQL的官方说明:dev.mysql.com/doc/refman/5.1/en/mysqlslap.html这个网上有很多的测试教程,你可以看看,不过不是特别实用。 追问: 我是应用程序的怎么用啊? 回答: 我看,你可能有点误解了压力测试了。第一,你的应用程序,是否是以数据为中心的,如果不是,那之前我和你说的那些全部就是废话。第二,就算是以数据为中心的,你也没说明白你要测试什么,如果你要测试MYSQL,那没什么必要。因为已经是很成熟的产品了。第三,如果是你要测试你的程序,而且你的程序拥有后台数据库,那你可以针对不同平台的解决方案,使用不同的测试方法,比如如果是.NET + MYSQL数据库 ,就可以使用VS自带的测试工具,连同代码,和数据访问都可以进行测试。
有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能。这里将演示如何利用这些工具进行测试。
mysqlslap
mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中)。如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语句。
MySQL Benchmark Suite (sql-bench)
在MySQL 的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。
这个测试套件的主要好处是包含了大量预定义的测试,容易使用,所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试。其也可以用于高层次测试,比较两个服务器的总体性能。当然也可以只执行预定义测试的子集(例如只测试UPDATE 的性能)。这些测试大部分是CPU 密集型的,但也有些短时间的测试需要大量的磁盘I/O 操作。
这个套件的最大缺点主要有:它是单用户模式的,测试的数据集很小且用户无法使用指定的数据,并且同一个测试多次运行的结果可能会相差很大。因为是单线程且串行执行的,所以无法测试多CPU 的能力,只能用于比较单CPU 服务器的性能差别。使用这个套件测试数据库服务器还需要Perl 和BDB 的支持,相关文档请参考.
Super Smack
Super Smack是一款用于MySQL 和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。这是一个复杂而强大的工具,可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。测试定义在"smack"文件中,smack 文件使用一种简单的语法定义测试的客户端、表、查询等测试要素。
Database Test Suite
Database Test Suite 是由开源软件开发实验室(OSDL,Open Source DevelopmentLabs)设计的,发布在SourceForge 网站上,这是一款类似某些工业标准测试的测试工具集,例如由事务处理性能委员会(TPC,Transaction Processing Performance Council)制定的各种标准。特别值得一提的是,其中的dbt2 就是一款免费的TPC-C OLTP 测试工具(未认证)。之前本书作者经常使用该工具,不过现在已经使用自己研发的专用于MySQL 的测试工具替代了。
Percona's TPCC-MySQL Tool
我们开发了一个类似TPC-C 的基准测试工具集,其中有部分是专门为MySQL 测试开发的。在评估大压力下MySQL 的一些行为时,我们经常会利用这个工具进行测试(简单的测试,一般会采用sysbench 替代),在源码库中有一个简单的文档说明。
sysbench
sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持Lua 脚本语言,Lua 对于各种测试场景的设置可以非常灵活。sysbench 是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。(节选自《高性能MySQL》)
LR只是模拟用户和服务器进行交互,你要监控服务器上数据库的情况,应该在LR跑批时在服务器上用数据库监控工具收集,mysql我不太清楚,好像有个Spotlight什么的,oracle的话用awr,另外linux上的系统性能监控工具可以用nmon