数据库性能测试

数据库压力测试的原理与web测试的原理应该是一致的,都是通过jmeter多线程的机制模拟压力来测试数据库的处理能力。

1、添加oracle数据库驱动

2、添加线程组

3、添加JDBC Connection Configuration 

 jdbc:oracle:thin:@192.168.205.150:1521:kgdb

oracle.jdbc.driver.OracleDriver

4、添加JDBC Request

配置解析:
  • Variable Name: 选用的配置元件变量,前面已经设置了jdbc配置元件的同名字段,这里需要与配置元件的同名字段相同才能引用配置元件的配置,如果你有多个jdbc配置元件,那么根据不同的sampler选择不同的配置元件,这里填入相对应的jdbc配置元件Variable Name 值即可。
  • SQL Query--- Query Type:sql语句类型,下拉框有8个选项,查询语句的话就选Select Statement,更新语句的话就选Update Statement,但是其实不按照这个规则进行的话jmeter这边会报错,但是其实数据库里的值已经操作成功了;如果你要使用图片下方的Parameter values这一块的设置的话,Query Type就需要选择对应的Prepared Select Statement 或者Prepared Update Statement;输入框里输入sql语句
  • Parameter values: 参数值,在sql语句里对于参数使用?代替,那么这里的输入框就输入?号所代表的的具体值,如图,多个时使用逗号分隔,比如

  • Variable names:sql语句中?所代表的参数变量名称,非必填项,填上有助于与脚本的可读性
  • Result Variable name:运行结果保存的变量名称,非必填项,如果设置了以后,运行结果将会以多个map形式的list保存在所设置的变量中,结果中的列名作为map的key值,列的值作为map的value;使用方法columnValue = vars.getObject("resultObject").get(0).get("Column Name");在jdbc请求之后添加BeanShell PostProcessor后置处理器,脚本区域输入脚本内容,如图:
jdbc请求设置:
 
BeanShell后置处理器请求设置:

还有一种方式使用jdbc请求的结果保存变量Result values,将BeanShell脚本:
columnValue = vars.getObject("res").get(0).get("USERNAME");
return columnValue;
把上面两行内容保存文件为bs.bsh,放在jmeter的bin目录下,使用jmeter自带的__BeanShell函数接收返回值,如${__BeanShell(source("bs.bsh"))}

注:填写SQL语句结尾不能加;

 注意:前几天下载了个3.2版本的,发现不需要添加驱动程序一样可以玩,另外Validation Query:默认是Select 1,如果是Oracle,需改为Select 1 from dual,否则报错 Cannot create PoolableConnectionFactory (ORA-00923: 未找到要求的 FROM 关键字),之前的版本没有遇到这个问题。

原文地址:https://www.cnblogs.com/quyong/p/5834005.html