网上很多文章都是基于windows的,或者是odbc链接的,如果当作练习可以,但实际测试的时候我们往往遇到的不是上述的情况,那么如何对mysql进行性能测试呢?
本文将已测试某条sql语句为例进行讲解,ok,下面正式开始。
介绍
As most performance testers know passing data between multiple vUsers in scripts can be difficult, there may be occasions where you want to use a common set of data for multiple scripts or use data created by one script as input data for a subsequent script. Mercury developed Virtual Table Server (VTS) as a solution to this problem. Unfortunately, VTS has a number of major limitations, for example it is easy to close it down without saving data, it can't run as a service and it does not allow you to write SQL queries; instead you must use the functions provided, like lrvtc_retrieve_row() and lrvtc_query_row().
捏着鼻子读读上面的e文吧,虽然我也很方案,呵呵,还是比较简单的,大家看看把。
下载
可以到如下网址下载:
http://down.51cto.com/data/403722
安装
So easy,解压到你的loadrunner安装目录即可,是把解压后的include和bin目录放到loadrunner的安装目录哦!!!有不少童鞋可耻的直接把解压的loadrunner mysqllibs目录放到下面了,汗啊。
使用
不废话,直接上代码
Vuser_init
#define MYSQLSERVER "XXX.XXX.XXX.XXX" # mysql的ip
#define MYSQLUSERNAME "XXX"# 用户名
#define MYSQLPASSWORD "XXX"# 密码
#define MYSQLDB"XXX"# 数据库
#define MYSQLPORT "XXX"# 端口
#include "Ptt_Mysql.h"# 引入mysql lib的h文件
vuser_init()
{
return 0;
}
看看,简单吧,哈哈,接着往下走
Action
Action()
{
char chQuery[128];
MYSQL *Mconn;
lr_load_dll("libmysql.dll"); # 引入libmysql的dll
Mconn = lr_mysql_connect(MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT));# connection mysql
sprintf(chQuery, "update 表名 set a=a+1 where id=123;"
);
lr_mysql_query(Mconn, chQuery);# 执行sql
lr_mysql_disconnect(Mconn);# close connection
return 0;
}
怎么样?还是很简单吧,就是定义点变量,然后在引入个dll,剩余的就是大家熟悉的sql了,这个是已update为例子的,select和insert大致一样,只需稍作修改即可,这里就不举例了。
至于vuser_end木有任何修改!
当然既然有测试,必然有监控,至于如何监控,我的blog里有不少方法,可以到http://xqtesting.blog.51cto查找。
这里我在多介绍几个命令:
l Show innodb status;
l Show processlist;
l Show open tables from db_name;
具体代表什么大家自己百度一下吧,很简单
1、这个东西比较好用,非常赞一个,可以链接本地的或者远程的都ok
2、记得user要有一定权限哦
3、有时候会提示内存冲突,大家最好关闭其他软件,比如像QQ管家、foxmail等,小弟用的时候发现和这两个冲突
参考资料http://www.bish.co.uk/forum/index.php?topic=50.0