Adaptive Optimization - Kerry Osborne's Oracle Blog...

48
Adaptive Optimization Presented by: Kerry Osborne Red Gate Webinar, Nov. 2013

Transcript of Adaptive Optimization - Kerry Osborne's Oracle Blog...

Page 1: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

Adaptive Optimization Presented by: Kerry Osborne Red Gate Webinar, Nov. 2013

Page 2: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

3

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

Blog: kerryosborne.oracle-guy.com Twitter: @KerryOracleGuy

Hadoop Aficionado Exadata Fan Boy

Page 3: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

4

Top Secret Feature of BDA

Page 4: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

5

What I Did Last Week

Page 5: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

6

What’s the Point?

Sometimes the Optimizer Makes Mistakes It’s Often Pretty Easy to Spot the Mistakes Why Not Let the DB Fix the Mistakes on the Fly?

Page 6: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

7

How Does the Optimizer Mess Up?

Cardinality – Misunderestimate

mostly … and it’s pretty easy to recognize …

Estimated Rows ≠ Actual Rows

Page 7: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

8

Cardinality – Misunderestimate

Page 8: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

9

Cardinality – Misunderestimate

•  Wolfgang Breitling – Tuning By Cardinality Feedback •  Randolf Geist – xplan_extended_display_cursor.sql

•  Adrian Billington – Xplan Wrapper •  Kyle Halley – Display_Cursor Post

Page 9: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

10

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

Page 10: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

11

Page 11: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

12

Adaptive Query Optimization

Adaptive Plans

Join Methods

Parallel Distribution

Methods

At Compile

Time

At Run Time

Adaptive Statistics

Adaptive Optimization

Dynamic Sampling

Cardinality Feedback

Improve Initial Execution

Improve Subsequent Executions

Page 12: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

13

But First – Some New Terms

•  Adaptive Optimization – any dynamic change to plan

•  Adaptive Plans – changed from default on 1st execution •  Automatic Re-optimization – 2nd execution •  Statistics Feedback = Cardinality Feedback •  Dynamic Statistics = Dynamic Sampling •  SQL Plan Directives = Persisted Dynamic Sampling (for now)

SPD = PDS

Page 13: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

14

Adaptive Query Optimization

Adaptive Plans

Join Methods

Parallel Distribution

Methods

At Compile

Time

At Run Time

Adaptive Statistics

Adaptive Execution Plans Join Methods

Page 14: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

15

Adaptive Execution Plans Join Methods

•  Optimizer Can Change Its Mind in Mid-Execution

•  2 Join Methods •  Nested Loop •  Hash Join

Page 15: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

16

Adaptive Optimization Controls

optimizer_adaptive_features = false - big switch - controls all adaptive stuff

optimizer_features_enable <= 12.1.0.1 - even bigger switch – please don’t 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

Page 16: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

17

Adaptive Execution Plans

Table scan

NESTED LOOPS

Index Scan

Statistics Collector

HASH JOIN Alternative sub-plans are pre-computed

Sub-plans stored in the cursor

Stats collector inserted before join

Rows buffered until final decision is made

Rows coming out via inner nested loop are buffered up to a point. If row count exceeds threshold then switch to hash join.

Table scan

Page 17: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

18

Adaptive Execution Plans

Final Plan is a hash join

Table scan

NESTED LOOPS

Index Scan

Statistics Collector

HASH JOIN

Statistics collector disabled after decision is made and becomes a pass through operation.

Number of rows seen in statistics collector exceeds threshold

Plan switches to hash join

Statistics collector disabled

Plan resolved on first execution & remains the same for subsequent executions

Table scan

Page 18: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

19

Adaptive Execution Plans Finding Them (is easy)

Page 19: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

20

Digression - OTHER_XML

Page 20: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

21

Digression - OTHER_XML

Page 21: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

Default – EXPLAIN PLAN + DBMS_XPLAN.DISPLAY

22

Adaptive Execution Plans Displaying Default & Final Plans

Default – Turn Off Feature - Standard DBMS_XPLAN.DISPLAY_CURSOR

Final - Standard DBMS_XPLAN.DISPLAY_CURSOR

Mixed - Use DBMS_XPLAN – with format “adaptive +report”

select * from table(dbms_xplan.display_cursor('&sql_id','&child_no','adaptive +report'));

Produces plan which shows steps which were abandoned in final plan. Abandoned steps are marked with a “-”

Page 22: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

23

Adaptive Execution Plans Displaying Default Plan

Page 23: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

24

Adaptive Execution Plans Displaying Final Plan

Page 24: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

25

Adaptive Execution Plans Displaying Adaptive Plans

Abandoned

Page 25: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

26

Adaptive Execution Plans Displaying Adaptive Plans (+report)

Page 26: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

27

Adaptive Execution Plans Displaying Adaptive Plans (+report)

Page 27: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

28

Adaptive Execution Plans SPM Interaction

Baselines Behave Pretty Much As You’d Expect

Adaptive Plans Can Be Captured (The Final Plan)

Once SQL Using Baseline – No Longer Marked Adaptive

If Capture Is On – Unaccepted Plans Flagged as Adaptive

• Note: Baselines Actually Store Plans Now – Not Just Hints •  But Only Used for Display Purposes

Page 28: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

29

Adaptive Execution Plans SPM Interaction

Page 29: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

30

Adaptive Query Optimization

Adaptive Plans

Join Methods

Parallel Distribution

Methods

At Compile

Time

At Run Time

Adaptive Statistics

Adaptive Execution Plans Parallel Distribution Methods

Page 30: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

31

Adaptive Distribution Methods   New adaptive distribution method HYBRID-HASH

  Statistic collectors inserted in front of PX process

  If actual number of rows less than threshold, switch from HASH to Broadcast

  Threshold number of total rows < 2x DOP

  Enabled by default

Page 31: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

32

Adaptive Distribution Methods   Distribution

method decision based on expected number of rows

  Cardinality based distribution skew is common

  Can result in very uneven distribution

p1

p2

p3

p4

p5

p6

p7

p8

Hybrid-Hash

Broadcast S

tatis

tics

Page 32: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

33

Adaptive Query Optimization

Adaptive Plans

Join Methods

Parallel Distribution

Methods

At Compile

Time

At Run Time

Adaptive Statistics

Adaptive Statistics Dynamic Statistics (Sampling)

Dynamic Sampling

Page 33: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

34

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

Page 34: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

35

Dynamic Statistics

  optimizer_dynamic_sampling now goes to 11

Page 35: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

36

Adaptive Query Optimization

Adaptive Plans

Join Methods

Parallel Distribution

Methods

At Compile

Time

At Run Time

Adaptive Statistics

Adaptive Statistics Dynamic Statistics (Sampling)

Cardinality Feedback

Page 36: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

37

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

Page 37: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

38

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 don’t show significant differences initially they won’t 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

Page 38: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

39

Adaptive Statistics New Re-optimization

  Join statistics are also monitored

  Works with adaptive cursor sharing for statements with binds

  New Column in V$SQL - IS_REOPTIMIZABLE

  Information found at execution time is persisted as SQL Plan Directives

Page 39: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

40

SQL Plan Directives

“SPD are objects generated automatically by Oracle. For example, if Oracle detects that the single table cardinality estimated made by the optimizer is different from the actual number of rows returned when accessing the table, it will automatically create a directive to perform dynamic statistics for the table. When any SQL statement referencing the table is compiled, the optimizer will perform dynamic statistics for the table to get a more accurate estimate.”

~ PL/SQL Packages Reference (12c Release 1)

SPD = PDS (Persisted Dynamic Sampling)

Page 40: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

41

SQL Plan Directives

Page 41: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

42

SQL Plan Directives

Page 42: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

43

SQL Plan Directives

Page 43: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

44

SQL Plan Directives

Page 44: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

45

SQL Plan Directives States

NEW - 1st pass

MISSING_STATS - needs extended stats (gathered automagically)

HAS_STATS – extended stats have now been gathered (Intermediate State – new statements may still need SPD’s)

PERMANENT - extended stats have now been gathered (but SPD still needed because of != predicates)

Page 45: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

46

SQL Plan Directives Management

Managed with DBMS_SPD – but not really much to manage - can put them in a staging table and move them to another DB - can flush any in memory to disk (flushed every 15m by default) - can drop specific directives

Page 46: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

47

Well, How Did We Get Here?

The New Optimizer

Page 47: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

48

Wrap Up

Even More Automagical Stuff

Name Changes Can be Confusing - “statistics” happy in naming - Dynamic Sampling = Dynamic Statistics - Cardinality Feedback = Statistics Feedback

Ideas are Sound - learn from execution statistics - eliminate “must run bad first” behavior - add persistence

It’s the Default – so you will see it!

Page 48: Adaptive Optimization - Kerry Osborne's Oracle Blog ...kerryosborne.oracle-guy.com/papers/12c_Adaptive_OptimizationV2.pdf · • Adaptive Optimization ... Statistics gathered about

49

Questions? Contact Information : Kerry Osborne

[email protected] kerryosborne.oracle-guy.com

www.enkitec.com