1、JDBC Connection Configuration配置
1> 在线程组配置元件中添加JDBC Connection Configuration,是关于数据库连接配置
2> 配置说明
第一部分:Variable Name Bound to pool
Variable Name for created pool,填写一个自定义变量名,方便后续在JDBC request中引用数据库配置
第二部分:Connection pool Configuration
连接池参数配置,保持默认即可,可根据需求进行修改
字段
|
含义
|
Max Number of Connections
|
最大连接数;做性能测试时,建议填 0
如果填了10,则最大连接10个线程
|
Max Wait(ms)
|
在连接池中取回连接最大等待时间,单位毫秒
|
Time Between Eviction Runs(ms)
|
线程可空闲时间,单位毫秒
如果当前连接池中某个连接在空闲了 time Between Eviction Runs Millis 时间后任然没有使用,则被物理性的关闭掉
|
Auto Commit
|
自动提交sql语句,如:修改数据库时,自动 commit
|
Transaction isolation
|
事务隔离级别
|
Preinit Pool
|
立即初始化连接池
如果为 False,则第一个 JDBC 请求的响应时间会较长,因为包含了连接池建立的时间
|
第三部分:Connection Validation by Pool
验证连接池是否可响应
字段
|
含义
|
Test While Idle
|
当连接空闲时是否断开
|
Soft Min Evictable Idle Time(ms)
|
连接在池中处于空闲状态的最短时间
|
Validation Query
|
一个简单的查询,用于确定数据库是否仍在响应
默认为jdbc驱动程序的 isValid() 方法,适用于许多数据库
|
第四部分:Database Connection Configuration (数据库连接配置)
Database URL(数据库连接 URL)
jdbc:mysql://IP:3306/dbname?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true
(允许执行多条SQL)
JDBC Driver class (数据库驱动)
Username (数据库登录用户名)
Password (数据库登录密码)
Connection Properties (建立连接时要设置的连接属性)
常见数据库的连接 URL和驱动
数据库
|
驱动包
|
驱动类名
|
JDBC的URL
|
备注
|
区别
|
MySQL
|
com.mysql.jdbc.Driver
|
jdbc:mysql://IP地址:端口号/数据库名字
|
注:端口号缺省为:3306
|
||
SQL server
|
com.microsoft.sqlserver.jdbc.SQLServerDriver
|
jdbc:microsoft:sqlserver://IP地址:端口号;DatabaseName=数据库名
|
注:端口号缺省为:1433
|
||
Oracle
|
oracle.jdbc.driver.OracleDriver
|
jdbc:oracle:thin:@IP地址:端口号:数据库名
|
注:端口号缺省为:1521
|
ojdbc6和ojdbc14的区别:ojdbc14.jar(适合java-1.4和1.5),ojdbc6(适合java-1.6)
|
2、JDBC Driver驱动包
2.1> 引用jar包(驱动包)
使用不同的数据库,需要引入不同的 jar 包,一共有两种方式,不过前提是下载好了 jar 包(驱动包)。以MySQL为例
引入方式一
将下好的 jar 包直接放到 jmeter 的 lib 目录下,然后重新启动就行了
引入方式二
在测试计划底部添加 jar 包即可(jar包可以放置任意位置,引用地址正确即可)
2.2> 特别说明
引用jar包版本要与数据库版本相对应
数据库版本查看方式-SQL查询数据库版本
select version() from dual;
版本不对应会出现报错:Jmeter Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
3、JDBC request配置
在取样器(sampler)中添加JDBC request,配置如下:
第一部分,Variable Name Bound to pool declared in JDBC Connection Configuration (填写之前的自定义变量名)
第二部分,Query Type
字段
|
定义
|
Select Statement
|
Select语句
|
Update Statement
|
Update语句
|
Callable statement
|
|
Prepared Select Statement
|
参数化 Select语句
|
Prepared Update Statement
|
参数化 Update语句
|
Commit
|
|
Rollback
|
|
AutoCommit(false)
|
|
AutoCommit(true)
|
|
Edit
|
第三部分,Query参数化
字段
|
定义
|
SQL Query
|
sql 语句
语句结尾不需要添加 ;
变量用 ? 占位
|
Parameter values
|
需要传递的变量值,多个变量用 , 分隔
|
Parameter types
|
变量类型
|
Variable Names
|
保存sql语句返回数据的总行数和返回的数据
用 , 分隔
跳过列用空。
当接收参数少于返回列时,从开始第一列依次往后接收
|
Result Variable Name
|
一个 Object 变量存储所有返回值
|
Query timeout(s)
|
超时时间;默认0,代表无限时间
|
Limit ResultSet
|
和 limit 类似作用,限制 sql 语句返回结果集的行数
|
Handle ResultSet
|
如何定义 callable statements 返回的结果集;默认是存储为字符串
|
SELECT * FROM `user` WHERE shop_id = ? AND user_type = ? AND user_name LIKE ?
? 代表占位符,Parameter values值替代?部分,需要与Parameter types配合使用
sql 中使用占位符时,Query Type 必须选择 Prepared Select Statement 或者 Prepared Update Statement
如果在 sql 语句中使用变量,且是字符串类型,需要加上引号(前提是变量值没有加引号),如 '${name}'
如果在 Parameter values 中使用变量,且是字符串类型,不需要加上引号,只需要在 Parameter types 里写明为 varchar 即可
4、调试取样器查看结果
调试取样器可以在查看结果树中看到在脚本中参数化变量所取得值
——纸上得来终觉浅,绝知此事要躬行——