12c Adaptive Optimization
12c Adaptive Optimization
whoami
Never Worked for Oracle
Worked with Oracle DB Since 1982 (V2)
Working with Exadata since early 2010
Work for Enkitec (www.enkitec.com)
(Enkitec owns several Exadatan V2/X2/X3)
(And Others BDA, Exalytics, ODA, etc)
Worked on a couple of books
Hadoop Aficionado
Exadata Fan Boy
This is my 11th Presentation at Hotsos
Blog: kerryosborne.oracle-guy.com
Twitter: @KerryOracleGuy
Cardinality Misunderestimate
mostly
and its pretty easy to recognize
Cardinality Misunderestimate
Cardinality Misunderestimate
Wolfgang Breitling Tuning By Cardinality Feedback
Randolf Geist xplan_extended_display_cursor.sql
Adrian Billington Xplan Wrapper
Kyle Halley Display_Cursor Post
Optimizer Evolution
Bind Variable Peeking
Dynamic Sampling
Adaptive Cursor Sharing
Cardinality Feedback
Tuning Advisor
Trend towards more dynamic plans
11g drawbacks
must run badly before it does anything
fixes not persisted
10
11
Adaptive Optimization
Adaptive Query
Optimization
Adaptive Plans
Join
Methods
Parallel
Distribution
Methods
Adaptive Statistics
At
Compile
Time
At
Run Time
Cardinality Feedback
Dynamic Sampling
12
SPD = PDS
13
Adaptive Plans
Join
Methods
Parallel
Distribution
Methods
Adaptive Statistics
At
Compile
Time
At
Run Time
14
2 Join Methods
Nested Loop
Hash Join
15
Adaptive Optimization
Controls
optimizer_adaptive_features = false
- big switch - controls all adaptive stuff
optimizer_features_enable <= 12.1.0.1
- even bigger switch please dont use this one!
optimizer_adaptive_reporting_only = true
_optimizer_adaptive_plans=false
- individual control for adaptive plans
_optimizer_use_feedback=false
- individual control for cardinality feedback
optimizer_dynamic_sampling=0
- individual control for dynamic sampling
16
NESTED LOOPS
HASH JOIN
Statistics
Collector
Table scan
Index Scan
Table scan
17
NESTED LOOPS
HASH JOIN
Statistics
Collector
Table scan
Index Scan
Table scan
18
19
Digression - OTHER_XML
20
Produces plan which shows steps which were abandoned in final plan.
Abandoned steps are marked with a -
21
22
23
Abandoned
24
25
26
28
Adaptive Plans
Join
Methods
Parallel
Distribution
Methods
Adaptive Statistics
At
Compile
Time
At
Run Time
29
Enabled by default
30
Distribution
method decision
based on
expected number
of rows
Cardinality based
distribution skew
is common
Can result in very
uneven
distribution
p1
Statistics
p2
p6
p3
p7
p4
p8
HybridHash
Broadcast
31
Adaptive Statistics
Dynamic Statistics (Sampling)
Adaptive Query
Optimization
Adaptive Plans
Join
Methods
Parallel
Distribution
Methods
Adaptive Statistics
At
Compile
Time
At
Run Time
Dynamic Sampling
32
Dynamic Statistics
Dynamic statistics are used to compensate for missing,
stale, or incomplete statistics
They can be used for table scans, index access, and joins
Optimizer computes a time budget for generating dynamic
statistics based on query run-time
Statistics are stored in memory and can be shared across
queries
My Blog: Randolf Geist on Dynamic Sampling
33
Adaptive Statistics
Dynamic Statistics (Sampling)
Adaptive Query
Optimization
Adaptive Plans
Join
Methods
Parallel
Distribution
Methods
Adaptive Statistics
At
Compile
Time
At
Run Time
Cardinality Feedback
34
Adaptive Statistics
Re-optimization
During execution optimizer estimates are compared to
execution statistics
If statistics vary significantly then a new plan will be chosen for
subsequent executions based on execution statistics
Re-optimization uses statistics gathered from previous
executions
First introduced as Cardinality Feedback in 11.2
35
Adaptive Statistics
Cardinality Feedback 11g
Statistics gathered about data volume and data type seen during execution
If execution statistics vary significantly statement will be hard parsed on
the next execution using the execution statistics instead
Statements are only monitored once if they dont show significant differences
initially they wont change in the future
Only individual table cardinalities and group by estimates examined not joins
Information is stored in the cursor only and is lost if cursor ages out
36
Adaptive Statistics
New Re-optimization
Join statistics are also monitored
Works with adaptive cursor sharing for statement with binds
New Column in V$SQL IS_REOPTIMIZABLE
Information found at execution time is persisted as SQL Plan Directives
37
38
39
40
41
42
43
44
45
Wrap Up
Even More Automagical Stuff
Name Changes Can be Confusing
- statistics happy in naming
- Dynamic Sampling = Dynamic Statistics
- Statistics Feedback = Cardinality Feedback
Ideas are Sound
- learn from execution statistics
- eliminate must run bad first behavior
- add persistence
Its the Default so you will see it
46
Questions?
Contact Information
: Kerry Osborne
kerry.osborne@enkitec.com
kerryosborne.oracle-guy.com
www.enkitec.com
47