我试图了解MySQL JDBC驱动程序中客户端模拟准备语句是如何工作的。
第1部分
步骤的预执行编译SQL语句,从而提供预优化。对于服务器端准备的语句,将对数据库进行一次额外的往返,以预编译SQL语句。
问题,如果客户端模拟准备语句没有往返到数据库,它如何执行步骤3?还是客户端模拟准备语句的工作方式不同?
第2部分我也做了两个实验。
两个实验都显示了响应时间等性能的改善。实验1提高了18%左右,实验2提高了30%左右。
问题
谢谢你的帮忙!
发布于 2014-03-19 10:52:19
简单的回答:没有。默认情况下,MySQL驱动程序只执行从参数化查询和(转义)参数值创建的查询字符串。它将通过用转义值替换参数占位符在本地创建此查询,然后将其发送到服务器。
请注意,JDBC并不要求PreparedStatement实际上是服务器端准备的,也不要求它“改进”性能。JDBC只需要它们工作;如下所示:您可以使用?作为参数占位符指定查询,驱动程序将正确地使用通过setXXX方法设置的值来执行语句。
还请注意,MySQL确实有服务器端准备的语句,但是您需要使用带有值true的connection属性useServerPrepStmts显式地启用该语句。
https://stackoverflow.com/questions/22502954
复制相似问题