Oracle - 隐式vs显式语句缓存

时间:2013-03-21 17:16:59

标签: oracle prepared-statement

任何人都可以清楚地解释隐式和显式语句缓存在Oracle中的区别(as described here)。

我基本上想要重现DBCP连接池提供的功能,这样一条语句只会被发送到数据库进行一次准备(或每次连接一次)!

感谢。

1 个答案:

答案 0 :(得分:3)

从您提供的链接:

  

启用隐式语句缓存时,JDBC会在您调用此语句对象的close方法时自动缓存预准备语句或可调用语句。

  

显式语句缓存使您可以缓存和检索选定的准备和可调用语句。显式语句缓存依赖于一个键,即您提供的任意Java String。由于显式语句高速缓存保留语句数据和状态以及元数据,因此它具有隐式语句高速缓存的性能优势,而隐式语句高速缓存仅保留元数据。但是,在使用这种类型的缓存时必须小心,因为显式语句缓存会保存所有三种类型的信息以供重用,您可能不知道从事先使用语句时保留了哪些数据和状态。

隐式缓存看起来总是在关闭时保存准备好的和可调用的语句,而显式缓存只保存您指定的语句。显而易见的是,显式缓存可能会稍微快一些,但会带来返回过时数据的风险。