VO Tuning Confusion or Misunderstood.
Hi
Using Jdev 11.1.1.4.0 I have created a simple employees VO based on an EO and dragged it into a page as a read only table. My goal is to analyze the logs to be able to see exactly the impact the various VO tuning options have on database calls.
My first scenario has the following settings, keeping in mind that the employees table contains 107 rows.
All Rows, in Batches of 25, As Needed, Query Optimizer Hint : FIRST_ROWS, Access Mode : Scrollable, Range Size -1.
Running the page I expect to see the following behavior. The query being executed twice, due to my table rendering more than 25 rows and when scrolling down, past row 50, another query being executed for every 25 records.
Analyzing the logs I can only see that the query has been executed twice for the initial load of the page. Scrolling past row 50 no further query executions are logged.
What I expected was for each Fetching Data… message on the page a corresponding query execution would be logged.
This is where I am confused. When reading the ADF developer guide chapter 39 2.4.1, I understand that using the above settings that for the initial page, which has more than 25 rows, it should execute the query twice, returning 25 rows per trip to the database. Then for each range of 25 rows scrolled, another trip to the database. Have I misunderstood the documentation or does the logging not create log messages for subsequent data fetches from the database or does the initial query executions retrieve all 107 rows into cache and that the Fetching Data… messages indicate rows that are being fetched from cache?
The second scenario has the following settings.
All Rows, in Batches of 1, As Needed, Query Optimizer Hint : FIRST_ROWS, Access Mode : Range Paging, Range Size 25.
The expected behavior is that for each range of 25 rows a query execution is done. From the logs this is also seen as scrolling back and forth in the page an query is executed for the range size + 3 records. Which is expected?
“<OracleSQLBuilderImpl> <bindRangePagingParams> [446] setting rownum query between (25, 53)
<ADFLogger> <addContextData> Execute query”
So as per the ADF Developer guide only 25 rows are being read into cache, except for the initial page load. However I am either confused or misunderstand the documentation for scenario one.
What am I missing when trying to analyze scenario 1?
Kind Regards
Leon.