Re: System stats

  • From: Neil Chandler <neil_chandler@xxxxxxxxxxx>
  • To: Oracle-L Freelists <oracle-l@xxxxxxxxxxxxx>, "carlospena999@xxxxxxxxx" <carlospena999@xxxxxxxxx>, "jonathan@xxxxxxxxxxxxxxxxxx" <jonathan@xxxxxxxxxxxxxxxxxx>
  • Date: Mon, 25 Mar 2019 13:23:32 +0000

UNLESS you're on Exadata, leave them to default.

If you have non-shared resources dedicated solely to that one database - no 
shared storage or virtualised CPU - and you have a single typical workload then 
it might be worth considering, but I still wouldn't gather them.

I've never had a problem with Oracle where I have thought "you know, tweaking 
the system system statistics will fix all of this", but I generally only see a 
few clients per year, not the vast number of systems with edge-case problems 
that some consultants see.

I also wouldn't set them manually. If I really thought I needed to have the 
system stats set manually,  I'd probably make things worse as I'm not 
experienced with manual adjustment. I'd call Jonathan Lewis and ask him to do 
it. :-)

You might also consider what Oracle are habitually testing against. Do they do 
a lot of regressions against many different shapes of system statistics, or 
against the defaults? They don't, as a matter of course, regression test 
against 32K block sizes (almost all of their testing is done against 8k and 16k 
blocksizes) so there's little chance they are looking at this type of variation 
on their shared testing infrastrcuture.

Neil.

________________________________
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> on behalf 
of Jonathan Lewis <jonathan@xxxxxxxxxxxxxxxxxx>
Sent: 25 March 2019 07:50
To: Oracle-L Freelists; carlospena999@xxxxxxxxx
Subject: Re: System stats


My advice has hardly changed since I wrote "CBO - Fundamentals".

If you can give Oracle a realistic idea of what your hardware does under normal 
load, fake it in using dbms_stats.set_system_stats(). (This is essentially what 
Oracle does with the EXADATA option - the optimizer has no useful information 
about smart scans, so the 'exadata' option simply tells it that tablscans are 
"very fast".)

As it is, many sites make a nonsense of the system stats by setting the 
parameter db_file_multiblock_read_count to 128 anyway, which has a far bigger 
impact on the optimizer than tweaking the stats.

On top of that, some sites are now using the resource manager "calibrate_io" 
procedure to measure the speed of their hardware, and that adds another 
dimension to how the optimizer does its arithmetic. (Though it's only supposed 
to be important to automatic degree of parallelism.) And someone's bound to 
remind us what the latest "how big is your hardware" mechanism is - because 
there's another one that I've forgotten about.

Bottom line -
a) leave them to default
or
b) set them to something realistic
but
c) if you're running Exadata you need to set them to indicate very fast 
tablescans

Regards.
Jonathan Lewis
________________________________________
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> on behalf 
of Cee Pee <carlospena999@xxxxxxxxx>
Sent: 25 March 2019 04:56:13
To: Oracle-L Freelists
Subject: System stats

List,
I was reading up on system stats and came across this link:

https://blogs.oracle.com/optimizer/should-you-gather-system-statistics
Here are some of the things the author says:
1. "if you are at a decision point and you need to choose whether to gather 
them or not, then in most cases you should use the defaults and not gather 
system statistics."
Doesnt setting systems help a lot these days esp with faster IO devices. Do the 
listers collect system stats in your environments, test. prod, etc?
2. "there is at least some management or procedural overhead required to 
maintain them"
'Maintaining' stats? I thought once we set the system stats we leave it out 
there forever without touching it?
Thanks all,
CP
--
//www.freelists.org/webpage/oracle-l


Other related posts: