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.mzph.cn/bicheng/57582.shtml

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

相关文章

全栈面试题】模块3-9】JavaSE高级 -- Object类、 GC、反射、Socket

目录 面试题3.62 JAVA中Object类中有哪些常用方法&#xff1f; 面试题3.63 什么是深拷贝和浅拷贝 面试题3.64 GC是什么? 为什么要有GC? 面试题3.65 JVM垃圾回收机制和常见算法 面试题3.66 简单的介绍⼀下强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用 …

基于SSM消防物资存储系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;仓库管理&#xff0c;物资入库管理&#xff0c;仓位管理&#xff0c;物资详情管理&#xff0c;报警通知管理&#xff0c;安全检查提醒管理 用户账号功能包括&#xff1a;系统首页…

【数据分享】全国能源-电力平衡表(2000-2020年)

数据介绍 一级标题指标名称单位能源电力可供量亿千瓦小时能源电力生产量亿千瓦小时能源水电生产电力量亿千瓦小时能源火电生产电力量亿千瓦小时能源核电生产电力量亿千瓦小时能源风电生产电力量亿千瓦小时能源电力进口量亿千瓦小时能源电力出口量亿千瓦小时能源电力能源消费总量…

从零到一:如何使用直播美颜SDK开发视频美颜平台

今天&#xff0c;小编将为大家详细讲解如何从零开始&#xff0c;利用直播美颜SDK进行开发视频美颜平台。 一、了解直播美颜SDK 选择合适的SDK是开发视频美颜平台的第一步&#xff0c;市场上有多种SDK可供选择。选择时应考虑SDK的功能、性能、稳定性以及开发者社区的支持。 二…

[实时计算flink]本地运行和调试包含连接器的作业

本文为您介绍如何在开发者本地环境中运行和调试包含阿里云实时计算Flink版连接器的作业&#xff0c;以便快速验证代码的正确性&#xff0c;快速定位和解决问题&#xff0c;并节省云上成本。 背景信息 当您在IntelliJ IDEA中运行和调试Flink作业&#xff0c;如果其包含了阿里云…

Psychophysiology:脑-心交互如何影响个体的情绪体验?

摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用&#xff0c;以实现自然而可…

Linux中如何理解一切皆文件

根据之前的学习我们会有一些少许的疑惑&#xff0c;我们的stdin &#xff0c;stdout&#xff0c;stderr访问的是键盘显示器&#xff0c;然而键盘显示器等他们都有一个共同的特点就是他们都是外设&#xff0c;那么这些外设是怎么被看成是文件的呢&#xff1f; 看图可以知道硬件的…

干货分享篇-那些你必须知道的CE认证

CE认证&#xff0c;为各国产品在欧洲市场进行贸易提供了统一的技术规范&#xff0c;简化了贸易程序。任何国家的产品要进入欧盟、欧洲自由贸易区必须进行CE认证&#xff0c;在产品上加贴CE标志。因此CE认证是产品进入欧盟及欧洲贸易自由区国家市场的通行证。 一、申请CE认证的必…

记一次有趣的发现-绕过堡垒机访问限制

前言 在某一次对设备运维管理的时候&#xff0c;发现的某安全大厂堡垒机设备存在绕过访问限制的问题&#xff0c;可以直接以低权限用户访问多个受控系统&#xff0c;此次发现是纯粹好奇心驱使下做的一个小测试压根没用任何工具。因为涉及到了很多设备和个人信息&#xff0c;所以…

云轴科技ZStack信创云平台助力上海科技大学实现信创业务落地

编者按 上海科技大学基于“兆芯CPU芯片 云轴科技 ZStack信创云平台 麒麟V10操作系统”构建了全栈信创的校级云平台——上科大Ecloud平台&#xff0c;该平台支撑了上海科技大学的办公业务、教学业务、核心生产业务等业务系统&#xff0c;实现了从VMware平台向国产化软硬件平台的…

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库

一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务&#xff0c;本身redis启动的时候可以指定配置文件的&#xff0c; redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…

Docker 安装Postgres和PostGIS,并制作镜像

1. 查找postgres和postgis现有的镜像和版本号 镜像搜索网站&#xff1a;https://docker.aityp.com/ 测试使用的是postgres:15.4 和 postgis:15-3.4 2、镜像拉取 docker pull postgres:15.4docker pull postgis/postgis:15-3.4镜像下载完成&#xff0c;docker images 查看如…

MATLAB和Python电车电池制造性能度量分析

&#x1f3af;要点 分析全电池制造端开路电压曲线&#xff0c;解析电化学指标或特征&#xff0c;了解电池的热力学和动力学特性。测试相同活性材料&#xff08;正极和石墨负极&#xff09;的两批电池&#xff0c;列出模型提取的电化学特征并可视化分析结果。使用类似电压拟合方…

【Next.js 项目实战系列】03-查看 Issue

原文链接 CSDN 的排版/样式可能有问题&#xff0c;去我的博客查看原文系列吧&#xff0c;觉得有用的话&#xff0c;给我的库点个star&#xff0c;关注一下吧 上一篇【Next.js 项目实战系列】02-创建 Issue 查看 Issue 展示 Issue​ 本节代码链接 首先使用 prisma 获取所有…

【算法】KMP字符串匹配算法

目录 一、暴力 二、KMP 2.1 思路 2.2 next数组 2.3 实现 2.4 例题 一个人能走的多远不在于他在顺境时能走的多快&#xff0c;而在于他在逆境时多久能找到曾经的自己。 …

张雪峰:如果你现在是计算机专业,一定要优先报网络安全,它是未来国家发展的大方向

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 “计算机专业 一定要优先报 网络安全 它是未来国家发展的大方向” 为什么推荐学网络安全&#xff1f; “没有网络安全就没有国家安全。”当前&#xff…

与ai一起作诗(《校园清廉韵》)

与ai对话犹如拷问自己的灵魂&#xff0c;与其说ai助力还不如说在和自己对话。 (笔记模板由python脚本于2024年10月19日 19:18:33创建&#xff0c;本篇笔记适合喜欢python和诗歌的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&…

知识点框架笔记3.0笔记

如果基础太差&#xff0c;搞不清基本交规的&#xff08;模考做不到60分&#xff09;&#xff0c;建议找肖肖或者小轩老师的课程看一遍&#xff0c;内容差不多&#xff08;上面有链接&#xff09;&#xff0c;笔记是基于肖肖和小轩老师的科目一课程以及公安部交管局法规&#xf…

w~自动驾驶合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320882 #自动驾驶数据集全面调研 自动驾驶技术在硬件和深度学习方法的最新进展中迅速发展&#xff0c;并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集&…

[前端] ✨【如何用课程设计提升工程能力?】✨笔记

✨【如何用课程设计提升工程能力&#xff1f;】✨ &#x1f4da; 课程设计真的在语言工具类课程中占据了“C位”&#xff01;&#x1f451;设计得好的课程简直像一个实战训练营&#xff0c;既能帮助学生巩固理论&#xff0c;又能培养解决复杂问题的能力&#xff0c;还能让他们…