+ All Categories
Home > Documents > Simplified SQL Performance Management in Oracle Database 11g Pete Belknap.

Simplified SQL Performance Management in Oracle Database 11g Pete Belknap.

Date post: 31-Dec-2015
Category:
Upload: winifred-shaw
View: 227 times
Download: 1 times
Share this document with a friend
64
Transcript

<Insert Picture Here>

Simplified SQL Performance Management in

Oracle Database 11g Pete Belknap

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions.The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Agenda

• SQL Tuning Challenges• Oracle Database 11g Solutions

• Automatic SQL Tuning

1. Improvements to SQL Tuning Advisor

2. Fully automating SQL tuning• Real-time SQL Monitoring

1. Track high response-time SQL

2. Find the most expensive plan operation

• Q & A

SQL Tuning Challenges

• Oracle Database 10g introduced SQL advisors to simplify application and SQL tuning

• Remaining challenges• SQL Tuning still reactive• Painful to find and investigate long-running SQL

• Oracle Database 11g solutions• Automatic SQL Tuning• Real-time SQL Monitoring

<Insert Picture Here>

The Self-Managing Database

Automatic SQL Tuning

Challenges of Manual SQL Tuning

• Requires expertise in several domains• SQL optimization: adjust the execution plan• Access design: provide fast data access• SQL design: use appropriate SQL constructs

• Time consuming• Plans are complicated• Each SQL statement is unique and each execution can be different• Potentially large number of statements to tune• Testing proposed changes is labor-intensive• Many possible ways to a solution

• Never ending task• SQL workload always evolving• Plan regressions

Simplifying SQL TuningSQL Tuning Advisor, since Oracle Database 10g

Add Missing Indexes

Modify SQL Constructs

Create a SQL Profile

Automatic Tuning Optimizer

SQL Structure Analysis

Access Path Analysis

SQL Profiling

Statistics Analysis

Gather Missing or Stale Statistics

DBA

SQL Tuning

RecommendationsSQL Tuning

Advisor

SQL Profiling Technology Transparent SQL tuning

SQL Profile

No SQL Profile SQL Profiling Use SQL Profile(future executions)

?

? ?

?

add

use

Plan 1 Plan 2

Plan 3

?

? ?

?

Plan 3

Plan 2Plan 1

Search Space

?

? ?

?

Plan 3

Plan 2Plan 1

Search Space

• Validates estimates using dynamic sampling and partial execution• Validates only relevant estimates

SQL Profiling Technology (2) Trying alternative plans (new in 11g)

CorrectionFactors

Corrections +O_F_E 10.2.0.3

Corrections +O_F_E 10.1.0.4

Corrections +O_F_E 8.1.7

EstimateCorrection

AlternativePlan

Analysis

Alternate Plan Set

•Try some interesting alternatives: plans from old releases

•Feed correction factors into alternative plan selection

•But which is the best?

Profile Selection

(1)

(2)

(3)

Testing SQL Profiles (1)Measuring actual benefit with test-execution (new in 11g)

P1

Naïve: Execute in Order

Finish, P2 wins!P2

But what if P1 never completes?

Timeout!P1

But then I take 2 CPUs, and N in the general case…

It would be great to run them concurrently….

P1

P2 P2 wins, kill P1!

Testing SQL Profiles (2)Measuring actual benefit with test-execution

Solution: Tournament Execution

P1P2Round 1:

15 sec 15 sec

P1P2Round 2:

30 sec 16 sec

Your winner, with a knockout in the second round, P2!

Testing SQL Profiles (3)Choosing appropriate metrics, comparison strategy

• “Winner” and “Loser” depends on your point of view• Need a statistic that is repeatable and comprehensive.• ELAPSED_TIME: comprehensive, but includes row lock waits;

I/O time depends on buffer cache state. Not repeatable.• CPU_TIME: very repeatable, but not comprehensive for I/O.• BUFFER_GETS: very repeatable, but ignores CPU expense;

overly pessimistic for some plans

• Combine the best elements of each• CPU_TIME should improve (most reliable statistic)• Benefit Reported: ratio of CPU_TIME + BUFFER_GETS*10ms

Conservatively consider every buffer get to be an I/O, but allow large CPU improvements to overrule small buffer gets regressions

Improvements in Oracle Database 11gBetter SQL Profiling

Add Missing Indexes

Modify SQL Constructs

Create a SQLProfile– show verified

benefit

Automatic Tuning Optimizer

SQL Structure Analysis

Access Path Analysis

SQL Profiling

Statistics Analysis

Gather Missing or Stale Statistics

DBA

SQL Tuning

RecommendationsSQL Tuning

Advisor

• Fix potential regression

after upgrade• Verify benefit through

test-execution

Agenda

• SQL Tuning Challenges• Oracle Database 11g Solutions

• Automatic SQL Tuning

1. Improvements to SQL Tuning Advisor

2. Fully automating SQL tuning• Real-time SQL Monitoring

1. Track high response-time SQL

2. Find the most expensive plan operation

• Q & A

SQL Tuning in Oracle Database 10gEnd-to-end Workflow

Workload

SQL Tuning Candidates

SQL Tuning Advisor

ADDM

AWR

one hour

Generate

Recommendations

DBA

Invoke Advisor

Implement

DBA

A good end-to-end solution, but manual intervention is required

Evaluate

Recommendations

DBA

Improvements in Oracle Database 11gFully-Automated Tuning Workflow

It’s Automatic!

Choose Candidate

SQLone

week

Workload

SQL Tuning Candidates

Test SQL ProfilesImplement

SQL Profiles

Generate

Recommendations

AWRDBA

View Reports / Control Process

Picking Candidate SQL (1)

S4, 1 minute

Week’s Top SQL,Ordered by DB

TimeS3, 5 minutes

S2, 8 minutes

S1, 10 minutes

I could just pick from the top down…

AWR

AWR

Average ExecHourlyDailyWeekly

Let’s try a more balanced approach:

OK, but where do I start?

But I will miss SQLs with important hotspots!

Picking Candidate SQL (2)

AWR

Average ExecHourly

Eventually we need one list to tune from: merge the buckets.

All buckets are not created equal: focus on the week,but don’t forget about the others.

Focus on the SQLs we have not seen recently:Don’t re-tune SQLs if nothing has changed!

Candidate List

DailyWeekly

65%20% 10%

5%

Tuning FlowTuning activities per SQL

Candidate SQLs

Evaluate Profile

– Tournament competition

Tune SQL

– Fix potential regressions

– Look for indexes, statistics,as with standard tuning

– Fetch next SQL– Store reporting data

Accept Profile

– Require 3X benefit

– Both CPU and I/O times must improve

– If < 3X benefit, recommend for DBA consideration

Focus on SQL Profiles First step in automating SQL tuning

Auto-testing/implementing is limited to profiles because:• No lengthy, expensive set-up process

(building an index takes time)• Private to the current compilation• No change to user SQL (does not change semantics)• SQL-level recommendation, can be effectively tested• Easily reversed by the DBA

Testing is done for regular SQL Tuning Advisor tasks as well!

Automatic SQL Tuning DefaultsSensible defaults with flexible configurations

• Out-of-the-box defaults:• Runs in each maintenance window

(MAINTENANCE_WINDOW_GROUP)• SQL profiles are tested but not implemented

• DBA can configure using EM:• Whether / When / How long it runs• Resources it uses• Whether it implements profiles• How many profiles it implements

Automatic SQL Tuning Task

Automatic SQL Tuning Configuration

Automatic SQL Tuning Result Summary

Automatic SQL Tuning Result Recommendations

Automatically Tuned SQL Details Drilldown

Conclusions

• Manual SQL tuning is painful even for the experts

• Oracle 10g SQL Tuning Advisor quickly gives DBA good choices

• Oracle 11g Automatic SQL Tuning automates the process by making the easy decisions

• DBA can control as much of the process as he wants

AQ&

<Insert Picture Here>

Shining new light on SQL Performance

Real-Time SQL Monitoring

Problem:Managing High Response-Time SQLs

• Monitoring: tracking high response-time SQL• What is that expensive SQL (ETL, DDL, batch, report, …) I started up to?

• Do I have any high response-time SQL running on my OLTP system?• Any SQL executing parallel?

• Investigating: why is this execution so expensive? • Plan has hundreds of operations -- where is the time being spent?• Why is a particular operation so expensive? • SQL runs parallel, is DOP appropriate? is there a skew?

What is going on inside a SQL execution???

SingleSQL

Execution

• Enabled out-of-the-box with no performance impact• Automatically monitors SQL executions that:

• consume more than 5 seconds of CPU or I/O time• are running parallel: PQ, PDML, PDDL

• Monitors each execution independently• Exposes monitoring statistics at

multiple levels• Global execution level• Plan operation level (Plan Tuning)• Parallel Execution level (PX Tuning)

• Guides your tuning efforts

Solution: Real-time SQL MonitoringLooking inside the SQL

SingleSQL

Execution

How does it work?

• Update execution statistics in PGA continuously• After 5 seconds for serial / immediately for parallel,

target for monitoring (reserve SGA space)• Push statistics to SGA every second• Separate entries for each Parallel Execution Server• Each execution of each SQL identifiable in ASH via execution key• PX Servers share an execution key, but have a different Session ID• Statistics available for at least 5 minutes• Not vulnerable to cursor age-outs

t = 5 t = 6 t = 7

PGA SGA

New Statistics Exposed

• For each SQL Execution (V$SQL_MONITOR):• Resource Consumption: ELAPSED_TIME, CPU_TIME, FETCHES,

BUFFER_GETS, DISK_READS, DIRECT_WRITES, APPLICATION/CONCURRENCY/CLUSTER/USER_IO_WAIT_TIME, PLSQL/JAVA_EXEC_TIME

• For each Plan Operation (V$SQL_PLAN_MONITOR):• Production: STARTS (#executions), OUTPUT_ROWS

• Memory/Temp usage: WORKAREA_MEM, WORKAREA_TEMPSEG

• For each second of session activity (V$ACTIVE_SESSION_HISTORY):• SQL Execution Key: SQL_ID, SQL_EXEC_START, SQL_EXEC_ID

• Row source information: SQL_PLAN_LINE_ID/OPERATION/OPTIONS

V$ AdditionsNew V$ Views added; existing views supplemented

V$SQL_MONITOR(SQL_ID, SQL_EXEC_START,

SQL_EXEC_ID)

V$SQL_PLAN_MONITOR(SQL_ID, SQL_EXEC_START,

SQL_EXEC_ID, PLAN_LINE_ID)

V$SQL_PLAN(SQL_ID, CHILD_NUMBER, PLAN_HASH_VALUE, ID)

V$SESSION(SID, SERIAL#)

With Execution Key

V$ACTIVE_SESSION_HISTORY(SAMPLE_TIME, SESSION_ID,

SESSION_SERIAL#)With Execution Key, Plan Line ID/Operation

DBA_HIST_ACTIVE_SESS_HISTORY(DBID, SNAP_ID, INSTANCE_NUMBER,

SAMPLE_TIME, SESSION_ID, SESSION_SERIAL#)

V$SESSION_LONGOPS(SID, SERIAL#, OPNAME)

With Execution Key, Plan Line ID/Operation

How do I use it?

• 11g Enterprise Manager Grid Control (11.1.0.7 DB Control)

• Additional reporting (available today): DBMS_SQLTUNE.REPORT_SQL_MONITOR• Get reports in HTML, XML, or Text

Enterprise Manager Flow (1)

Top Activity

SQL Details

Session Details

Monitoring Details

Enterprise Manager Flow (2)

Monitoring List Monitoring Details

SQL Monitoring List

SQL Monitoring DetailsCore concepts

SQL Monitoring DetailsCore concepts

SQL Monitoring DetailsCore concepts

SQL Monitoring DetailsCore concepts

SQL Monitoring Details (Parallelism)Core concepts

SQL Monitoring Details (Parallelism)Core concepts

SQL Monitoring Details (Parallelism)Core concepts

SQL Monitoring DetailsBig Plans

SQL Monitoring DetailsBig Plans

SQL Monitoring DetailsBig Plans

SQL Monitoring DetailsBig Plans

SQL Monitoring DetailsBig Plans

SQL Monitoring DetailsPoor Indexing

SQL Monitoring DetailsPartially Parallelized

SQL Monitoring DetailsPartially Parallelized

SQL Monitoring DetailsPartially Parallelized

SQL Monitoring DetailsFORCE PARALLEL QUERY PARALLEL 4

SQL Monitoring DetailsFORCE PARALLEL QUERY PARALLEL 4

SQL Monitoring DetailsAdvanced PQ Skews

SQL Monitoring DetailsAdvanced PQ Skews

SQL Monitoring DetailsAdvanced PQ Skews

SQL Monitoring DetailsAdvanced PQ Skews

Conclusion

• Real-Time SQL Monitoring is• Monitoring and tuning for high response-time SQLs• New, fine-grained SQL statistics

• tracked automatically• updated while the SQL runs• highly visible and accessible• at no cost to your production system

• The only way to know what’s happening inside single SQL execution

• The quickest way to the root cause of a performance problem: If you can find the problem, you can fix it!

AQ&


Recommended