Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: three reads to get 64 blocks with dfmrc=32

Re: three reads to get 64 blocks with dfmrc=32

From: Tim Gorman <tim_at_evdbt.com>
Date: Mon, 16 May 2005 20:30:24 -0600
Message-ID: <BEAEB360.2768C%tim@evdbt.com>


Jaromir,

You've certainly noticed the difference in wait-event names: "db file scattered read" versus "direct path read"?

The first wait-event indicate an operation that is reading blocks from disk into buffers in the Buffer Cache in the SGA, the second indicates reading blocks from disk into "private" process memory in the PGA.

I'm just speculating, but I would guess that there is only room in those read buffers in each P00x process's PGA for sixty-one 16-Kb buffers (i.e. 976Kb), perhaps? Since the operation is a COUNT(*), we know that all that data is not being passed back to the "query coordinator" through the TQ$ "tables" in the Large Pool, just the row counts.

It might be interesting to adjust DFMRC to several different values (i.e. 16, 12, 8, 4) and see if the observed pattern of successive "direct path reads" continue to add up to "61" before each "PX Deq: Execution Msg" which presumably indicates the posting of an intermediate row count to the TQ$ queues.

If this pattern of behavior does continue to show up, then next I would consider playing with PGA_AGGREGATE_TARGET (if you have WORKAREA_SIZE_POLICY=AUTO) to see if increasing or decreasing that value has an affect on the magic number "61". Of course, activity by other sessions in the instance could have an impact on this testing, so hopefully you have a fairly quiet environment to test in.

Sorry, no answers. Just some ideas...

-Tim

on 5/16/05 2:57 PM, jaromir nemec at jaromir_at_db-nemec.com wrote:

> Hi,
>
> Linux, Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
>
> I have a table with 24 extents each has 64 blocks (16K), the dfmrc is set to
> 32.
>
> If I read the table serial, each extend is red with two multiblocks reads of
> 32 and 31 blocks - see extract of tkprof 10046 level 8
>
> select /*+ PARALLEL(x,1) */ count(*) from x;
>
> WAIT #2: nam='db file scattered read' ela= 10281 p1=8 p2=5064 p3=32
> WAIT #2: nam='db file scattered read' ela= 9469 p1=8 p2=5096 p3=29
> WAIT #2: nam='db file scattered read' ela= 44145 p1=8 p2=71174 p3=32
> WAIT #2: nam='db file scattered read' ela= 10020 p1=8 p2=71206 p3=31
> WAIT #2: nam='db file scattered read' ela= 10228 p1=8 p2=71238 p3=32
> WAIT #2: nam='db file scattered read' ela= 19536 p1=8 p2=71270 p3=31
> WAIT #2: nam='db file scattered read' ela= 14996 p1=8 p2=71302 p3=32
>
> If I switch to PX there are 3 read per extend with 32, 29 and 2 block - see
> the extracts of the same event for the two PX slaves:
>
> select /*+ PARALLEL(x,2) */ count(*) from x;
>
> P002
>
> WAIT #1: nam='direct path read' ela= 53 p1=8 p2=5064 p3=32
> WAIT #1: nam='direct path read' ela= 24 p1=8 p2=5096 p3=29
> WAIT #1: nam='PX Deq: Execution Msg' ela= 529 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 26 p1=8 p2=71235 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 3270 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 52 p1=8 p2=71238 p3=32
> WAIT #1: nam='direct path read' ela= 12 p1=8 p2=71270 p3=29
> WAIT #1: nam='PX Deq: Execution Msg' ela= 1916 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 27 p1=8 p2=71299 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 7530 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 50 p1=8 p2=71302 p3=32
> WAIT #1: nam='direct path read' ela= 14 p1=8 p2=71334 p3=29
>
> P001
>
> WAIT #1: nam='direct path read' ela= 53 p1=8 p2=71174 p3=32
> WAIT #1: nam='direct path read' ela= 7 p1=8 p2=71206 p3=29
> WAIT #1: nam='PX Deq: Execution Msg' ela= 8318 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 29 p1=8 p2=71363 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 43306 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 32 p1=8 p2=71427 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 9092 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 27 p1=8 p2=71491 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 45026 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 31 p1=8 p2=71555 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 9513 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 27 p1=8 p2=71619 p3=2
> WAIT #1: nam='PX Deq: Execution Msg' ela= 44602 p1=268566527 p2=1 p3=0
> WAIT #1: nam='direct path read' ela= 31 p1=8 p2=71683 p3=2

--
http://www.freelists.org/webpage/oracle-l
Received on Mon May 16 2005 - 22:43:33 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US