I am sure user_io_wait_time is very very high. I am working on to figure out where it is waiting such a long time. Any hints to drive me in the right direction will be much appreciated.
Table current volume - 157 million
Partitioned - Y
No. of Indexes - 2 (1 local part. & 1 global hash part.)
Thanks,
Vijay Tummala
Try hard to get what you like OR you will be forced to like what you get.
Disclaimer: Advice is provided to the best of my knowledge but no implicit or explicit warranties are provided. Since the advisor explicitly encourages testing any and all suggestions on a test non-production environment advisor should not held liable or responsible for any actions taken based on the given advice.
Insert query is fired by Informatica session. One of the Informatica sessions reads the data from source table to informatica buffer, perform transformation, load target table.
When I verify the Informatica logs, reader busy time is less than 1%, transformation busy time is less than 1%, and writer busy time is > 90%.
Thanks,
Vijay Tummala
Try hard to get what you like OR you will be forced to like what you get.
Is there any way to find so far how many times the given Insert query is issued commit? In Informatica session commit interval is set for every 20000 rows but just want to cross check that.
Also, can any one shed some light why INSERT session is waiting on "db file sequential read" which is usually for single block reads like index reads.
I have generated the stats pack report (no license for performance pack) from 11th Nov 10pm to 12th Nov 2am and please see the top 5 wait events below.
Code:
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
----------------------------------------- ------------ ----------- ------ ------
CPU time 70,287 60.9
db file sequential read 2,962,799 34,443 12 29.8
enq: CI - contention 1,276 3,590 2813 3.1
db file scattered read 322,883 1,879 6 1.6
rdbms ipc reply 1,283 1,721 1341 1.5
-------------------------------------------------------------
Please Note - only 2 very bad Insert queries are executing in the database during this time.
Thanks,
Last edited by vnktummala; 11-11-2010 at 12:26 PM.
Reason: typo
Vijay Tummala
Try hard to get what you like OR you will be forced to like what you get.
Insert query is fired by Informatica session. One of the Informatica sessions reads the data from source table to informatica buffer, perform transformation, load target table.
Informatica loves row-by-row processing.
Check how often is Informatica mapping commiting the work.
Do you have a test environment available to conduct a test with no indexes?
Disclaimer: Advice is provided to the best of my knowledge but no implicit or explicit warranties are provided. Since the advisor explicitly encourages testing any and all suggestions on a test non-production environment advisor should not held liable or responsible for any actions taken based on the given advice.
Informatica commit interval is 200000. I have a test environment but not enough volume available there.
As the Insert is part of daily job, I have a luxury to test it in production it self. I have planned the below two things for next load.
1. Decrease the commit interval to 50000
2. Drop both the Indexes
The other insert statement which is executing along with the one I am referring, made me think about decreasing the commit interval because of the free buffer waits.
while investigating more on the issue I had, I have come across a nice metalink document about the Recommended Method for Obtaining 10046 trace for Tuning. This may be helpful for some one so sharing the URL.
Got to read the index (or indexes) to do DML, that would account for the sequential read wait times. CPU time would be indicative of a lot of hard parsing for the insert statements (willing to bet each and every statement is different as opposed to the same via a bind variable or called procedure using a variable).
That table has only two Indexes and as I mentioned earlier both of them are partitioned. One is local and other one is global. However, I will keep this in mind and drop the Indexes during next load.
Please see my instance efficiency percentages.
Code:
Instance Efficiency Percentages
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 95.87 In-memory Sort %: 99.99
Library Hit %: 88.93 Soft Parse %: 86.47
Execute to Parse %: 58.98 Latch Hit %: 99.94
Parse CPU to Parse Elapsd %: 65.59 % Non-Parse CPU: 99.95
Thanks,
Vijay Tummala
Try hard to get what you like OR you will be forced to like what you get.
Bookmarks