JMeter-JDBC Request使用

JDBC Request需要配合JDBC Connection Configuration一起使用,JDBC Connection Configuration进行连接,JDBC Request进行请求,下面针对两个配置进行摘录

JDBC Connection Configuration 配置

Variable Name Bound to Pool:

元素 功能
Variable Name for created pool 数据库连接池名称
Max Number of Connections 数据库最大连接数。在大多数情况下,将其设置为0,这意味着每个线程将得到它自己的池,其中只有一个连接,即线程之间不共享连接。如果您真的想要使用共享池,那么将max count与线程数相同,以确保线程不会相互等待。
Max Wait(ms) 在连接池中取回连接最大等待时间
Time Between Eviction Runs(ms) 在空闲对象驱逐线程运行期间,可以休眠的毫秒数。当非正值时,将运行无空闲对象驱逐器线程。(默认为“60000”,1分钟)(如果当前连接池中某个连接在空闲了time Between Eviction Runs Millis时间后任然没有使用,则被物理性的关闭掉。)
Auto Commit 自动提交sql语句
Transaction Isolation 设置事务的隔离级别
Preinit Pool 立即初始化连接池,如果为 False,则第一个 JDBC 请求的响应时间会较长,因为包含了连接池建立的时间
Init SQL statements separated by new line SQL语句的集合,将在首次创建物理连接时用执行它们。这些语句仅执行一次,在创建连接时执行

五种事务隔离级别:
1).TRANSACTION_NONE 不支持事务
2).TRANSACTION_READ_UNCOMMITTED 读未提交,允许脏读,不可重复读和幻读
3).TRANSACTION_READ_COMMITTED 读已提交,禁止脏读,但允许不可重复读和幻读
4).TRANSACTION_REPEATABLE_READ 重复读,禁止脏读和不可重复读,允许幻读
5).TRANSACTION_SERIALIZABLE 串行化,禁止脏读,不可重复读和幻读
6).DEFAULT 数据库默认的隔离方式
脏读(dirty read):一个事务读取了另一个事务尚未提交的数据
不可重复读(Non-Repeatable Reads):一个事务的操作导致另一个事务前后两次读取到不同的数据
幻读(Phantom Reads):一个事务的操作导致另一个事务前后两次查询的结果数据量不同

元素 功能
Test While Idle 当空闲的时候测试连接是否断开
Soft Min Evictable Idle Time 连接在连接池中闲置的最小时间,超出此闲置时间连接才会被回收。默认值为5000ms
Validation Query 用于确定数据库是否仍在响应的简单查询语句
Database URL JDBC数据库的连接字符串,eg: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
JDBC Driver class JDBC驱动
ussername 数据库登录的用户名
Password 数据库登录的密码
Connection Properties 建立连接时要设置的连接属性

Validation Query 选项:

hsqldb选择:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle选择:select 1 from dual
DB2选择:select 1 from sysibm.sysdummy1
MySQL/SQL Server/PostgreSQL/Ingres/Derby/H2选择:select 1
Firebird选择: select 1 from rdb$database

不同的数据库和JDBC驱动程序相对于Database URL和JDBC Driver class不一样,以下是常用的几种:

数据库类型 JDBC Driver class Database URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://host[:port]/dbname
HSQLDB org.hsqldb.jdbc.JDBCDriver
Oracle oracle.jdbc.OracleDriver jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
DB2 com.ibm.db2.jcc.DB2Driver com.ibm.db2.jdbc.app.DB2Driver
PostgreSQL org.postgresql.Driver jdbc:postgresql:{dbname}
Microsoft.jdbc.sqlserver com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://host[:port];DatabaseName={databasename}

JMeter-JDBC Request使用_第1张图片

JDBC Request 配置

元素 功能
Variable Name of Pool declared in JDBC Connection Configuration 数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致
Query Type
Qurey 查询语句,未尾不要加“;”。(SQL中的数据可通过${变量名}获取到已定义的值 )
Parameter values 参数值(1、可代替Query中的?占位符数据,多个占位符用逗号隔开;2、参数值可通过${变量名}获取到已定义的值
Parameter types 参数类型(与Parameter value的数据一一对应的数据类型,多个用逗号隔开)
Variable name 保存sql语句返回结果的变量名,可通过debug取样器查看结果
Result variable name 创建一个对象变量,保存所有返回的结果,获取具体值的方法:columnValue = vars.getObject(“resultObject”).get(0).get(“Column Name”)
Query timeout 查询超时时间
Limit ResultSet 设置返回结果的数据条数

Variable name的使用规则:(引用https://www.cnblogs.com/puresoul/p/4908014.html)
如果给这个参数设置了值,它会保存sql语句返回的数据和返回数据的总行数。假如,sql语句返回2行,3列,且variables names设置为A,C,那么如下变量会被设置为:
A_#=2 (总行数)
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (总行数)
C_1=第3列, 第1行
C_2=第3列, 第2行
如果返回结果为0,那么A_#和C_#会被设置为0,其它变量不会设置值。
如果第一次返回6行数据,第二次只返回3行数据,那么第一次那多的3行数据变量会被清除。
可以使用${A_#}、${A_1}…来获取相应的值

JMeter-JDBC Request使用_第2张图片

实例

使用占位符查询 melotpay.melotpay.agency_info表中role=2的前三条记录对应的agencyid、userno值,结果使用变量名a,b保存,并且返回结果创建的对象c
JMeter-JDBC Request使用_第3张图片
查看返回结果:
JMeter-JDBC Request使用_第4张图片

JMeter-JDBC Request使用_第5张图片

你可能感兴趣的:(测试工具的使用,压力测试,扫描测试工具)