jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句

jdbc mysql驱动

准备的语句类型

在研究 高性能Java持久性》一书中的“ 语句缓存”一章时,我有机会比较了Oracle,SQL Server,PostgreSQL和MySQL处理预准备语句的方式。

感谢Jess Balint (MySQL JDBC驱动程序撰稿人)在StackOverflow上给出了一个很好的答案 ,我从数据库性能的角度更好地了解了MySQL如何处理预备语句。

基本上,有两种准备语句的方式:在服务器端或客户端。

服务器端准备好的语句

最常见的类型是服务器端语句,它需要两次数据库往返:

  • 驱动程序提交一个准备请求,数据库将该语句解析为查询树 ,该查询树也可以转换为预先优化的树结构。 因为没有实际的绑定参数值很难构建执行计划 ,所以将执行计划推迟到执行语句之前
  • 执行请求包含当前绑定值,数据库将其用于将解析树转换为最佳执行计划。 执行者制定计划并构建关联的结果集。

如果数据访问逻辑未缓存准备好的语句,则额外的数据库往返实际上会损害性能。 为此,某些数据库系统不默认使用服务器端的预处理语句,而是执行客户端的语句准备。

要启用服务器端准备好的语句,必须启用useServerPrepStmts属性。

客户端准备的声明

当在客户端上准备语句时,在将语句发送到数据库服务器之前,将绑定参数标记替换为实际参数值。 这样,驱动程序可以使用单个请求来获取结果集。

缓存语句

在高性能OLTP系统中,语句缓存在降低事务延迟方面起着非常重要的作用。 为了避免多次准备语句,MySQL驱动程序提供了一个客户端语句缓存。 默认情况下禁用缓存,该缓存由cachePrepStmts Connection属性激活。

对于客户端语句,可以在不同的准备语句调用之间重用标记化语句结构。 缓存绑定到数据库连接,但是当使用连接池时,物理连接的生存期跨越多个应用程序级别的事务(因此,频繁执行的语句可以从使用缓存中受益)。

对于服务器端语句,驱动程序缓存ServerPreparedStatement以及对服务器端语句支持的检查(并非所有语句都可以在服务器端准备)。

缓存语句可能会对应用程序性能产生重大影响。如果您对此主题感兴趣,那么您还可以订阅“ 高性能Java持久性 ”状态通知书。

翻译自: https://www.javacodegeeks.com/2015/09/how-does-the-mysql-jdbc-driver-handle-prepared-statements.html

jdbc mysql驱动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 语言的单元测试与代码覆盖率

点击蓝字关注我们来源于网络,侵删前言测试是软件开发过程中一个必须的环节,测试确保软件的质量符合预期。对于工程师自己来说,单元测试也是提升自信心的一种方式。直接交付没有经过测试的代码是不太好的,因为这很可能会浪费整个团…

使用Spring AOP和番石榴速率限制器的节气门方法

外部服务或API可能有使用限制,或者它们不能失败就无法处理大量请求。 这篇文章解释了如何创建一个基于Spring Framework的方面,该方面可以用来限制使用Guava速率限制器的任何建议方法调用。 以下实现需要Java 8,Spring AOP和Guava。 让我们从…

C++ 模板(Template)总结,长点小知识

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删前言:大家好,今天给大家分享一篇关于 C 模板总结概述.模板(Template)指 C 程序设计设计语言中采用…

归并排序 java_归并排序(Java实现)

package primary_01;/** 归并排序* 1.算法实现* 2.验证算法的正确性* 3.分析算法的复杂度*/public class Merge_sort {public static void main(String[] args) {int arr [] {2,1,6,5,9,8,2020,199};sort(arr, 0, arr.length-1);for (int i : arr) {System.out.print(i" &…

python kotlin_在Python,Java和Kotlin中标记参数和重载

python kotlin在多种语言之间跳来跳去可以帮助您注意到不同语言的习惯用法和最佳做法之间的某些差异。 比较有趣的差异之一与一个函数执行多项操作有关。 Python 我们先来看一下Python。 Python实际上无法重载,因为用相同的名称定义一个新的函数/方法只会覆盖前一个…

python调用zabbixapi接口_python调用zabbix api获取主机信息

import requestsimport jsonheaders {Content-Type: application/json}class GetZabbix:def __init__(self):#用户信息self.username "****"self.password "****"self.url "http://192.168.0.*/zabbix/api_jsonrpc.php"self.token self.get…

C++17 常用新特性:带初始化的 if 和 switch 语句

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删早在2016-03-14,Thomas Kppe 在https://wg21.link/p0305r0中就提出了在if和switch使用初始化语句,使用时的代码示例如下&…

python回归预测例子_案例实战 | 逻辑回归实现客户流失预测(附Python代码与源数据)...

关注一下~,更多商业数据分析案例等你来撩前言利用逻辑回归进行客户流失预警建模中涵盖了许多比较细的知识点,思维导图只展示了极小的一部分,相关知识点链接将穿插在文中。(源数据源代码空降文末获取)数据读入数据属性说明数据探索简洁版本&am…

latex中算法命令_比较Java 8中的命令式和功能性算法

latex中算法命令Mario Fusco受欢迎的推文令人印象深刻,显示了类似算法的命令性和功能性方法之间的主要区别实际上是: 势在必行–功能分离pic.twitter.com/G2cC6iBkDJ — Mario Fusco(mariofusco) 2015年3月1日 两种算法都做同样…

四大语言加强统治地位,Rust威胁C/C++

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删TIOBE 公布了 2022 年 10 月的编程语言排行榜。截至今日,Python、Java、C 和 C 语言已经在 TIOBE 榜单的前 4 位盘踞了相当长的一段时…

sql计算留存_SQL无所不能:DBA宝妈宝爸系列分享

原文链接:https://www.modb.pro/db/22315 目前程序从功能上其实已经完全满足客户(当然我这里的客户都是指媳妇儿)需求,具体可参考:使用SQL计算宝宝每次吃奶的时间间隔 - Part1:分析函数的使用使用SQL计算宝宝每次吃奶的时间间隔 -…

java8流分组 性能_Java性能教程– Java 8流有多快?

java8流分组 性能在此JAX Magazine的预览预览中,JAX伦敦发言人Angelika Langer为使用Java流的任何人回答了最重要的问题:它们真的更快吗? Java 8是JDK收集框架的主要补充,即流​​API。 与集合相似,流表示元素序列。 …

对 int 变量赋值的操作是原子的吗?为什么?

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删这个是在面试的时候遇到的问题,当时没有答出来。回到家以后查了查,整理记录下来。原问题:什么指令集支持原子…

C语言知识总结:if-else判断语句和switch-case选择语句

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删1、if-else判断语句一个基本的if语句由一个关键字if开头,跟上在括号()里边的是表示逻辑条件的表达式&#xf…

hibernate性能_改善Hibernate应用程序性能的7种方法

hibernate性能Hibernate是将Java Web应用程序与SQL数据库集成的好工具,但是当应用程序的响应时间开始显着增加时,我们应该怎么做? 当我们怀疑应用程序是否会随着客户群的增长而扩展时,我们该怎么办? 在花大价钱托管或…

python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度

python学习笔记--坐标轴刻度所用的库及环境:ide:pycharmpython环境:python3.7matplotlib: matplotlib 1.11numpy: numpy1.15.datetime :datetime坐标轴刻度概念当需要把x,y坐标轴刻度调整的更密集些或者更宽松点学习如何调整x&…

为什么永远不会有语言取代C/C++?

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删数以百计的 C/C 替代品将会出现,但 C/C 将永远与我们同在!每个 CPU 都带有一种称为 ISA(指令集架构&#xff…

mwc校准油门_编写下载服务器。 第五部分:油门下载速度

mwc校准油门在僵尸网络时代,您可以租用几百美元来运行自己的分布式拒绝服务攻击,拥有紧急开关来有选择地关闭昂贵的功能或严重降低性能是一个巨大的胜利。 在缓解问题的同时,您的应用程序仍可运行。 当然,这种安全措施在高峰或工作…

sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧

上文我们简述了 SQL 的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你 10 个技巧一、 使用延迟查询优化 limit [offset], [rows]经常出现类似以下的 SQL 语句:SELECT * FROM film LIMIT 100000, 10offset 特别大!这是我司出现很多慢…

C语言最全入门笔记

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删c语言入门C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好&am…