The Self-Managing Database: Guided Application and SQL Tuning Mohamed Ziauddin Consulting 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-Load SQL SQL Workload DBA How can I select high-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 plan 2.Examine query objects and their sizes 3.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 vendor 6.Produce test case for vendor 7.Get a patch with “ first rows ” hint from the vendor 8.Install the patch in next maintenance cycle Problem: Incorrect Optimizer Mode Selection
Intelligent Infrastructure Application & SQL Management System Resource Management Space Management Backup & Recovery Management Storage Management 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 DBA High-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 Recommendations SQL 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 Recommendations SQL 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 Recommendations SQL 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 ) create submit SQL Profiling Optimizer ( Normal Mode) output submit SQL Profile SQL Tuning Advisor Database Users 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 Recommendations SQL 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 Recommendations SQL 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
SQL Source: ADDM Finding
SQL Source: Top SQL
SQL Source: SQL Tuning Set
SQL Tuning Options
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
SQL Tuning Recommendations — Overview
SQL Tuning Recommendations — Details
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
Implement 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 plan 2.Examine query objects and their sizes 3.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 vendor 6.Produce test case for vendor 7.Get a patch with “ first rows ” hint from the vendor 8.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 SessionsCampground Demos
Reminder – Please complete the OracleWorld online session survey. This was Session # Thank you.
A Q & Q U E S T I O N S A N S W E R S