TBa*_*Bag 5 java mysql jdbc oracle11g
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?
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我executeQueries()经常调用该方法.
我的问题是,如果我关闭PreparedStatement方法中的finally块(我经常使用),数据库系统会删除缓存吗?如果是,我可以PreparedStatement为整个应用程序创建一个全局,因为在我的应用程序中有大量的JAVA CLASSES查询数据库.
谢谢!
更新:问题已标记为重复,但链接的线程根本不回答我的问题.AFAIK,数据库系统将执行的查询存储在高速缓冲存储器中.它还存储了他们的执行计划.这是PreparedStatement比穿着更好的地方Statement.但是,我不确定PreparedStatement关闭后是否删除与查询相关的信息.
特别是关于 MySQL,根据
\n\n\n\n\n\n\n服务器为每个会话维护准备好的语句和存储的程序的缓存。为一个会话缓存的语句不可被其他会话访问。当会话结束时,服务器会丢弃为其缓存的所有语句。
\n
因此,关闭 aPreparedStatement不会从缓存中删除语句,但关闭 aConnection可能会从缓存中删除语句。
...除非应用程序使用连接池,在这种情况下关闭Connection可能不一定会结束数据库会话;它可能会保持会话打开并将连接返回到池中。
还有一个问题是语句是否实际上在服务器上准备好了。这是由useServerPrepStmts连接字符串属性控制的。IIRC,默认情况下,不启用服务器端准备好的语句。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |