使用ojdbc6 getMetaData()对结果集执行的sql数量激增,不要用ojdbc5看到这个

时间:2011-04-05 19:10:27

标签: oracle jdbc metadata

我们对从oracle存储过程调用返回的每个游标使用getMetaData()。

使用ojdbc5,我们没有执行元数据sql的数量和平均时间。但是使用ojdbc6,我们看到执行的元数据sql数量激增,并且平均执行时间增加。

有没有人知道或意识到ojdbc6的这个问题..希望他们让它成为开源的吗?

有人至少尝试过反编译ojdbc6 jar吗?

1 个答案:

答案 0 :(得分:1)

问题在于Spring的SimpleJdbcCall的工作方式,它获取过程的元数据及其每个调用的参数。即使他们不应该缓存它,也应该有一个设置,在使用SimpleJdbcCall时启用和禁用元数据的缓存。

当使用SimpleJdbcCall时...要注意发生的元数据争用..如果你的应用程序有太多的pl / sql过程调用,那么oracle可能会获得latch争用,因此整个应用程序将减慢,因为这会导致瓶颈...服务器甚至崩溃渲染应用程序无响应。通过跳入spring代码添加一个小缓存并创建一个标志来启用/禁用... tadaanngggg ..它比以前更快地工作。