With ojdbc6 getMetaData() on resultset spikes in number of sql's executed, dont see this with ojdbc5
we use getMetaData() on every cursor returned from the oracle stored procedure call.
With ojdbc5 we dont have spike in number of metadata sql's executed and average time. But with ojdbc6 we see spike in number of metadata sql's executed and increase in avg sql execution time.
Does anyone know or aware of this issue with o开发者_JAVA百科jdbc6.. wish they had made it open source?
did anyone atleast try decompiling the ojdbc6 jar anytime?
the problem is with the way SimpleJdbcCall of Spring works, it gets the metadata of the procedure and its arguments for everycall. even though they should not cache it, there should have been a setting which enables and disables the caching of the metadata while using SimpleJdbcCall.
When using the SimpleJdbcCall... beware of the metadata contention that happens.. if your app has too many pl/sql procedure invocations then the oracle can get latch contention and hence the overall app will slow down as this causes a bottleneck... servers even crash rendering the app non-responsive. add a small cache by diving into spring code and make a flag to enable/disable... tadaanngggg.. it works awesomely faster than ever.
精彩评论