Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> interpreting 10053 trace for hash join
Good morning everybody,
I understand the NL join and (sort of) understand the SM sections of 10053 trace files. But I haven't been able to figure out, or find on hotsos or the rest of the web or here, an explanation for the Hash section.
Here's an selective excerpt from a trace file (line numbers added to part) collected from 9.2.0.2.
OPTIMIZER_FEATURES_ENABLE = 9.2.0 OPTIMIZER_MODE/GOAL = Choose HASH_AREA_SIZE = 131072
8 hash_area: 256 (max=18445) buildfrag: 73382 probefrag: 90 ppasses: 19 Hash join Resc: 28729 Resp: 28729 10 Outer table:
16 hash_area: 256 (max=18445) buildfrag: 90 probefrag: 73382 ppasses: 117 Hash join Resc: 22801 Resp: 22801 18 Join result: cost: 22801 cdn: 15734 rcz: 430
__END excerpt__
lines 8 and 16 are the ones I'm most confused about. The buildfrag and probefrag seem to be the number of 8K blocks needed to store the hash tables (But I would think the probe table isn't stored, but rather built and used on the fly). But in "hash_area: 256", it is 256 what? Surely not bytes. And same for max=18445. It doesn't seem to be related to the HASH_AREA_SIZE. I thought it might come from PGA_A_T (which isn't listed in the PARAMETERS PARAMETERS USED BY THE OPTIMIZER section), but connecting through a shared server (which should rely on HASH_AREA_SIZE, not PGA_A_T) then forcing a hard parse didn't change these numbers.
Of course, I also don't understand how the costs on lines 7 or 15 are computed, but that's probably secondary to the sizing issue.
Can anyone provide some insight?
Thanks,
Xho
-- -------------------- http://NewsReader.Com/ -------------------- Usenet Newsgroup Service New Rate! $9.95/Month 50GBReceived on Mon Sep 29 2003 - 12:30:14 CDT