the self-managing database: guided application and sql tuning mohamed ziauddin consulting member of...
TRANSCRIPT
The Self-Managing Database:Guided Application and SQL Tuning
Mohamed ZiauddinConsulting Member of Technical Staff
Oracle Corporation
Session id: 40713
Agenda
SQL Tuning Challenges Automatic SQL Tuning Overview Usage Scenarios
– High load SQL tuning– Custom SQL workload tuning
User Interface– Enterprise Manager– DBMS_SQLTUNE PL/SQL package
Conclusion
Manual SQL Tuning Challenges
DBA
How can I
tune high-load
SQL?
High-LoadSQL
SQL
Workload
DBA
How can I
selecthigh-load
SQL?
Manual SQL Tuning Challenges
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– Each SQL statement is unique– Potentially large number of statements to tune
Never ending task– SQL workload always evolving– Plan regressions
An Example Tuning Scenario
Manual Tuning
1. Get explain plan2. Examine query objects and their sizes3. Review and compare explain plan statistics with
execution statistics (stored in V$SQL view)4. Identify that it is a “first rows” issue because
only recent data is ever displayed despite large history being queried
5. Contact application vendor6. Produce test case for vendor7. Get a patch with “first rows” hint from the
vendor8. Install the patch in next maintenance cycle
Problem: Incorrect Optimizer Mode Selection
Intelligent Infrastructure
Application & SQLManagement
System ResourceManagement
SpaceManagement
Backup & RecoveryManagement
StorageManagement
Database Control
Database Management
Oracle 10g – SQL Tuning Solution
Oracle 10g Automates the SQL Tuning Process
I can do it for you !
SQL Tuning Advisor
DBAHigh-Load
SQL
ADDM
SQL
Workload
Agenda
SQL Tuning Challenges Automatic SQL Tuning Overview Usage Scenarios
– High load SQL tuning– Custom SQL workload tuning
User Interface– Enterprise Manager– DBMS_SQLTUNE PL/SQL package
Conclusion
Automatic SQL Tuning Overview
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
Automatic Tuning Optimizer (ATO)
It is the query optimizer running in tuning mode– Uses same plan generation process but performs
additional steps that require lot more time
It performs verification steps– To validate statistics and its own estimates
Uses dynamic sampling and partial executions to validate
It performs exploratory steps– To investigate the use of new indexes that could
provide significant speed-up– To analyze SQL constructs that led to expensive
plan operators
Statistics Analysis
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
Statistics Analysis
Motivation– Statistics are key input to the query optimizer
Their availability and accuracy is very important
In Oracle10g, the Automatic statistics collection maintains statistics up to date…
– But it may not be enabled or properly configured!
The ATO verifies statistics that it needs/uses– Generates auxiliary information to compensate for
missing or stale statistics– Generates recommendations to gather statistics
where appropriate
SQL Profiling
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
Motivation– Empower the query optimizer to find a better plan
The query optimizer has time constraints– Makes compromises while finding right plan
The ATO is allowed a lot more time– Uses the time to gather customized information
about the SQL statement, known as SQL Profile– Builds a SQL Profile and recommends it– Once implemented, SQL Profile is used by the
query optimizer to generate a well-tuned plan
SQL Profiling Flow
Optimizer(Tuning Mode)
createsubmit
SQL Profiling
Optimizer(Normal Mode)
outputsubmit
SQL Profile
SQL TuningAdvisor
DatabaseUsers
Well-Tuned
Plan
After …
use
SQL Profile It contains auxiliary information collected by the
ATO for a SQL statement– Customized optimizer settings
Based on past execution history (e.g., first_rows vs. all_rows)
– Compensation for missing or stale statistics– Compensation for errors in optimizer estimates
Estimation errors occur due to data skews and correlations, complex filters and joins
It doesn’t require any change to the SQL text– Ideal for Packaged Apps
It is persistent– Works across shutdowns and upgrades
Access Path Analysis
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
Access Path Analysis
Motivation– Adding an index may significantly improve the
performance of a SQL statement
Problem: A critical access path is missing– Index not created or mistakenly dropped
ATO explores the use of new indexes– Recommends an index if it provides a major
performance boost– Also recommends to run SQL Access Advisor to get
comprehensive index analysis based on a workload SQL Access Advisor also uses this analysis mode
SQL Structure Analysis
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 Structure Analysis Motivation
– Help application developers identify poorly written SQL statements
– Suggest restructuring of SQL for efficiency
Problem categories– Semantic changes of SQL operators (e.g., use
UNION ALL instead of UNION) Subject to user acceptance of new result
– Syntactic changes to predicates on indexed columns (e.g., remove type mismatch in column = :bind)
– Design issues (e.g., add missing join predicate to eliminate a large Cartesian join)
Agenda
SQL Tuning Challenges Automatic SQL Tuning Overview Usage Scenarios
– High load SQL tuning– Custom SQL workload tuning
User Interface– Enterprise Manager– DBMS_SQLTUNE PL/SQL package
Conclusion
SQL Tuning Usage Scenarios
SQL Tuning Advisor
ADDM High-load SQL
Cursor Cache
AWR
SQL Tuning Set(STS)
User-defined
Filter / Rank
SQL Sources Manual Selection
Automatic Selection
AWR
SQL Tuning Set (STS)
Motivation– Enable user to tune a custom set of SQL statements
It is a new object in Oracle10g for capturing SQL workload
It stores SQL statements along with..– Execution context: parsing user, bind values, etc.– Execution statistics: buffer gets, CPU time, elapse
time, number of executions, etc.
It is created from a SQL source– Sources: AWR, cursor cache, user-defined SQL
workload, another STS
SQL Tuning Set Benefits
Allows selective, on-demand, custom SQL workload tuning
It simplifies tuning of a large number of SQL statements
It is persistent Provides a common infrastructure for dealing
with SQL workloads– Can be used as a source for different tuning tasks
Agenda
SQL Tuning Challenges Automatic SQL Tuning Overview Usage Scenarios
– High load SQL tuning– Custom SQL workload tuning
User Interface– Enterprise Manager– DBMS_SQLTUNE PL/SQL package
Conclusion
Enterprise Manager Interface
Launch SQL Tuning Advisor from a SQL Source page
– ADDM Finding page, or– Top SQL page, or– SQL Tuning Set (STS) page
View SQL Tuning Recommendations Implement SQL Tuning Recommendations
Enterprise Manager Interface
Launch SQL Tuning Advisor from a SQL Source page
– ADDM Finding page, or– Top SQL page, or– SQL Tuning Set (STS) page
View SQL Tuning Recommendations Implement SQL Tuning Recommendations
Enterprise Manager Interface
Launch SQL Tuning Advisor from a SQL Source page
– ADDM Finding page, or– Top SQL page, or– SQL Tuning Set (STS) page
View SQL Tuning Recommendations Implement SQL Tuning Recommendations
Agenda
SQL Tuning Challenges Automatic SQL Tuning Overview Usage Scenarios
– High load SQL tuning– Custom SQL workload tuning
User Interface– Enterprise Manager– DBMS_SQLTUNE PL/SQL package
Conclusion
DBMS_SQLTUNE PL/SQL Package
Contains API for SQL Tuning
– Create Tuning Task– Execute Tuning Task– Display Advisor
Recommendations– Drop Tuning Task
– Create STS– Populate STS– Query STS Contents– Drop STS
– Accept SQL Profile– Drop SQL Profile– Alter SQL Profile
Attribute
Tuning Task Management STS Management
SQL Profile Management
Conclusion
Manual Tuning
1. Get explain plan2. Examine query objects and their sizes3. Review and compare explain plan statistics
with execution statistics (stored in V$SQL view)
4. Identify that it is a “first rows” issue because only recent data is ever displayed despite large history being queried
5. Contact application vendor6. Produce test case for vendor7. Get a patch with “first rows” hint from the
vendor8. Install the patch in next maintenance cycle
Automatic Tuning
1. Run SQL Tuning Advisor
2. Implement SQL profile
Problem: Incorrect Optimizer Mode Selection
Recommended Sessions/Demos
Automatic SGA Memory Management (Tuesday, 5 PM, Room 103)
The Invisible Oracle: Deploying Oracle DB in Embedded Environments (Wednesday, 4:30 PM, Room 103
Automatic Health Monitoring (Thursday, 11:00 AM, Room 103
Proactive Performance Management
Automatic Memory Management
Proactive Space Management
Invisible Installation & Deployment
Automatic Storage Management
Easy Upgrade
Technical Sessions Campground Demos
Reminder –
Please complete the OracleWorld online session survey.
This was Session # 40173
Thank you.