使用场景
- 针对数据库做性能测试
- 获取数据库表内数据关联使用
性能测试背景
- 高并发访问:数据库系统在高并发访问情况下可能遇到性能瓶颈,如响应时间延长、连接耗尽等。通过压测可以评估数据库在高并发负载下的性能表现。
- 复杂查询:某些复杂查询可能会对数据库性能造成影响,例如涉及大量数据的连接查询、多表关联查询、聚合查询等。通过压测可以评估这些复杂查询的执行效率。
- 事务处理:数据库中的事务处理对性能影响较大,尤其是在并发情况下。压测可以模拟并发事务处理和事务提交的情况,以评估数据库对事务处理的支持能力。
- 数据量增长:随着数据量的增长,数据库的性能可能会受到影响,例如查询速度变慢、索引效率下降等。通过压测可以模拟大规模数据量下的性能情况。
- 存储过程和触发器:如果数据库中包含存储过程、触发器等复杂逻辑,压测可以评估这些逻辑对数据库性能的影响。
- 性能调优:压测数据库也是为了评估数据库的性能瓶颈,找到优化点,进行性能调优,提高数据库的响应速度和并发处理能力。
jmeter配置执行
前置操作,下载导入依赖包
下载:mysql-connector-j-8.3.0.jar,放置到jmeter\lib\ext目录下
注:测试不同的数据库下载不同的jar包引入
建立数据库连接,JDBC Connection Configuration
常见的数据库连接URL和驱动
数据库 | 驱动 | URL |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host:port/ |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql: |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:user/pass@//host:port/service |
sqlServer | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://host:port;databaseName=databaseName |
对数据库执行具体操作,配置JDBC Request
调用存储过程:
- Querey Type选择Callable Starement
- SQL语句中变量使用“?”进行占位,在parameter values填写变量值,对应在parameter types中写明变量值类型(例如varvhar,integer,timestamp)
查询数据库验证结果或添加断言
简单查询语句
- Querey Type选择Select Starement
进阶讲解JDBC Request响应数据使用
Variable names
先说概念,Variable names用于填写响应数据列名对应可供调用的变量名称,使用英文“,”隔开,需要有跳过的列名留空占位即可
添加调试取样器来实测一下,提取到的数据可以用于后续接口直接调用,例如:${redpacketid_9}===>738
配合循环控制器简单使用
- 添加循环控制器和计数器
- 添加http请求来实测变量是否有效
- ${__V()}:jmeter中__V是用于执行变量名表达式,返回执行结果,通俗来讲就是,变量名里面嵌套另一个变量,当直接使用${redpacketid_${num}}时,jmeter运行会出现报错,这个时候就需要使用__V函数,例如:${_V(redpacketid${num})}
配合ForEach控制器简单使用
- 添加ForEach控制器
- 添加http请求来实测变量是否有效
- 注:ForEach控制器即for循环,开始循环字段和结束循环字段可以不填写,最多把变量轮询1次
Result variable name
同样先说概念,Result variable name用于接收响应数据的自定义变量名称,将所有的结果组合成一条数组
通过调试取样器观察实际效果
添加正则表达式提取器提取result中指定数据,注意需要选择JMeter Variable Name to use+自定义变量名
配合循环控制器简单使用
- 添加循环控制器、计数器和http请求查看实际效果
配合ForEach控制器简单使用
- 添加ForEach控制器和http请求查看实际效果