PreparedStatment ps = null;public voID executeQuerIEs(){ try{ ps = conn.prepareStatement(query1); // Execute query1 here and do the processing. ps = conn.prepareStatement(query2); // Execute query2 here and do the processing. //... more querIEs }catch(){} finally{ ps.close(); // At this point would the caching of querIEs in DB be lost? }}
在我的应用程序中,我经常调用方法executeQuerIEs().
我的问题是,如果我在方法(我经常使用)中的finally块中关闭PreparedStatement,数据库系统是否会删除缓存?如果是,我可以为整个应用程序创建一个全局PreparedStatement,因为我的应用程序中有大量JAVA CLASSES查询数据库.
谢谢!
更新:问题已标记为重复,但链接的线程根本不回答我的问题. AFAIK,数据库系统将执行的查询存储在高速缓冲存储器中.它还存储了他们的执行计划.这是PreparedStatement比Statement更好的地方.但是,一旦PreparedStatement关闭,我不确定是否删除了与查询相关的信息.
最佳答案特别关于MysqL,据说8.10.3 Caching of Prepared Statements and Stored Programs
The server maintains caches for prepared statements and stored programs on a per-session basis. Statements cached for one session are not accessible to other sessions. When a session ends,the server discards any statements cached for it.
因此,关闭PreparedStatement不会从缓存中删除语句,但可能会关闭Connection.
…除非应用程序使用连接池,否则关闭Connection可能不一定会结束数据库会话;它可以保持会话打开,只返回到池的连接.
然后还有一个问题,即语句是否实际上是在服务器上进行PREPAREd.这是由useServerPrepStmts连接字符串属性控制的.默认情况下,IIRC不启用服务器端预处理语句.
总结以上是内存溢出为你收集整理的java – 如果我关闭PreparedStatement,数据库中的缓存是否会丢失?全部内容,希望文章能够帮你解决java – 如果我关闭PreparedStatement,数据库中的缓存是否会丢失?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)