[ 
https://issues.apache.org/jira/browse/OPENJPA-703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12627237#action_12627237
 ] 

Ron Pressler commented on OPENJPA-703:
--------------------------------------

Come to think of it, for queries there's yet a simpler solution. Don't cache 
the generated SQL in a shared cache - simply return it along with the "compiled 
query" in the Query object returned to the user. If the fetch plan changes - 
discard the statement and regenerate it during the next execution. True, this 
does not implement a true cache, but it will provide significant performance 
improvements in the common case.
I just don't like seeing the SQL generation process taking over 30% of my 
program's execution time when I simply execute the SAME QUERY OBJECT over and 
over again.
I would have loved to fix this issue myself, I'm just not yet familiar enough 
with the inner workings of OpenJPA. Getting there.

> Cache ResultObjectProvider data to improve query performance
> ------------------------------------------------------------
>
>                 Key: OPENJPA-703
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-703
>             Project: OpenJPA
>          Issue Type: Improvement
>          Components: kernel
>            Reporter: Ron Pressler
>
> Profiling indicated that JDBCStoreQuery.populateSelect consumes a significant 
> amount of CPU, and is executed every time a query is run. While, in fact, the 
> actual PreparedStatement is created and run only in QueryImpl.toResult. It 
> seems like the returned ResultObjectProvider from JDBCStoreQuery.executeQuery 
> can be at least partially cached, or even cached in its entirety (provided 
> care is taken with the context parameters). 
> It seems like such an improvement would significantly improve query 
> performance.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to