【Jmeter】数据库查询、参数化、结果存储详解

简介

Jmeter 除了可以发起Http请求,还支持多种协议,可对数据库和中间件发起请求。通过和数据库的交互,Jmeter可以实现接口测试和性能测试的数据准备,数据校验。Jmeter支持多种类型的数据库,只要在引入数据驱动的时候加载不同的驱动包和数据库连接信息即可。本文以Mysql为例详细描述Jmeter如何处理数据库,包含以下知识点:

  • Jmeter如何配置数据库连接
  • Jmeter如何发起数据库请求, 包括只读请求和更新请求
  • Jmeter如何发起带变量的数据库请求
  • Jmeter如何存储数据库返回的结果,将其保存为变量供后续使用

 Jmeter的核心数据库组件有:JDBC Connection Configuration(数据库连接配置)和JDBC Request(数据库请求)

JDBC Connection Configuration数据库连接配置

JDBC Connection Configuration是用于配置数据库连接信息的,主要有如下选项:

  • Variable Name Bound to Pool: 数据库连接名,JDBC Request通过此变量名定义要查询的数据库
  • Database Connection Configuration:

    数据库连接信息(连接URL,Driver类,用户名,密码)

  • Connection Pool Configuration:

    线程池配置,多线程运行时的性能配置,接口测试采用默认配置

  • Connection Validation by Pool:

    连接池验证信息,采用默认值即可

发起JDBC Request以前需要指明对应的数据库连接配置,一个Jmeter脚本中可以有多个数据库连接配置

Jmeter支持不同类型的数据库,针对不同类型的数据库要引入不同的jar包(把jar包放到ext目录下),并在JDBC Connection Configuration中选择不同的 JDBC Driver class和数据库URL,具体格式参见下图

JDBC连接池配置完毕以后就可以通过JDBC Request发起数据库查询和更新操作。

JDBC Request 数据库请求

JDBC Request 表示数据库请求,功能类似于客户端的SQL QUERY功能,关键配置信息如下:

  • Variable Name Bound to Pool: 指定要操作的数据库信息,此处的名字为JDBC Connection Configuration中定义的名字
  • SQL Query: 查询类型,常用的有Select,Update和 Prepared Statement
  1. Select Statement:  Select语句
  2. Update Statement: Insert/Update/Delete 语句
  3. Callable Statement:回调语句
  4. Prepared Statement:预编译语句
  5. Commit:提交
  6. Rollback:回滚
  7. AutoCommit:自动回滚
  • Query:数据库语句,可一次编写多个数据库处理语句,此处需要和QueryType匹配
  1. 当编写的是Select语句时,QueryType需要选择Select Statement
  2. 当编写的是Update语句时,QueryType需要选择Update Statement
  3. 当编写的语句带变量时,QueryType需要选择Prepared Statement

当涉及事物时,需要选择相应的Commit,Rollback和AutoCommit选项

JDBC Request 参数化数据库请求

有时候操作数据库操时,查询或者更新的值是动态变化的,针对这种情况Jmeter提供了参数化的支持,可以将Jmeter的变量直接应用到数据库查询当中。在Jmeter中,参数化数据库请求非常简单,只需要把原有的固定值替换为变量即可(Jmeter中$符号表示变量)。Jmeter不仅可以直接引用脚本中已经生成的变量,还可以引用函数助手生成的变量,如下示例就是使用Jmeter函数助手通过RandomString生成随机变量作为数据库uname的插入值,通过这种方式实现了随机往数据库插入不同用户名的用户。

JDBC Request 定义数据库返回的结果变量

Jmeter通过在JDBC Request中指明Variable names,来存储数据库的返回结果。下图的示例就是查询出指定条件的用户,并且把查询出的前七列数据赋值给n1,n2,n3,n4,n5,n6,n7.

  • 在JDBC Request的Variables names中指定变量名,即可将查询结果按顺序存储到对应的变量名当中,供后续使用。
  • Result variable name会存储一个汇总的变量结果。

此处需注意,以查询为例,返回的是一张2维表数据,n1...n7分别对应的是第1列到第7列,具体到某行某列还需通过debug sampler查看Jmeter生成的变量情况。Jmeter会自动根据行的情况扩展n1...n7,生成每个单元格数据对应的变量。
 示例:如果查询出来的数据有2行3列,并且将Variables names定义为a,b,c,则实际生成的变量:   A_#=2 (总行数)A_1=第1列, 第1行  A_2=第1列, 第2行    B_#=2 (总行数) B_1=第2列, 第1行  B_2=第2列, 第2行         C_#=2 (总行数) C_1=第3列, 第1行  C_2=第3列, 第2行 Jmeter针对Mysql的数据库处理的知识点主要包括以上四项,大家可以根据实际工作的需求去扩展使用~详情可参照Jmeter官网 https://jmeter.apache.org/

原文地址:https://www.cnblogs.com/duxf100/p/11535424.html

时间: 2024-10-25 07:10:00

【Jmeter】数据库查询、参数化、结果存储详解的相关文章

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

mysql数据库分区功能及实例详解

分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解 一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存

MySQL数据库使用mysqldump导出数据详解

mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数据库使用mysqldump导出数据详解,需要的朋友一起学习吧 mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所 需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可

Hbase存储详解

Hbase存储详解 started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital Hbase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject 2008.10 Hbase

mysql数据库TINYINT取值范围详解

分享下mysql中TINYINT的取值范围,很基础的一些内容. 在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127.无符号的范围是0到255(见官方<MySQL 5.1参考手册>http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types). Tinyint占用1字节的存储空间,即8位(bit).那么Tinyint的取值范围怎么来的呢?先看无符号的情况.无符号的最小值即全部8位(b

mysql数据库表间内外链接详解

1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:select table1.column,table2.column from table1 [inner | left | right | full ] join table2 ontable1.column1 = table2.column2; inner join 表示内连接: left jo

mysql数据库my.ini配置文件中文详解

mysql数据库my.ini配置文件中文详解 mysqld程序–目录和文件 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件. pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程. socket = filen

Mysql数据库的索引和视图详解

Mysql数据库的索引和视图详解 索引的概念 数据库的索引与书籍中的目录类似在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息书中的目录是一个词语列表,其中注明了包含各个词的页码数据库索引在数据库中,索引数据库程序无需对整个表进行扫描,就可以在其中找到所需数据数据库中的索引是某个表中一列或若干列的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 设置了合适的索引之后,数据库利用葛总快速的定位技术,能够大大加快查询速率特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快

实战NFS文件共享存储详解

实战NFS文件共享存储详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 NFS简介 NFS工作流程 使用NFS的好处 NFS应用环境 NFS服务器安装 NFS客户端配置 实例:创建web共享 NFS简介 NFS(Network File System)即网络文件系统,Sun公司开发,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本

Greenplum数据库中系统表pg_class详解

Greenplum数据库中系统表pg_class详解 pg_ class 可以说是数据字典最重要的-一个表了,它保存着所有表.视图.序列.索引的原数据信息,每一个DDL/DML操作都必须跟这个表发生联系, 其表结构详情,如下图: 原文地址:https://www.cnblogs.com/lizm166/p/12102500.html