1、JDBC协议
使用场景:数据库性能(d订单等大量查询) 总结:可能出现大量查询或者数量大的情况。 用到的元件: JDBC Request、JDBC Connection Configuration JDBC Request
示例:使用"XXX"的 JDBC接口(要确保"XXX"数据库是启动的)
用户名 root 密码 XXX
启动和关闭mysql(开机会自动启)
service mysqld start #启动
service mysqld stop #停止
service mysqld status #状态
进入mysql
//跳转到mysql所在的目录
cd /usr/local/mysql
//进入mysql
./mysql -u root -p 回车,然后输入密码
进入mysql之后的命令:
show databases; //查看有哪些表
use mysql; //使用mysql的库
2、使用 JMeter请求JDBC协议接口的脚本
1、添加元件:JDBC Request、JDBC Connection Configuration
2、JDBC Connection Configuration 参数配置
在测性能时,尽量在局域网环境测试,排除网络速度的不稳定的干扰。
//dstest:不同数据库不一样,端口号也不一样
jdbc:mysql://192.168.221.13:3306/dstest
参数配置:
(1) Variable Name Bound to Pool
Variable Name, 创建池的变量名 。这个变量在后面介绍的 JDBC Request 请求中用到。
(2) Connection Pool Configuration
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语句。
中文:打开或关闭连接的自动提交。
原文:Turn auto commit on or off for the connections。
(3) Connection Validation by Pool
这是Jmeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效。
Test While Idle:当空闲的时候测试连接是否断开。
中文:测试连接池的空闲连接,验证查询将会被使用去测试。
原文:Test idle connections of the pool, see BasicDataSource.html#getTestWhileIdle . Validation Query will be used to test it.
Soft Min Evictable Idle Time(ms)
中文:最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)
Validation Query :验证查询 。一个简单的查询,用来确定数据库是否仍在响应。 这个验证查询在池创建中使用,即使“空闲测试”建议查询只在空闲连接上使用,也可以验证它。
验证查询的列表可以配置 jdbc.config.check。查询属性,默认情况下:
hsqldb:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
Oracle:select 1 from dual
DB2:select 1 from sysibm.sysdummy1
MySQL:select 1
Microsoft SQL Server (MS JDBC driver):select 1
PostgreSQL:select 1
Ingres:select 1
Derby:values 1
H2:select 1
Firebird:select 1 from rdb$database
(4) Database Connection Configuration
Database URL: jdbc:mysql://服务器地址:3306/数据库名
例如:jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true)
注:“&allowMultiQueries=true” 这句话的意思是为了在JDBC中执行多条select语句的时候用的!
JDBC Driver class:数据库JDBC驱动类名:com.mysql.jdbc.Driver
Username:数据库连接用户名
password:数据库连接密码
| Datebase | Driver class | Database URL jdbc:mysql://host:port/(dbname) |
|---|---|---|
| MySQL | com.mysql.jdbc.Driver | jdbc:postgresql:(dbname) |
| PostgreSQL | org.postgresql.Driver | jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host=(mc-name)) |
| Oracle | oracle.jdbc.driver.OracleDriver | (protocol=tcp)(port=(port-no)))(connect_data=(sid=(sid]))) |
| Ingres (2006) | ingres.jdbc.IngresDriver | jdbc:ingres://host:port/db[;attr=value] |
| MSSQL | com.microsoft.sqlserver.jdbc.SQLServerDriver 或者 net.sourceforge.jtds.jdbc.Driver | jdbc:sqlserver://IP:port;databaseName=DBname 或者 jdbc:jtds:sqlserver://localhost:1433/"+“library” |
3、JDBC Request 参数配置 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作。它经常需要和JDBC Connection Configuration配置原件(配置数据库连接的相关属性,如连接名、密码等)一起使用。 JDBC Request 参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致。 Query Type:此处支持方式多样,可以用于添加或者筛选数据,根据需要和Query配合使用; Parameter valus:参数值,顺序替代Query中的?; Parameter types:参数类型,可参考:Javadoc for java.sql.Types Variable names:保存sql语句返回结果的变量名 ,用于作为参数供调用 Result variable name:创建一个对象变量,保存所有返回的结果 ,供调用; Query timeout:查询超时时间 Handle result set:定义如何处理由callable statements语句返回的结果
4、执行 JDBC脚本 可以跑多个请求。
5、查询数据,结果分析 报告显示查询平均值约为:10s、预期:3s以内。 原因:没有索引,全量查询比较耗时。 解决:优化数据库结构。暑期编程PK赛 得CSDN机械键盘等精美礼品!



