有时性能测试,会涉及到直接压测数据库,测试数据库处理sql的水平,或者通过sql脚本向数据库写数据做铺地数据

这里贴上一个自己用的对数据库操作的脚本

一,首先要去下载一个LR压MYSQL的一个库文件,放到bin和include目录下

二,在头文件中,添加对库的引用


#include "Ptt_Mysql.h"
#include "mysql.h"
#include "mysql_com.h"
#include "mysql_time.h"
#include "mysql_version.h"
#include "typelib.h"
#include "my_list.h"
#include "my_alloc.h"
#define MYSQLSERVER "HOSTIP"
#define MYSQLUSERNAME "USER"
#define MYSQLPASSWORD "PASSWORD"
#define MYSQLDB "DATABASE_NAME"
#define MYSQLPORT "PORT"
char chQuery[1024];
int statu=1;
int status=0;
MYSQL *Mconn;
char sql_query[256], sql_sub_query[50];
int i=0, res=0, conn_fail=0, conn_iter=0;
char response[50];// to go
vuser_init()
{
lr_load_dll ("libmysql.dll");
lr_start_transaction("mysql_conn"); //设置一个连接数据库的事务
/*------------------------------------------------------------------------*/
/* Initialise MySQL */
if(!(Mconn = mysql_init(NULL)))
{
lr_message("Error -1: Cannot initialize MySQL - %s", mysql_error(Mconn));
//return -1;
statu = 0;
lr_end_transaction("mysql_conn", LR_FAIL); //初始化数据库失败判定事务失败
}
/*------------------------------------------------------------------------*/
do
{
/* Connect to database */
if (!mysql_real_connect(Mconn, MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT), NULL, 0))
{
conn_fail = -2;
conn_iter++;
sleep(100);
}
else
conn_fail = 0;
}
while(conn_fail < 0 && conn_iter < 10);
if (conn_fail < 0)
{
lr_message("Error -2: %s", mysql_error(Mconn));
//mysql_close(Mconn);
//return -2;
statu = 0;
lr_end_transaction("mysql_conn", LR_FAIL); //连接数据库失败判定事务失败
}
else
{
//lr_message("MySql - Good Connection");
//mysql_close(Mconn);
statu = 1;
lr_end_transaction("mysql_conn", LR_PASS); //连接数据库成功,事务通过。
}
return 0;
}


三,Action中的脚本


Action()
{
if(statu){ //成功连接数据库后才进行执行sql的操作
lr_start_transaction("mysql_select");
sprintf(chQuery, "SELECT * from cms-member-dev.cms_member_basic where id = '1007449268564533248'");//查询论坛用户
//sprintf(chQuery,"UPDATE lr_test SET password = "%s" WHERE username='tom'",lr_eval_string ("{pwd}"));
/*
sprintf(chQuery,"update pre_ucenter_members set username='dd' where username='qq' ");//更改用户名qq为dd
sprintf(chQuery,"delete from pre_ucenter_members ORDER BY uid desc LIMIT 1");//删除最后添加的一条数据
*/
status = lr_mysql_query(Mconn, chQuery);
if(status!=0){ //判断sql是否执行成功
lr_end_transaction("mysql_select",LR_FAIL);
}else{
lr_end_transaction("mysql_select",LR_PASS);
}

lr_start_transaction("mysql_insert");
sprintf(chQuery,"SELECT * from cms_member_basic where id = '1007449268564533248'");//插入数据
status = lr_mysql_query(Mconn, chQuery);
if(status!=0){ //判断sql是否执行成功
lr_end_transaction("mysql_insert",LR_FAIL);
}else{
lr_end_transaction("mysql_insert",LR_PASS);
}
}
return 0;
}

 

三 VUSER_END()中的脚本

vuser_end()
{
lr_mysql_disconnect(Mconn); //关闭数据库连接
return 0;
}

  

【性能测试】:loadrunner直压MYSQL数据库的脚本开发的更多相关文章

  1. 老李分享:loadrunner操作mysql数据库

    老李分享:loadrunner操作mysql数据库        在poptest测试开发工程师就业培训的课程中,针对一套商业系统进行性能测试,目标是mysql后台数据库的负载能力,在这里我把测试代码 ...

  2. Windows下MySQL数据库备份脚本(一)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  3. Windows下MySQL数据库备份脚本(二)

    说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...

  4. mysql数据库备份脚本

    mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...

  5. Ubuntu Server下MySql数据库备份脚本代码

    明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...

  6. mysql数据库备份脚本一例

    例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/l ...

  7. MySQL 数据库备份脚本

    MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER=& ...

  8. LoadRunner访问Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

  9. LoadRunner访问 Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

随机推荐

  1. Java Thread系列(三)线程安全

    Java Thread系列(三)线程安全 一.什么是线程安全 线程安全概念:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. 线程安全来 ...

  2. [GO]conext的使用

    package main import ( "context" "time" "net/http" "fmt" &quo ...

  3. 借用服务器百度BAE

    3一.简介 对于普通的开发者,不必要买服务器和买域名,这时要将自己的项目传到服务器上,就用到了百度BAE这样的,可以直接传项目的服务器. 二.申请 登录百度开放平台上 三.登录网址,选择要使用的项目 ...

  4. leancloud 云引擎

    可以部署网站的云端,云代码的升级版.

  5. akka 练手 原来第一次是原封不动的返回传出去的参数

    今天,有介绍akka的文章,就下了个源码的demo练手! 在TimeServer 这个实例中主要就2个文件 server端 static void Main(string[] args) { usin ...

  6. Linux 批量管理工具

    pssh/pscp(Python) ansible(Python) saltstack(Python) chef puppet(Ruby) fabric(Python)

  7. MD5签名

    /// <summary>        /// 校验签名        /// </summary>        /// <param name="mode ...

  8. PRINT语句详解

    首先摘自联机丛书中的PRINT语法如下: PRINT msg_str | @local_variable | string_exp  以上可看出PRINT语句的输出参数均为字符或字符串的常量或变量 - ...

  9. LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)

    题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...

  10. jmeter+ant+jenkins+mac报告优化(二):添加90% Line和QPS

    一.优化内容 1.Summary中只标红Failures数 2.Pages页面按Average Time倒序排序 3.Average Time超过2s标黄显示 4.Pagelist 模块中针对错误和超 ...