【LoadRunner技术讲座12】使用LoadRunner监测MySQL数据库的性能-方法二

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

方法二:通过编写脚本来进行监控

 

// mysql_dll.cpp : Defines the entry point for the DLL application.

#include "stdafx.h"
#include "stdlib.h"

MYSQL *conn=NULL;
MYSQL_RES *p_res_ptr=NULL;
MYSQL_ROW sqlrows;


BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
    return TRUE;
}

extern "C" int _declspec(dllexport) init_mysql_connection(char *str_server,char *str_username,char *str_pwd,char *str_Table)
{
conn=mysql_init(NULL);

    if(!conn)
{
  printf("\nFailed to initate MySQL connection");
  return 1;
  exit(0);
}
    else
{
  printf("\nSuccess to initate MySQL connection");
  if (!mysql_real_connect(conn,str_server,str_username,str_pwd,str_Table,0,NULL,0))
  {
   printf( "Failed to connect to MySQL: Error: %s\n", mysql_error(conn));
  }
  else
  {
   printf("\nLogged on to %s sucessfully",str_server);
   return 0;
  }
  return 0;
}
}

extern "C" int _declspec(dllexport) close_mysql_connection()
{
if(conn=NULL)
{
  printf("\nConnection is Null");
  return 1;
  exit(0);
}
else
{
     mysql_free_result(p_res_ptr);
  printf("\nClose connection");
  mysql_close(conn);  
  return 0;
}
}

//"show status like \'qcache%\'"

extern "C" int _declspec(dllexport) get_mysql_table_query(char *str_query)
{
int res=0;
res=mysql_query(conn,str_query);
if(res)
{
  printf("Failed to mysql query: Error: %s\n", mysql_error(conn));
  return 1;
}
else
{
  printf("\nSucess in Mysql Query");
  return 0;

}

}

 

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[0]=*str_query)
   {
    strcpy(str_data,sqlrows[1]);
  
  
   }
  }
}

return NULL;

}

 

lr 9.1中代码:
Action()
{

        int i=0;
        double x;
        char *str_data;


        str_data=(char *)malloc(20*sizeof(char));
        lr_load_dll("D:\\vc\\mysql_dll\\Debug\\mysql_dll.dll");
        i= init_mysql_connection("localhost","root","123456","mysql");
        lr_output_message("%d",i);
  
       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);
            lr_user_data_point("hits",x);
            lr_think_time(5);
       }
        lr_output_message("%d",x);
     close_mysql_connection();
return 0;
}










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/808761,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
17天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
22 0
|
23天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
23天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
2天前
|
缓存 关系型数据库 MySQL
MySQL数据库优化技巧:提升性能的关键策略
索引是提高查询效率的关键。根据查询频率和条件,创建合适的索引能够加快查询速度。但要注意,过多的索引可能会增加写操作的开销,因此需要权衡。
|
3天前
|
存储 数据可视化 关系型数据库
MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀
本文探讨MySQL中时间类型的选择,阐述datetime、timestamp、整形时间戳等类型特点以及它们在千万级数据量下的查询性能
MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀
|
4天前
|
关系型数据库 MySQL 中间件
【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测
【4月更文挑战第19天】在高并发环境下,死锁发生在多个线程间循环等待资源时,导致无限期等待。MySQL中,死锁可通过`innodb_lock_wait_timeout`参数设置超时或`innodb_deadlock_detect`开启死锁检测来解决。默认的50s超时可能不适用于在线服务,而频繁检测会消耗大量CPU。应对热点行更新引发的性能问题,可以暂时关闭死锁检测(风险是产生大量超时),控制并发度,或通过分散记录减少锁冲突,例如将数据分拆到多行以降低死锁概率。
19 1
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
28天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
78 0
|
7天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
41 2