JMeter压测JDBC底层原理实现

一、简介

大家应该都知道JMeter的玩法其实多种多样,不光能压测主流的HTTP协议,同时也是支持JDBC的压测,但是JDBC压测如何配置?底层又是如何实现的估计大多数测试同学可能还是一头雾水;毕竟大多数测试同学还是对HTTP压测比较熟悉,那么接下来我将一步一步由浅入深的给大家讲解它具体是如何实现的

二、参数介绍

  • 根据JMeter官方文档给出若要实现JDBC压测,首先要建立基础的连接配置,需要添加JDBC Connection Configuration
    在这里插入图片描述

Variable Name for created pool : 为连接配置设置别名,这个在JDBC Request需要用到这个别名进行配置绑定
Max Number of Connections : 初始化连接池最大连接数,一般设置0,取对应数据库设置好的连接池大小
Max Wait(ms) : 执行SQL最大等待时间
Time Between Eviction Runs(ms) :有空闲的线程数,释放不使用的线程
Auto Commit : 执行SQL是否自动提交
Transaction Isolation : 事务隔离选项,一般设置DEFAULT
Preinit Pool :说白了就是关闭连接池的(一般用默认false),看下图
在这里插入图片描述
Init SQL statements sparated by new line : 建立好连接后是否需要执行初始化的SQL(这块一般不用)
Test While Idle :若为true表示对于空闲的连接线程进行连接验证
Soft Min Evictable Idle Time(ms) :设置上面连接验证的时间不能超过该设定值
Database URL : 用户配置的数据库连接地址
JDBC Driver class : 用户选择目标数据源的数据库驱动类型
Username : 连接数据库用户名
Password : 连接数据库密码
Connection Preperties : 连接属性,自己配置的属性打入到配置中(一般用不到)

  • 连接配置JDBC Connection Configuration配置完成我们只需要配置发出JDBC请求的配置,所以取样器中要添加JDBC Request
    在这里插入图片描述

Variable Name for created pool : 这个去JDBC Connection Configuration配置好的别名即可
Query Type : 选择你要执行SQL的类型,查询非参数化选择Select Statement ,SQL需要参数化就要用到Prepared Select Statement 否则会报错,对应的删除、修改、插入可以使用Update Statement来实现,参数选择Prepared Update Statement
在这里插入图片描述
parameter values :参数化的字段值
parameter types : 对应参数化字段类型
在这里插入图片描述
Variable Name : SQL执行结果后的字段值映射(添加Debug Sampler之后就能看到,这个用处意义不大,几乎不用)
在这里插入图片描述
Query timeout(s) : 执行查询操作的超时时间
Limit ResultSet : 查询得到的结果集,返回的记录数
Handle ResultSet : 结果集存储数据类型

  • 配置完成之后大家可以添加查看结果数来看看执行之后的到的返回结果

三、源码实现

  1. 同样最开始还是执行JMeter engine ,这一层链路在JMeter engine启动原理这篇文章已经讲清楚了
  2. engine启动完成之后,在JMeterThread类中会调用private void executeSamplePackage()方法来发出请求获取结果集
    在这里插入图片描述
    在这里插入图片描述
  3. 然后进入JDBCSampler类执行sample()方法
    在这里插入图片描述
  4. 通过上图操作我们知道JDBCSampler中sample()方法就是先建立连接、然后执行SQL请求,那么接下来我们去看看conn = DataSourceElement.getConnection(getDataSource());如何建立连接的过程又做了那些事情
    在这里插入图片描述
    在这里插入图片描述
  5. 我们初始化得到BasicDataSource对象后,在调用该类getConnection()方法来实现建立连接,BasicDataSource属于apache commons包下的dbcp2包下的类,感兴趣的可以去apache官网下载研究
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7. 执行完JDBC请求之后,会将结果集有封装到SampleResult对象当中,我们又回到之前的操作3,至此整个JDBC请求链路完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值