Jmeter性能测试(11)--JDBC Request之Query Type

2023-05-16

工作中遇到这样一个问题:

需要准备10W条测试数据,利用jmeter中的JDBC Request向数据库中批量插入这些数据(只要主键不重复就可以,利用函数助手中的Random将主键的ID末尾五位数随机插入);

响应数据报错:Can not issue data manipulation statements with executeQuery().后来查阅了很多资料,才发现跟JDBC Request中的Query Type类型选择有关;

最后得出的结论是:如果SQL语句是update、insert等更新语句,应该使用statement的execute()方法;如果使用statement的executeQuery()就会出现报错。

PS:之前的博客有简单介绍JDBC Request怎样使用,传送门:http://www.cnblogs.com/imyalost/p/5947193.html

下面主要说jmeter的JDBC Request请求中的Query Type

JDBC Request界面如下:

其中Query Type(SQL语句类型)包含十个类型,每个类型作用都不同,下面分别介绍。

1、Select statement

这是一个查询语句类型;如果JDBC Request中的Query内容为一条查询语句,则选择这种类型。

PS:多个查询语句(不使用参数的情况下)可以放在一起顺序执行,需要设置Query Type为:Callable Statement;

    如果Query Type为:select Statement,则只执行第一条select语句。

2、Update statement

这是一个更新语句类型(包含insert和update);如果JDBC Request中的Query内容为一条更新语句,则选择这种类型。

PS:如果该类型下写入多条update语句,依然只执行第一条(原因同上,具体下面介绍)。

3、Callable statement

这是一个可调用语句类型,CallableStatement 为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。

已储存过程储存在数据库中,对已储存过程的调用是 CallableStatement 对象所含的内容。

这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参数,另一种形式不带结果参数;结果参数是一种输出 (OUT) 参数,是已储存过程的返回值。

两种形式都可带有数量可变的输入(IN 参数)、输出(OUT 参数)或输入和输出(INOUT 参数)的参数,问号将用作参数的占位符。 

在 JDBC 中调用已储存过程的语法如下所示。注意,方括号表示其间的内容是可选项;方括号本身并不是语法的组成部份。 

{call 过程名[(?, ?, ...)]},返回结果参数的过程的语法为: {? = call 过程名[(?, ?, ...)]};

不带参数的已储存过程的语法类似:{call 过程名}。

更详细的使用方法可参考这篇文章:http://blog.csdn.net/imust_can/article/details/6989954

4、Prepared select statement

statement用于为一条SQL语句生成执行计划(这也是为什么select statement只会执行第一条select语句的原因),如果只执行一次SQL语句,statement是最好的类型;

Prepared statement用于绑定变量重用执行计划,对于多次执行的SQL语句,Prepared statement无疑是最好的类型(生成执行计划极为消耗资源,两种实现速度差距可能成百上千倍);

PS:PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行。

更详细的解释请参考这一篇文章:http://blog.csdn.net/jiangwei0910410003/article/details/26143977

5、Rrepared update statement

Prepared update statement和Prepared select statement的用法是极为相似的,具体可以参照第四种类型。

6、Commit

commit的意思是:将未存储的SQL语句结果写入数据库表;而在jmeter的JDBC请求中,同样可以根据具体使用情况,选择这种Query类型。

7、Rollback

rollback指的是:撤销指定SQL语句的过程;在jmeter的JDBC请求中,同样可以根据需要使用这种类型。

8、AutoCommit(false)

MySQL默认操作模式就是autocommit自动提交模式。表示除非显式地开始一个事务,否则每条SQL语句都被当做一个单独的事务自动执行;

我们可以通过设置autocommit的值改变是否是自动提交autocommit模式;

而AutoCommit(false)的意思是AutoCommit(假),即将用户操作一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。

9、AutoCommit(true)

这个选项的作用和上面一项作用相反,即:无论何种情况,都自动提交将结果写入,结束当前事务开始下一个事务。

10、编辑(${})

jmeter中的JDBC请求中的SQL语句是无法使用参数的,比如: SELECT * FROM ${table_name} 是无效的。

如果需实现同时多个不同用户使用不同的SQL,可以通过把整条SQL语句参数化来实现;(把SQL语句放在csv文件中,然后在JDBC Request的Query 中使用参数代替 ${SQL_Statement})。

Jmeter性能测试(12)--关联之正则表达式提取器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jmeter性能测试(11)--JDBC Request之Query Type 的相关文章

随机推荐

  • python版MapReduce基础实战

    第一关 xff1a 成绩统计 任务描述 本关任务 xff1a 使用Map Reduce计算班级中年龄最大的学生 相关知识 为了完成本关任务 xff0c 你需要掌握 xff1a 1 什么是MapReduce xff0c 2 如何使用MapRe
  • 视觉SLAM十四讲笔记六(第七讲)

    1 引言 前几节介绍了运动方程和观测方程的具体形式 xff0c 并讲解了以非线性优化为 主的求解方法 本讲 xff0c 我们将介绍什么是特征点 xff0c 如何提取和匹配特征点 xff0c 以及如何根据配对的特征点估计相机运动 2 特征点法
  • [C++教程①]--了解c语言以及第一行代码

    hellohello xff0c 我是离 今天开始 xff0c 我会对小白朋友讲解c 43 43 C 43 43 是什么 C 43 43 是C语言的继承 xff0c 它既可以进行C语言的过程化程序设计 xff0c 又可以进行以抽象数据类型为
  • 虚拟机可以ping通IP,但是ping通不了域名

    今天用VMware安装了一个centos7系统 xff0c 正常安装上去 xff0c 编辑了ifcfg ens33网卡信息 在物理机上ping虚拟机地址和百度的域名 xff0c 测试可以ping通 又去虚拟机上ping一下百度域名www b
  • 笔记(STM32篇)day12——USART串口介绍、串口初始化结构体

    目录 一 USART介绍 1 USART简介 2 USART功能框图 二 串口初始化结构体 参考 一 USART介绍 1 USART简介 通用同步异步收发器 Universal Synchronous Asynchronous Receiv
  • 京东Java后台开发岗社招面试经验分享,4面的面经!

    前言 正好最近我一朋友面试京东回来 xff0c 和我聊了他的面试经过 xff0c 最后经过四面成功斩获offer xff01 下面我把他所得经验毫无保留的分享给大家 xff01 希望对正准备面试小伙伴们能有所帮助 xff01 xff01 x
  • 关于系统架构

    系统架构 1 系统架构包括什么形式2 C S架构2 1 C S架构的软件或者系统2 2 C S架构的特点2 3 C S架构的优缺点 3 B S架构3 1 优缺点3 2 B S结构的系统的通信原理关于域名 4 WEB服务器软件4 1 WEB服
  • Jmeter性能测试(10)--参数化

    参数化是自动化测试脚本的一种常用技巧 简单来说 xff0c 参数化的一般用法就是将脚本中的某些输入使用参数来代替 xff0c 在脚本运行时指定参数的取值范围和规则 xff1b 这样 xff0c 脚本在运行时就可以根据需要选取不同的参数值作为
  • AT指令1

    我之前认为手机号码与SIM卡是一一对应的 xff0c 后来想想不对 xff0c 因为有换卡不换号的情况啊 xff0c 所以SIM卡应该只是一个电话号码的储存介质 xff0c 而与SIM卡一一对应的是另一个编码 IMSI xff08 国际移动
  • Keil5 的常见错误

    1 C Source led c 22 warning 69 D integer conversion resulted in truncation 这个是由于实际值的范围超过了定义值的范围 2 C Source main c 15 err
  • c语言实现FTP

    这个实现了客户端和服务端文件的相互传输 xff08 只在本机上运行过 xff09 xff0c 如果是要两台计算机相互传数据要改ip 给大家看一下实现过程 xff08 exe文件要先开服务端的 xff09 输入1 直接将快捷方式拖拽上去就有绝
  • 2021 => 手把手搭建dhcp服务(详细)

    架构解析 dhcp服务器配置 配置实验环境 关闭VMware的dhcp服务 给虚拟机添加网卡为VMnet1 安装与配置dhcp服务 给新添的网络配置IP 配置dhcp服务 在真实的主机系统上查看dhcp配置 为真实主机系统分配固定的IP 修
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进
  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a
  • 七层负载均衡HAproxy生产环境LVS+Keepalived+HAproxy(三)

    LB Haproxy Nginx x1f4af 解析 xff1a 七层负载均衡器 xff0c 为与七层模型上的应用层 xff0c 通过URL地址 xff08 应用层 xff09 进行负载均衡 优点 xff1a 详细地址 xff0c 数据精准
  • Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)

    文章目录 kubeadm部署高可用集群注意事项k8s部署 二进制与高可用的区别 一 环境配置1 所有节点修改主机名2 所有节点进行域名解析3 所有节点关闭相关应用3 1 防火墙关闭3 2 dnsmasq关闭3 3 NetworkManage
  • k8s Pod简介与探针实现零宕机发布

    目录 一 Pod简介 Pod的退出流程 1 什么是Pod 2 定义一个Pod 二 探针 零宕机发布 1 Pod探针 2 Pod探针的检测方式 3 探针检查参数配置 4 startupProbe 5 liveness 6 readiness
  • VmWare克隆 CentOS7

    问题1 xff1a 无法启动图形化界面 背景 xff1a 搭建 Zookeeper 集群需要多台服务器 xff0c 于是参考 VmWare 克隆 CentOS7 xff0c 但是克隆后启动无法进入 图形化界面 报错现象 xff1a 分析过程
  • 【Opencv】CV_* was not declared in this scope 的部分解决方法

    问题描述及原因分析 Opencv在更新到 新版本 后 xff0c 在运行有些 旧版本 的代码时会出现此类情况 解决方案 xff1a error CV AA was not declared in this scope 在头文件中添加 inc
  • Jmeter性能测试(11)--JDBC Request之Query Type

    工作中遇到这样一个问题 xff1a 需要准备10W条测试数据 xff0c 利用jmeter中的JDBC Request向数据库中批量插入这些数据 xff08 只要主键不重复就可以 xff0c 利用函数助手中的Random将主键的ID末尾五位