Re: Re: Automatic tuning of db_file_multiblock_read_count ???
- From: "Jonathan Lewis" <jonathan@xxxxxxxxxxxxxxxxxx>
- To: <Oracle-L@xxxxxxxxxxxxx>
- Date: Tue, 19 Jul 2005 09:28:28 +0100
It looks to me like the manual is wrong.
"the optimizer uses the value of mbrc when performing full table scans"
Very unlikely - the optimizer doesn't perform tablescans, it
makes a decision based on predicted resource consumption
and tells the run-time engine to perform the tablescan. The
run-time engine will try to do that tablescan as quickly as
possible if told to do a tablescan. This should probably say
"the optimizer uses the value of mbrc when estimating the cost of full
"However, the optimizer uses mbrc=8 for costing"
See above - the optimizer only ever does costing, so how
can it have to deal with two different values, and why a
completely arbitrary 8 ?
The "real" mbrc is actually somewhere in between
No - the 'real' mbrc is what Oracle has captured
as the MBRC. The explanation about buffered
blocks etc. is a good explanation of why it would
be bad to use the value of db_file_multiblock_read_count,
and why the stats gathering records a 'real' (although
'typical', or 'average' might be a better word) size
for the achievable multiblock read counts.
"The mbrc value gathered as part of workload statistics is thus useful
for FTS estimation".
True - so why tell us that
a) Oracle uses it at RUNTIME, when its used for estimation
b) Oracle uses 8 instead of the MBRC
NOTE - when running 10.1, if you don't collect system statistics,
and the optimizer is using the 'noworkload' statistics as a consequence,
then it uses your setting of db_file_multiblock_read_count as the
MBRC in the calculation of the cost of a tablescan.
Now waiting on the publishers: Cost Based Oracle - Volume 1
The Co-operative Oracle Users' FAQ
Public Appearances - schedule updated 8th July 2005
----- Original Message -----
From: "Peter Alteheld" <palteheld@xxxxxxxx>
To: "Jared Still" <jkstill@xxxxxxxxx>
Sent: Thursday, July 14, 2005 8:00 AM
Subject: Re: Re: Automatic tuning of db_file_multiblock_read_count ???
it seems the theme I was looking for isn't yet published on that site - it
might be in the upcoming Part 3.
But I have found some stuff in the docs, Perf. Tuning Guide, 14.4:
"In release 10.2, the optimizer uses the value of mbrc when performing full
table scans (FTS). The value of db_file_multiblock_read_count is set to the
maximum allowed by the operating system by default. However, the optimizer
uses mbrc=8 for costing. The "real" mbrc is actually somewhere in between
since serial multiblock read requests are processed by the buffer cache and
split in two or more requests if some blocks are already pinned in the
buffer cache, or when the segment size is smaller than the read size. The
mbrc value gathered as part of workload statistics is thus useful for FTS
Other related posts: