Hi, Lewis, Thanks very much for your detailed explanation. Direct read is supper fast just because of the asynch fashion. My next question is: For scattered read, is it possible to use async fashion? Scattered read will read data into SGA which requires some latches to protect the memory. Does reading into SGA/using latches prevent the async fashion? Thanks, Qihua On Thu, May 29, 2008 at 4:00 AM, Jonathan Lewis <jonathan@xxxxxxxxxxxxxxxxxx> wrote: > > There are various reasons - > > some db file scattered reads may be very short and not trigger readahead, > so the next scattered read may also be a real read. direct path reads > are often long and contiguous, so they may be more likely to trigger > read-ahead, and more likely to take advantage of the readahead > that's been triggered. > > Also, direct path reads can be done asynchronously - which means > that 4 requests may be dispatched before the first is checked. This > means that the wait time of the first read is reduced by the time it took > to prepare and dispatch the 2nd, 3rd and 4th. > > > Regards > > Jonathan Lewis > http://jonathanlewis.wordpress.com > > Author: Cost Based Oracle: Fundamentals > http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html > > The Co-operative Oracle Users' FAQ > http://www.jlcomp.demon.co.uk/faq/ind_faq.html > > > ----- Original Message ----- From: "qihua wu" <staywithpin@xxxxxxxxx> > To: "oracle-l" <oracle-l@xxxxxxxxxxxxx> > Sent: Wednesday, May 28, 2008 10:45 AM > Subject: direct read is much faster than scattered read, is it reasonable? > > > I executed these sql on my database: >> >> SQL> select time_waited_micro/total_waits/1000000 from v$system_event >> where event_id in (select event_id from v$event_name where name='direct >> path >> read'); >> >> TIME_WAITED_MICRO/TOTAL_WAITS/1000000 >> ------------------------------------- >> .000503342 >> >> SQL> select time_waited_micro/total_waits/1000000 from v$system_event >> where >> event_id in (select event_id from v$event_name where name='db file >> scattered >> read'); >> >> TIME_WAITED_MICRO/TOTAL_WAITS/1000000 >> ------------------------------------- >> .001818803 >> >> >> >> We could see: to access one block using *scattererd read*, it will take >> *1.8 >> ms*, but when access one block using "*direct path read*", it only takes >> * >> 0.5ms*. How could direct path read much much quicker than scatterer read? >> Isn't the scattered read the fastest method to access data block? Our >> system uses SAN storage, and SAN could pre-fetch to speed-up the block >> access. But I think it pre-fetch will help both scattered read and direct >> path read, am I right? >> >> Thanks, >> Qihua >> >> >