mysql的jdbc驱动语句_java-MySQL JDBC驱动程序中的客户端仿真准备语句

我试图了解MySQL JDBC驱动程序中的客户端仿真准备语句如何工作.

第1部分

我在线阅读了有关准备好的语句的信息,当关系数据库处理JDBC / SQL查询时涉及四个步骤,它们分别如下:

>解析传入的SQL查询

>编译SQL查询

>计划/优化数据采集路径

>执行优化的查询/获取并返回数据

步骤的预执行将编译SQL语句,因此提供了预优化.

对于服务器端准备好的语句,将对数据库进行一次额外的往返操作以预编译SQL语句.

如果客户端仿真准备好的语句没有往返数据库,该如何执行步骤3?还是客户端仿真准备好的语句工作不同?

第2部分

我也做了两个实验.

>实验1-对每个客户端使用一个客户端准备好的语句

询问

>实验2-为“重新使用”客户端准备好的语句

多次相同的查询

这两个实验都显示出性能的改善,例如响应时间.实验1的改进约18%,实验2的改进约30%.

>我是否可以假设仍存在针对

客户端准备好的语句?

>如果是,是否以类似于服务器端的方式进行预优化

(第1部分中提到的四个步骤)准备好的语句或

有很多不同的方式吗?

>如果没有,为什么还有改进?

谢谢你的帮助!

解决方法:

简单答案:否. MySQL驱动程序(默认情况下)将仅执行从参数化查询和(转义的)参数值创建的查询字符串.它将通过用转义的值替换参数占位符在本地创建此查询,然后将其发送到服务器

请注意,JDBC不需要在服务器端实际准备PreparedStatement,也不需要“提高”性能. JDBC仅要求它们可以工作;如:您可以使用?指定查询作为参数占位符,驱动程序将使用通过setXXX方法设置的值正确执行语句.

还要注意,MySQL确实具有服务器端准备好的语句,但是您需要使用连接属性useServerPrepStmts并将其值为true来显式启用它.

标签:jdbc,prepared-statement,java,mysql,connector-j

来源: https://codeday.me/bug/20191122/2055897.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值