View previous topic :: View next topic
|
Author |
Message |
rockish
Active User
Joined: 05 Jun 2009 Posts: 185 Location: Planet Earth
|
|
|
|
Hi all,
We are in the process of trying to reduce the run time of long running batch jobs. We used APA to profile the long running steps. The APA reports shows a high CPU and Wait time on FETCH statement of a dynamic cursor. The corresponding OPEN statement consumption is <10% of the total consumption of FETCH statement.
I am trying to understand the difference between the time spent on the OPEN and FETCH. Does this mean that the cursor was resolved faster (as the OPEN only took 10% of the time) ? Will this imply that implementing multi row fetch (which might reduce the total number of database calls) improve the performance of this fetch statements ? Or will I still have to go ahead with fine tuning the query to improve its access path ?
Please advice/guide me on which would be the best approach. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
From what little has been posted, I cannot make a suggestion about which would be better.
You need to provide much more detail.
How was the 10% determined? What about the result of an explain?
Is the test environment like the prod environment as far as volume and table/key definition?
Keep in mind that different Opens require more resources. |
|
Back to top |
|
|
GuyC
Senior Member
Joined: 11 Aug 2009 Posts: 1281 Location: Belgium
|
|
|
|
If the query involves an intermediate resultset, then it is resolved at OPEN . If not then each FETCH is taking CPU.
=
If all qualifying rows are being searched (and sorted) before the first row can be returned, it will be the OPEN that takes time.
If rows can be returned to the program as soon as DB2 finds them, then the FETCH will take the time.
Note that not all ORDER BY/GROUP BY cause an intermediate resultset, some/most are resolved by using the correct indexes.
Not using an order by or group by does not mean there will be no intermediate rseultset. it all depends on the accesspath. |
|
Back to top |
|
|
Ed Goodman
Active Member
Joined: 08 Jun 2011 Posts: 556 Location: USA
|
|
|
|
Is there any chance that during the APA measurment session, the open was done only once, while the fetch was done thousands/millions of times?
This would result in a skewed view of the percentages.
ie, a FETCH that is taking 1/1000 the CPU of an OPEN would show as equal CPU if it ran 1000 times during the measurement.
When you look at the overall cpu/wait for he entire job, where is your problem? |
|
Back to top |
|
|
|