Sonntag, Januar 30, 2011

direct path read temp mit cnt=1

Beim Untersuchen der Performance von Analytics bin ich dieser Tage einmal mehr auf das Phänomen gestossen, dass für größere Sortieroperationen zahlreiche direct path read temp-Events mit einem cnt=1 Wert angezeigt werden, obwohl man hier eher Multiblock-I/O erwarten würde. Jonathan Lewis hat dieses Problem gelegentlich genauer beleuchtet und in einem Kommentar zu diesem Artikel, nennt Greg Rahn den Bug 9041800 - Window function operation using IO inefficiently, in dessen Beischreibung die Verwendung des Events 10032 vorgeschlagen wird:

The information provided by event 10032 can be used to check what the average size of the reads is. The trace file will contain a section such as the following:

Size of read slots for merge phase        57344
Number of read slots for merge phase      26
Size of read slots for output             57344
Number of read slots for output           21
Number of direct sync reads               1557
Number of blocks read synchronously       10063

The number of blocks read can be divided by the number of reads to get the number of blocks per read operation. If it is low (close to 1 block per read), then you may be encountering this problem.
Dazu wieder ein sehr übersichtlicher Test in 11.1.0.7, in dem ich nur das Event aktiviere und eine harmlose CTAS-Operation mit Analytics durchführe

alter session set events '10032 trace name context forever, level 1';

drop table test_analytics_1;
create table test_analytics_1
as
select col1
     , col2
     , col3
     , col4
     , col_day_of_month
     , median (val1) over ( partition by col1 ) median_val1
     , val1
  from test_analytics;

Im Trace-File finden sich dazu folgende Angaben:

---- Sort Parameters ------------------------------
sort_area_size                    2949120
sort_area_retained_size           2949120
sort_multiblock_read_count        15
max intermediate merge width      4

    ---- Direct Read Statistics ------
Size of read slots for merge phase        245760
Number of read slots for merge phase      8
Size of read slots for output             49152
Number of read slots for output           24
Number of direct sync reads               12141
Number of blocks read synchronously       12185

Ich verstehe den MOS-Hinweis so, dass die Number of blocks read synchronously/Number of direct sync reads knapp über 1 liegt, wenn man diesen Bug trifft - und das ist dann hier offenbar der Fall.

Keine Kommentare:

Kommentar veröffentlichen