Jmeter 实战 JDBC配置

请在此添加图片描述

JDBC

JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API。通过这个API,可以直接连接并执行SQL脚本,与数据库进行交互。

使用JMeter压力测试时,操作数据库的场景

在使用JMeter进行接口压力测试时,有时需要批量生成测试数据,这时可以使用JMeter连接数据库以创建相应的测试数据。测试结束后,还需要对测试数据进行还原或删除,以清理不必要的数据。这些操作都涉及到连接数据库并执行SQL语句。

以下是使用JMeter连接数据库的方法:

🧹 添加JDBC驱动程序:将JDBC驱动程序(如:MySQL驱动程序)添加到JMeter的<Apache-JMeter>/lib目录下。

🧹 配置JDBC连接字符串:在JMeter中,使用JDBC Connection Configuration元件配置数据库连接信息,包括URL、用户名、密码等。

🧹 编写JDBC请求:使用JDBC Request元件编写SQL语句,并在JMeter中执行。

🧹 添加JDBC预处理语句:在JMeter中,使用JDBC PreProcessor元件添加预处理语句,如:插入、更新等操作。

🧹 添加JDBC后置处理语句:在JMeter中,使用JDBC PostProcessor元件添加后置处理语句,如:查询、删除等操作。

通过以上步骤,可以在JMeter中使用JDBC接口连接数据库,执行SQL语句,以满足压力测试中的数据准备和清理需求。

数据库驱动包

Jmeter 连接 Mysql 数据库需安装对应的驱动包;

📩 下载地址:https://dev.mysql.com/downloads/connector/j/

请在此添加图片描述

**安装:**下载完成后解压放到Jmeter的 lib 下;

请在此添加图片描述

创建测试计划

在 JMeter 主界面上,右键单击 Test Plan,然后选择 Add -> Threads (Users) -> Thread Group。这将创建一个线程组。

请在此添加图片描述

配置 JDBC Connection Configuration

📩 步骤:添加配置元件 - JDBC Connection Configuration;

在 JDBC 连接中,配置数据库连接信息,包括 JDBC URL、用户名和密码等。

☕ **Variable Name for created pool:**字段用于设置一个变量名,该变量名将用于在测试计划中引用创建的JDBC连接池;

例如:如果将"Variable Name for created pool"字段设置为myJdbcPool,则可以在其他JDBC元件(如JDBC Request、JDBC PreProcessor和JDBC PostProcessor)中通过在"Variable Name"字段中输入myJdbcPool来引用此JDBC连接池。

这样,可以在测试计划中轻松地重用JDBC连接池,而无需为每个JDBC元件单独配置连接信息。这有助于提高测试计划的可维护性和可读性。

☕ Database URL:字段用于指定要连接的数据库的JDBC URL;

JDBC URL的格式通常为:jdbc:<数据库类型>://<主机名>:<端口号>/<数据库名>。以下是一些常见数据库的JDBC URL示例:

MySQLjdbc:mysql://localhost:3306/mydatabase
PostgreSQLjdbc:postgresql://localhost:5432/mydatabase
Oraclejdbc:oracle:thin:@localhost:1521:mydatabase
SQL Serverjdbc:sqlserver://localhost:1433;databaseName=mydatabase

请根据要连接的数据库类型和配置替换相应的值。在配置JDBC Connection Configuration元件时,请确保输入正确的JDBC URL,以便JMeter能够成功连接到目标数据库。

在JDBC URL中,可以在数据库名称之后添加一些可选参数,以便进一步配置连接(不喜欢可以不写)

MySQL
useSSL=false:禁用SSL加密。
serverTimezone=UTC:设置服务器时区。
allowPublicKeyRetrieval=true:允许从服务器获取公钥。
useUnicode=true:使用Unicode字符集。
characterEncoding=UTF-8:设置字符编码为UTF-8。
示例:
jdbc:mysql://localhost:3306/mydatabase?
useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8
PostgreSQL
ssl=false:禁用SSL加密。
sslmode=disable:禁用SSL模式。
currentSchema=myschema:设置当前模式。
示例:jdbc:postgresql://localhost:5432/mydatabase?ssl=false&sslmode=disable&currentSchema=myschema
Oracle
useSSL=false:禁用SSL加密。
defaultRowPrefetch=50:设置默认的行预取值。
示例:jdbc:oracle:thin:@localhost:1521:mydatabase?useSSL=false&defaultRowPrefetch=50
SQL Server
encrypt=false:禁用加密。
trustServerCertificate=true:信任服务器证书。
loginTimeout=30:设置登录超时时间(以秒为单位)。
示例:
jdbc:sqlserver://localhost:1433;databaseName=mydatabase;encrypt=false;trustServerCertificate=true;loginTimeout=30

请注意,这些参数可能因数据库类型和驱动程序版本而异。在配置JDBC URL时,请根据数据库类型和驱动程序版本选择合适的参数。如果不确定要使用哪些参数,可以查阅数据库驱动程序的文档以获取更多信息。在大多数情况下,不需要添加这些可选参数,除非需要进一步配置连接。

☕ **JDBC Driver class:**JDBC 驱动程序类名,用于加载数据库的 JDBC 驱动程序。每个数据库都有对应的驱动程序类名。例如,对于 MySQL 数据库,驱动程序类名通常是 com.mysql.jdbc.Driver

☕ **username:**数据库的用户名;

☕ **passwrod:**数据库的密码;

其他参数请自行翻阅API;

请在此添加图片描述J

**JDBC Driver:**不同的数据库和驱动连接方式参考下表

请在此添加图片描述

配置 JDBC Request

📩 步骤 :在线程组上右键单击,选择 Add -> Sampler -> JDBC Request (线程组-添加-取样器-JDBC Request)。将创建一个 JDBC 请求,用于模拟数据库操作。

❣️ **Variable Name bound to pool:**字段用于指定一个已经在JDBC Connection Configuration元件中创建的JDBC连接池的变量名

例如,如果在JDBC Connection Configuration元件中将"Variable Name for created pool"字段设置为myJdbcPool,则可以在JDBC Request元件中将"Variable Name bound to pool"字段设置为myJdbcPool,以便使用此JDBC连接池。

这样,可以在测试计划中轻松地重用JDBC连接池,而无需为每个JDBC Request元件单独配置连接信息。这有助于提高测试计划的可维护性和可读性。请确保在JDBC Request元件中输入正确的变量名,以便JMeter能够找到并使用正确的JDBC连接池。

❣️ Query Type: 字段用于指定要执行的SQL查询类型

Select Statement:执行一个SQL SELECT查询,用于从数据库中检索数据。
Update Statement:执行一个SQL UPDATE查询,用于修改数据库中的数据。
Insert Statement:执行一个SQL INSERT查询,用于向数据库中插入新数据。
Delete Statement:执行一个SQL DELETE查询,用于从数据库中删除数据。
Callable Statement:执行一个SQL存储过程或函数。
Prepared Select Statement:执行一个预编译的SQL SELECT查询,用于从数据库中检索数据。与"Select Statement"类似,但使用预编译的查询可以提高性能并防止SQL注入攻击。
Prepared Update Statement:执行一个预编译的SQL UPDATE查询,用于修改数据库中的数据。与"Update Statement"类似,但使用预编译的查询可以提高性能并防止SQL注入攻击。

在配置JDBC Request元件时,请根据要执行的SQL查询类型选择合适的"Query Type"。在执行预编译查询时,还需要在"Parameter values"字段中指定查询参数的值。请确保选择正确的"Query Type",以便JMeter能够正确执行SQL查询。

❣️ Query: 字段用于输入要执行的SQL查询语句;

在JMeter的JDBC Request元件中,"Query"字段用于输入要执行的SQL查询语句

以下是一些常见的SQL查询示例:

Select Statement

SELECT * FROM users WHERE username = 'JohnDoe';

Update Statement

UPDATE users SET email = 'newemail@example.com' WHERE username = 'JohnDoe';

Insert Statement

INSERT INTO users (username, email) VALUES ('JohnDoe', 'johndoe@example.com');

Delete Statement

DELETE FROM users WHERE username = 'JohnDoe';

Callable Statement

{call my_stored_procedure(?, ?)}

在配置JDBC Request元件时,请根据要执行的SQL查询类型和需求输入相应的查询语句。请确保输入正确的查询语句,以便JMeter能够正确执行SQL查询。如果使用的是预编译查询,请确保在"Parameter values"字段中指定查询参数的值。在执行存储过程或函数时,请确保在"Query"字段中使用正确的语法。

在JMeter的JDBC Request元件中,确实不建议在"Query"字段中使用分号(;),因为JMeter可能无法正确解析和执行带有分号的查询语句

在JMeter的JDBC Request元件中,不支持在单个"Query"字段中编写多条SQL语句。如果需要执行多条SQL语句,可以考虑以下方法:

  1. 使用多个JDBC Request元件:为每个SQL语句创建一个单独的JDBC Request元件。这样,可以在每个元件中编写一条SQL语句,并按照测试计划中的顺序执行它们。
  2. 使用事务:如果数据库支持事务,可以在单个JDBC Request元件中使用事务来执行多条SQL语句。在"Query"字段中编写一个BEGIN TRANSACTION语句,然后编写的SQL语句,最后编写一个COMMIT或ROLLBACK语句。这样,可以在单个JDBC Request元件中执行多条SQL语句,并确保它们作为一个原子操作执行。

请注意,这些方法可能因数据库类型和驱动程序版本而异。在使用JMeter的JDBC Request元件时,请根据的数据库类型和驱动程序版本选择合适的方法。如果不确定如何执行多条SQL语句,可以查阅数据库驱动程序的文档以获取更多信息。在大多数情况下,使用多个JDBC Request元件是最简单和最可靠的方法。

执行步骤

设置线程组参数:

  • 在线程组中,可以设置并发用户数、循环次数等参数,以模拟实际负载。

运行测试:

  • 点击工具栏上的绿色运行按钮以开始测试。

查看结果:

  • 在测试运行完成后,你可以查看各种性能指标,如响应时间、吞吐量等。
  • 还可以导出测试结果以进一步分析。

请在此添加图片描述

在执行测试之前,确保已经正确配置了数据库连接池,包括连接池大小、最大连接数等参数。另外,还要注意测试环境的负载和资源使用情况,以确保测试结果的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454925.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大规模多传感器滑坡检测数据集,利用landsat,哨兵2,planet,无人机图像等多种传感器采集数据共2w余副图像,mask准确标注滑坡位置

大规模多传感器滑坡检测数据集&#xff0c;利用landsat&#xff0c;哨兵2&#xff0c;planet&#xff0c;无人机图像等多种传感器采集数据共2w余副图像&#xff0c;mask准确标注滑坡位置 大规模多传感器滑坡检测数据集介绍 数据集概述 名称&#xff1a;大规模多传感器滑坡检测…

R语言建模线性回归

一、 a. # 给定的 (x, y) 数据 x <- c(2, 9, 10, 7) y <- c(3, 13, 12, 11)# 线性回归模型 y a bx model1 <- lm(y ~ x) summary(model1) # 查看回归结果# 提取系数 a 和 b a <- coef(model1)[1] b <- coef(model1)[2]# 预测值 y_pred <- predict(mode…

数据字典是什么?和数据库、数据仓库有什么关系?

一、数据字典的定义及作用 数据字典是一种对数据的定义和描述的集合&#xff0c;它包含了数据的名称、类型、长度、取值范围、业务含义、数据来源等详细信息。 数据字典的主要作用如下&#xff1a; 1. 对于数据开发者来说&#xff0c;数据字典包含了关于数据结构和内容的清晰…

【C++篇】探索STL之美:熟悉使用String类

CSDN 文章目录 前言 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&…

基于SSM+微信小程序的家庭记账本管理系统(家庭1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、管理员端功能有首页、个人中心、用户管理&#xff0c;消费详情管理、收入详情管理、系统管理等。 2、用户端功能有首页、消费详情、收入详情、论坛信息、我的等功能。 2、项目技术 …

python机器人编程——用python调用API控制wifi小车的实例程序

目录 一、前言二、一个客户端的简单实现2.1 首先定义一个类及属性2.2 其次定义连接方法2.3 定义一些回调函数2.4 定义发送小车指令方法2.5 定义一个正常关闭方法 三、python编程控制小车的demo实现四、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源p…

【保姆级教程】DolphinScheduler本地部署与远程访问详细步骤解析

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

【牛客刷题】笔记2

目录 1、单词搜索 2、岛屿数量 2.1 DFS 2.2 BFS 3、腐烂的橘子 1、单词搜索 单词搜索_牛客题霸_牛客网 (nowcoder.com) 这道题我们就是先遍历数组board&#xff0c;若遇到了与word[0]相等的字符&#xff0c;则以这个字符为起点进行搜索&#xff0c;搜索可以是dfs&#x…

#每日一题#自动化 2024年10月

#每日一题#自动化 2024年10月 1、深拷贝和浅拷贝的区别是什么&#xff1f; 参考答案&#xff1a; 深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中&#xff0c;我们使用 deepcopy&#xff08;&#xff09;函数进行深拷贝…

MyBatis-Plus(二):resultType 的选择——int 与 java.lang.Integer 的区别

resultType 的选择——int 与 java.lang.Integer 的区别 1、概述2、resultType介绍2.1、使用int2.2、使用java.lang.Integer 3、如何选择4、总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以扫描下方二维码关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。…

蘑菇分类识别数据集(猫脸码客 第222期)

蘑菇分类识别文本/图像数据集 蘑菇&#xff0c;作为一种广泛分布于全球的真菌&#xff0c;隶属于伞菌目伞菌亚门蘑菇科蘑菇属&#xff0c;拥有众多别名&#xff0c;如白蘑菇、洋蘑菇等。其不仅是世界上人工栽培最广泛、产量最高、消费量最大的食用菌品种之一&#xff0c;还在许…

Java程序设计:spring boot(8)——API ⽂档构建⼯具 - Swagger2

目录 1 环境整合配置 2 Swagger2 常⽤注解说明 2.1 Api 2.2 ApiOperation 2.3 ApiImplicitParams 2.4 ApiResponses 2.5 ApiModel 3 用户模块注解配置 3.1 Controller 使用注解 3.2 JavaBean 使用注解 4 Swagger2 接⼝⽂档访问 由于 Spring Boot 能够快速开发、便捷…

理解JVM

文章目录 前言一、JVM 内存区域划分二、JVM 中类加载的过程a.类加载的基本流程&#xff08;熟练背诵&#xff09;b.双亲委派模型 三、JVM 中的垃圾回收机制&#xff08;GC&#xff09;1.找到垃圾2.如何回收垃圾&#xff1f; 总结 前言 JVM 内部涉及到的内容是非常广泛的。咱们…

【Qt】Qt的介绍——Qt的概念、使用Qt Creator新建项目、运行Qt项目、纯代码方式、可视化操作、认识对象模型(对象树)

文章目录 Qt1. Qt的概念2. 使用Qt Creator新建项目3. 运行Qt项目3.1 纯代码方式实现3.2 可视化操作实现 4. 认识对象模型&#xff08;对象树&#xff09; Qt 1. Qt的概念 Qt 是一个跨平台的 C 图形用户界面应用程序开发框架。它是软件开发者提供的用于界面开发的程序框架&#…

PCC Net模型实现行人数量统计

关注底部公众号&#xff0c;回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 项目简介 PCC Net是一种用于拥挤场景下行人计数的深度学习模型。该项目的目标是利用神经网络&#xff0c;准确地统计给定区域内的行人数…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可

Linux文件的查找和打包以及压缩

文件的查找 文件查找的用处&#xff0c;在我们需要文件但却又不知道文件在哪里的时候 文件查找存在着三种类型的查找 1、which或whereis&#xff1a;查找命令的程序文件位置 2、locate&#xff1a;也是一种文件查找&#xff0c;但是基于数据库的查找 3、find&#xff1a;针…

Artistic Oil Paint 艺术油画着色器插件

只需轻轻一点&#xff0c;即可将您的视频游戏转化为艺术品&#xff01;&#xff08;也许更多…&#xff09;。 ✓ 整个商店中最可配置的选项。 ✓ 六种先进算法。 ✓ 细节增强算法。 ✓ 完整的源代码&#xff08;脚本和着色器&#xff09;。 ✓ 包含在“艺术包”中。 &#x1f…

【学术论文投稿】自动化运维:解锁高效运维的密钥

【连续三届IEEE出版|EI检索】第三届图像处理、计算机视觉与机器学习国际学术会议&#xff08;ICICML 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;https://ais.cn/u/nuyAF3 目录 引言 一、自动化运维概述 1. 自动化运维的定义 2. 自动化运…

关于Docker

文章目录 DockerWSLWMWare虚拟机CentOS7安装dockerdocker基础命令docker数据卷挂载本地目录或文件 Docker Docker是一个快速构建、运行、管理应用的工具。 能够快速部署项目、项目依赖的组件、项目运行的环境。 项目传统的部署方式缺点&#xff1a; 各类环境、组件命令太多&…