mysql callablestatement_mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负...

2023-11-16

INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProcedure: ==> Preparing: call sp_one( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? );

INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371 dao.ITaskDao.callProcedure: ==> Parameters: 9999(Integer), 9901(Integer),=(String), task(String), T(String), 1000(Integer), sysL.1.19(String), 13(Integer), 469047(Integer), 20160825(Integer), 151700(Integer)

INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371.dao.ITaskDao.callProcedure: <== Total: 1

INFO | jvm 1 | 2016/08/25 15:17:01 | 16-08-25 15:17:01 DEBUG pool-1-thread-371dao.ITaskDao.callProcedure: <== Updates: 0

mysql general_log中可以发现如下元数据查询语句:

SELECT name, type, comment FROM mysql.proc WHERE name like...

SHOW FUNCTION STATUS LIKE 'sp_one'

SHOW PROCEDURE STATUS LIKE 'sp_one'

SHOW CREATE PROCEDURE `db-name`.`sp_one`

CALL sp_one()

因为我们使用了大量的存储过程,而且很多过程执行非常快,因此导致查询这些元数据本身成了响应时间中很大的一部分,如下所示:

179b83699983254c74625595720682a8.png

根据https://www.percona.com/blog/2006/08/02/mysql-prepared-statements/所述,mysql的Prepare Statements目前好像只能如此,原生mysql jdbc驱动也没支持改进。MariaDB Connector/J倒是进行了优化。

需要使用最古老的

stmt = conn.createStatement();

rs = stmt.executeQuery("call sp_one('a','b')");才能解决该问题。

mybatis的实现中,CALLABLE直接调用了callablestatement,没法直接运行,如下:

CallableStatement cs = (CallableStatement)statement;

cs.execute();

int rows = cs.getUpdateCount();

看来目前只能使用mariadb connector了,就怕这不稳定要么有特定bug存在。。。

我们使用的mysql connector版本是5.1.34。希望后续版本能够优化掉问题。

=============

170222更新

这个最近我们已经解决了,在jdbc.url连接串中增加选项如下:

cachePrepStmts=true

cacheCallableStmts=true

cacheServerConfiguration=true

useLocalSessionState=true

elideSetAutoCommits=false

alwaysSendSetIsolation=false

enableQueryTimeouts=false

useConfigs=maxPerformance有bug https://bugs.mysql.com/bug.php?id=70785等待下一版本发布解决。

如下,大量日志都没有了

2017-02-22T18:47:51.004298+08:00 31744 Query SELECT * FROM `c3potest`

2017-02-22T18:47:51.004677+08:0031753 QuerySELECT * FROM `c3potest`

2017-02-22T18:47:51.840092+08:0030929 QuerySELECT * FROM `c3potest`

2017-02-22T18:47:51.840828+08:0030929 Querycall prl_QueryUniteQuitiesPosition(

7777,77770002,'YWQzYzM3ZTlkOTNjYzFlNzJjNWEzNzUzNDc2OGUyYTI=','101.69.255.190:41723>=ld-web','7',806003,'actL.2.7',7777,0,' ',0,'',0,'',0,0,@com_mysql_jdbc_outparam_p_error_code,@com_mysql_jdbc_outparam_p_error_info

)

2017-02-22T18:47:51.846647+08:0030929 QuerySELECT @com_mysql_jdbc_outparam_p_error_code,@com_mysql_jdbc_outparam_p_error_info

2017-02-22T18:47:51.847462+08:0030929 QuerySELECT * FROM `c3potest`

2017-02-22T18:47:52.001402+08:0031753 Queryselect * from tb_sys_task

2017-02-22T18:47:52.003294+08:0031744 Queryselect unix_timestamp()

最新版本的5.1.41已经发布,意味着可以使用useConfigs=maxPerformance了,同时,elideSetAutoCommits因为bug被弃用。

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

mysql callablestatement_mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负... 的相关文章

  • php://filter(文件包含漏洞利用)

    网址 index php page php filter convert base64 encode resource index php 例如 http 120 24 86 145 8005 post index php file php
  • 论文写作 计算机类顶会顶刊,及论文发表指导

    计算机方向的一些顶级会议和期刊 转载 国内的学报期刊 SCI级 但是IF比较低 也不是特别专门针对计算机视觉 物理学报 红外与毫米波学报 etc EI级 自动化学报 光学精密工程 电子学报 软件学报 计算机研究与发展 计算机学报 征稿指南
  • C#通过TCP传送结构体

    1 定义结构体 命名空间 using System Runtime InteropServices 注意这个属性不能少 StructLayoutAttribute LayoutKind Sequential CharSet CharSet
  • 元器件选型实例(如何选一款合适的 DC-DC )

    授人以鱼不如授人以渔 实际项目的元器件选型 如何选择合适的元器件 矜辰所致 目录 前言 一 应用背景 二 选型准备 2 1 考虑因素 通用因数 结合实际 2 2 初步确定方案 三 实际选型 3 1 查找目标 3 2 筛选目标 价格和库存 3
  • 设计模式详解(四)——原型模式

    一 场景问题 在电商系统中 订单服务通常是业务核心模块之一 在提交订单的过程中 往往会出现某个订单数额较大的订单 例如一些企业订单订购公司员工节假日礼品 往往会订购成千上万件 如果不做拆分 就会导致订单票据较长 此时就会有拆分订单的操作 假
  • CSS 媒体查询

  • FTPUpload

    std string g strVer Mozilla 5 0 Windows NT 6 1 WOW64 rv 13 0 Gecko 20100101 Firefox 13 0 1 size t CallBackHeader void pS
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • [vue3]vue3中引入class类的写法

    1 在src utils topu下创建一个ts文件 topu ts class Topu Topu类中涉及到的变量 都要提前在这个部分定义好 width Number 结尾必须顿号 不然报错 height Number data any
  • Android之Adapter用法总结

    1 概念 Adapter是连接后端数据和前端显示的适配器接口 是数据和UI View 之间一个重要的纽带 在常见的View ListView GridView 等地方都需要用到Adapter 如下图直观的表达了Data Adapter Vi
  • 【解决方法】Windows7 任务计划程序 “任务计划程序服务不可用。任务计划程序将尝试重新与其建立连接。”

    目录 问题背景 问题描述 折腾过程 解决方法 适用于我的解决方法 2 其他解决方法 供参考 解决方法1 3 解决方法2 4 解决方法3 4 解决方法4 5 出错原因 参考资料 问题背景 今天刚好给家里的旧电脑加上新的内存条 组了个双通道 顺
  • FTP搭建教程

    FTP搭建教程 目录 一 FTP简介 二 搭建FTP 一 FTP简介 FTP中文为文件传输协议 简称为文传协议 它也是一个应用程序 不同的操作系统有不同的FTP应用程序 这些应用程序都遵守同一种协议以传输文件 FTP主要的功能是 上传 和
  • 1011. 在 D 天内送达包裹的能力

    传送带上的包裹必须在 D 天内从一个港口运送到另一个港口 传送带上的第 i 个包裹的重量为 weights i 每一天 我们都会按给出重量的顺序往传送带上装载包裹 我们装载的重量不会超过船的最大运载重量 返回能在 D 天内将传送带上的所有包
  • 用Python 编写Logistics算法

    我们用Python来自己编写Logistics算法 首先 先将一些理论 Logistics算法用于实现线性可分的二分类问题 1 Sigmoid函数 fx 1 1 exp x Sigmoid函数是常用的阈值函数之一 函数图像如下 是不是很像累
  • Kotlin内部类

    一 内部类 定义在类内部的类 与类成员有相似的访问控制 kotlin 默认是静态内部类 非静态用inner关键字 this outter this inner的用法 二 匿名内部类 没有定义名字的内部类 类名编译时生产 类似Outter 1
  • 算法[第四版]-图灵程序设计丛书-笔记

    第一章 笔记 1 1 9 编写一段代码 将一个正整数 N 用二进制表示并转换为一个 String 类型的值 s public class Conversionbinary public static void main String arg
  • 计算机科学巨匠

    贝尔实验室联合多家准备开发Multics 系统 但是最后退出了 但是却培养了优秀的人才 如肯汤姆森 花了四周时间自己做了一个简化的系统 这就是Unix的雏形 因为简化所以同事称为unics 后来觉得用B语言编写性能差 与Ritchie 合作
  • u版YOLOv3的卷积权重分享

    网上有许多关于预训练权重的分享 但大部分都要收费 官网下载又太慢了 自己就破费一把 本着一人收费 大家共享的原则 将自己花钱下载的权重文件分享出来 yolov3 tiny conv 15 darknet53 conv 74 链接 https
  • 动态规划C语言初学

    动态规划问题解决的基本思想 1 根绝问题所求的那一项和变量的个数 确定是一维数组 二维数组或者多维数组 2 写出初始值 一般是某个变量为1或者0 的特殊情况时候的解 3 通过循环 一般是两个循环中间每一层循环表示一个变量的递增情况 4 在循

随机推荐

  • 查看服务器文件命令,服务器上查看文件命令

    服务器上查看文件命令 内容精选 换一换 您可以使用JDK自带的keytool工具自制客户端的密钥库文件 client p12 再使用第三方openssl工具将client p12转换为client pem 最后根据client pem文件得
  • python期货基本面分析_Python量化炒期货入门与实战技巧

    1 1 初识量化炒期货 2 1 1 1 什么是量化炒期货 2 1 1 2 为什么要学习量化炒期货 3 1 2 量化炒期货的特点 4 1 2 1 严格的纪律性 5 1 2 2 完备的系统性 5 1 2 3 妥善运用套利的思想 5 1 2 4
  • 消息摘要算法

    文章目录 概述 MD Message Digest SHA Secure Hash Algorithm MAC Message Authentication Code 其它 概述 看图 我们在下载commons codec时候会有这么一个页
  • 接口接收数据_基于原语的千兆以太网RGMII接口设计

    之前介绍MII接口时 有介绍过RGMII接口的由来 下面在贴一下 表8 7 MII接口介绍 简述 Pins 速率计算 MII 基本的100Mbps 10Mbps接口 RXD 3 0 TXD 3 0 TX ER TX EN RX ER RX
  • 字符串算法题

    1 替换空格 1 剑指offer 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 这里我提供了两种方法 常规方法 利用 API 解决
  • 一些可能常用的工具函数

    一些可能常用的工具函数 返回当前的微秒数 1s 1000ms 1ms 1000us 返回当前时间的微秒 long GetCurrentTime timeval tv gettimeofday tv nullptr return tv tv
  • Java8 Stream应用:Map合并、过滤、遍历、values int求和等

    1 Java多个Map合并 多个Map
  • Stream流和不可变集合

    一 不可变集合 什么是不可变集合 不可变集合 就是不可被修改的集合 集合的数据项在创建的时候提供 并且在整个生命周期中都不可改变 否则报错 为什么要创建不可变集合 如果某个数据不能被修改 把它防御性地拷贝到不可变集合中是个很好的实践 或者当
  • 基于Raft协议的两节点主备系统调度算法

    摘要 以城市轨道交通列车指挥调度系统为代表的工业系统受限于工程成本 在运营现场往往仅部署两个服务节点 指挥调度中心因故障离线后 若采用主流的分布式一致性协议保证运营现场节点间数据一致性 将因为降低了可用性而无法容忍节点发生故障 为解决此问题
  • 计算机网络笔记(二)

    计算机网络体系结构 OSI参考模型 数据封装 增加控制信息 构造协议数据单元 PDU 控制信息主要包括 地址 Address 标识发送端 接收端 差错检测编码 Error detecting code 用于差错检测或纠正 协议控制 Prot
  • jsp、servlet、javabean中如何分别设置session的过期时间

    session的概念与基本用法 概念 当用户与服务器连接时 服务器给每个用户一个session 并设定其中内容 这些session相互独立 服务器可以借此来辨别用户信息 进而提供个别服务 session有存在期限 类 javax servl
  • 前端新人进入公司工作流程 超详细!!! 不被当小白

    出来上班除了些人情世故 基本的工作流程还是需要了解的 会避免很多的小麻烦 也不会被别人说是小白 进入公司之后首先熟悉的就是位置 通常产品开发部标配都是组长 前端前辈 后端 测试 UI 产品经理 等其他人员 如果有前辈带你那会更好 很多任务前
  • JWT渗透与攻防(二)

    目录 前言 JWT漏洞演示之CTFhub 一 JWT漏洞演示之CTFhub 二 前言 我们在之前的文章中已经讲解过了JWT漏洞相关的原理和利用 今天我们就通过这篇文章再来了解一下JWT的漏洞 JWT漏洞演示之CTFhub 一 我们进入CTF
  • 用gitmoji在git commit message 添加有意思的表情

    文章目录 用gitmoji在git commit message 添加有意思的表情 用gitmoji在git commit message 添加有意思的表情 用gitmoji 在commit message 添加有意思的表情 让提交代码更有
  • l2tp软件_反向L2TP拨号,接入公司网络

    2019肺炎还没有结束 今天第一天远程复工 前几天介绍了一个全局连回公司网络的方案 但有人私信我 公司没有为了临时办公搭建VPN的准备 大多公司的临时解决方案是用TeamViewer类软件来实现远程连接方案 这类方案基本都不是直连状态 都是
  • RS485通信以及modbus通信协议

    硬件层 rs485解决的是数据传输的问题 如何将0 1 传输到另一端 主机或从机将TTL电平通过485芯片转换成差分信号 抗干扰能力强 传输距离远 485芯片中集成了发送器和接收器 连接单片机io引脚通过高低电平来决定是发送方 还是 接收方
  • “QT 快速上手指南“ 之 计算器(三)信号与槽,connect 函数,QString

    文章目录 前言 一 什么是信号与槽 二 QObject connect 函数 三 QT 中的字符串类 QString 1 创建和初始化字符串 2 字符串的拼接和添加 3 字符串的查找和替换 4 字符串的分割和处理 总结 前言 QT 中 信号
  • 十五个AI图像放大工具

    1 VanceAI Image Enlarger VanceAI Image Enlarger 最大 8x VanceAI Anime Upscaler 动漫图片 最大 16x 2 icons8 Upscaler icons8 Upscal
  • 以太坊创世区块源码分析

    genesis 是创世区块的意思 一个区块链就是从同一个创世区块开始 通过规则形成的 不同的网络有不同的创世区块 主网络和测试网路的创世区块是不同的 这个模块根据传入的genesis的初始值和database 来设置genesis的状态 如
  • mysql callablestatement_mysql jdbc性能优化之mybatis/callablestatement调用存储过程mysql jdbc产生不必要的元数据查询(已解决,cpu负...

    INFO jvm 1 2016 08 25 15 17 01 16 08 25 15 17 01 DEBUG pool 1 thread 371dao ITaskDao callProcedure gt Preparing call sp