xiangfei108 发表于 2010-5-2 16:48:42

LoadRunner测试mysql性能实践。。。

最近公司突然换了mysql数据,并将mysql性能测试问题交给了我,本人以前也没有接触过mysql和LoadRunner,都是摸着石头过河。经过一段时间探索现将一些心得记录如下,请高手指点不足之处。(下面说的都是在windows环境下)

测试mysql性能就是观察一些global status信息以及所在系统的性能表现(吼吼我现在这么认为的,请高手指点),所以根据网上前辈的一些经验,找到了下面两种方法:
方法一:使用工具SpotlightonMySQL,关于这个工具网上的资料只有手册,我还在学习。到官网上下载最新的版本,不然会提示ODBC连接失败。

方法二:使用LoadRunner,可以利用sitescope,也可以自己写脚本。关于使用sitescope就不多说了,网上都有说明。主要说一下自定义脚本,首先编译dll文件,设置vs2005编译环境,将my_alloc.h、my_list.h、mysql.h、mysql_com.h、mysql_time.h、mysql_version.h拷贝到工程目录下,工程中添加libmysql.lib。
dll中原程序:
。。。。。。
extern "C" int _declspec(dllexport) get_mysql_query_data(char *str_query,char *str_data)
{
    unsigned long u1_numrow=0;
    unsigned int i_index = 0;
p_res_ptr=mysql_use_result(conn);
if(p_res_ptr){
while((sqlrows=mysql_fetch_row(p_res_ptr))){
    if(*sqlrows=*str_query)                   //此处不能直接判断两个字符串相等,可用if(!strcmp(sqlrows,str_query))
   {
    strcpy(str_data,sqlrows);
    }
}
}
return NULL;
}
。。。。。。
编译时可能还会提示一个什么错误,上网查一下原因即可。

LoadRunner中代码:
。。。。。。
       for(;;)
       {
            get_mysql_query_data("Qcache_hits",str_data);
            i=get_mysql_table_query("show status like \'qcache%\'");    //应该和上面一条语句颠倒了
            lr_output_message("%d",i);
            x = atof(str_data);                                     //不知道为什么在我的LoadRunner里转换的数不对,要用atol才行
            lr_user_data_point("hits",x);
            lr_think_time(5);
       }
。。。。。。


dll编译之后,在LoadRunner里调用即可得到Qcache_hits的值。
同样道理可以添加任何你想要看的status值。


有个疑问请高手解答一下:监测mysql的status参数时候,选择什么样的频率,观察多长时间合适?

test_test81 发表于 2010-5-2 23:25:23

学习!!!!!!

苏高跃 发表于 2010-5-4 10:32:57

回复 1# 的帖子

测数据库用LR不够专业,相关测试指标也很少;建议用第一种方法;

caiw0418 发表于 2011-1-13 14:31:18

学习了

msnshow 发表于 2011-1-15 10:24:04

mysql自已带有性能测试工具的啊

yxd2006 发表于 2012-2-17 15:34:07

关注中……

wenhuifu 发表于 2012-9-2 14:21:55

营养贴,可很老了。我也正在做MYSQL方面的测试。
页: [1]
查看完整版本: LoadRunner测试mysql性能实践。。。