• Jmeter 链接MySQL测试


    1.环境部署

    1.1官网下载MySQL Connector

    https://dev.mysql.com/downloads/connector/j/

    1.2 解压后,将jar放到jmeter/lib目录下

    1.3 在测试计划中添加引用

    2.脚本设置

    2.1设置JDBC Connection Configuration

    先添加一个setUp线程中,在setUp中添加“配置元件”-JDBC Connection Configuration

    注:当然你也可以根据测试需求在执行线程组中添加JDBC Connection Configuration,放在setUp中主要是为了避免每次迭代都重新创建链接

    在Variable Iame for created pool中写入创建链接的引用名,后续使用此名称

    在Database Connection Configuration 中写入链接数据库信息

    Database URL:数据库连接 URL
    JDBC Driver class :数据库驱动
    Username :数据库登录用户名
    Password :数据库登录密码
    Connection Properties 建立连接时要设置的连接属性

    数据库

    驱动

    URL

    MySQL

    com.mysql.jdbc.Driver

    jdbc:mysql://host:port/{dbname}

    PostgreSQL

    org.postgresql.Driver

    jdbc:postgresql:{dbname}

    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

    还可以根据自己需求自定义其他参数

    2.2 设置 JDBC Request

    2.2.1 参数说明

    • Variable Name:填写前面创建的数据库连接池的名字
    • Query type:填写的sql语句
    • Parameter valus:参数值
    • Parameter types:参数类型,可参考:Javadoc for java.sql.Types
    • Variable names:保存sql语句返回结果的变量名
    • Result variable name:创建一个对象变量,保存所有返回的结果
    • Query timeout:查询超时时间
    • Handle result set:定义如何处理由callable statements语句返回的结果

    2.2.2 Query type 参数设置

    • Select statement:查询语句,只能进行一条sql语句的查询
    • callable statement:如果需要进行多条sql语句的查询
    • Update Statement:这是一条更新语句包含insert和update,也是只能进行一条sql语句的查询
    • Prepared Select Statement:用于多次执行的select语句
    • prepared select:用于绑定变量重用执行计划,对于多次执行的SQL语句,prepared select 的第一次执行消耗很高,它的性能主要体现在重复执行上
    • Prepared Update Statement:和我们的prepared select用法极为类似
    • Commit:将未存储的SQL语句写入数据库,使用不多

    2.2.3 Parameter valus的使用

    在sql query中使用”?“作为占位符,并传递参数值和参数类型

    3.获取返回值

    3.1 通过参数名获取

    当Variable names中设置了参数名,可以使用参数名获取参数值

    • keyA_# 获取A列总行数
    • keyA_1 获取A列第一个值
    • keyA_2 获取A列第二个值
    • keyB_2 获取B列第二个值
    • ...

    执行时直接引用参数名

    1. def key_all = vars.get('row_key_#')
    2. log.info('总行数 '+key_all)
    3. def key_1 = vars.get('row_key_1')

    3.2 for each 遍历

    请求中引用输出变量名${F_row_key}

    输出:

    4.记录一个坑

    设置唯一数时,使用jmeter计数器,设置自增规则后,在JSR223中引用

    4.1原始JSR脚本(报错)

    直接引用以${}形式引用'${P_select}'

    1. def P_select = '${P_select}'
    2. log.info('当前key '+ P_select)

    导致'${P_select}'计数器在执行取值阶段数据异常,并没有按照预想递增方式取值;

    5并发演示:

    以线程1-3为例,所以迭代取值都为key = 16

    4.2 修改后JSR

    使用vars方式取值:

    1. def P_select = vars.get('P_select')
    2. log.info('当前key '+P_select)

    能够按照设定依次递增取值

    5.补充

    跨线程组传参

    线程组1
    props.put('P_row_pk',row_pk)
    
    线程组2接收
    String props_pk = props.get('P_row_pk')

    数据库修改链接数

    1. 查询容器
    2. docker ps
    3. 进入容器,或进入MySQL安装目录
    4. sodo docker exec -it mysql bash
    5. 连接MySQL
    6. mysql -u root -ppassword -h localhost
    7. 查询当前连接数
    8. SHOW VARIABLES LIKE 'MAX%';
    9. 修改连接数
    10. set global max_connections = 151

  • 相关阅读:
    线程等待与唤醒
    回文链表(递归方法)
    两道相似的三维dp动态规划题
    【ELFK】之zookeeper
    C语言动态规划和文件操作练习——通讯录
    电脑重装系统后桌面图标如何调小尺寸
    自动点名器
    【OpenCV-Python】教程:3-13 Hough直线变换
    perl 除法运算、取整操作、取余数操作
    ajax同步与异步,json-serve的安装与使用,node.js的下载
  • 原文地址:https://blog.csdn.net/weixin_39913716/article/details/133695724