SQL自动调优

简介:

   SQL自动调优,是oracle 自带的调优工具,可以提出一些解决方案。

本次我主要介绍下面这些自动SQL调优工具:

  • 自动SQL调优(automatic sql tuning)

  • SQL调优工具集(SQL tuning sets,STS)

  • SQL调优顾问(SQL Tuning Advisor)

  • 自动数据库诊断监视器(addm)

显示SQL自动调优建议最快的方法:

SQL> select dbms_auto_sqltune.report_auto_tuning_task from dual;

GENERAL INFORMATION SECTION

-------------------------------------------------------------------------------

Tuning Task Name                        : SYS_AUTO_SQL_TUNING_TASK

Tuning Task Owner                       : SYS

Workload Type                           : Automatic High-Load SQL Workload

Execution Count                         : 2

Current Execution                       : EXEC_41

Execution Type                          : TUNE SQL

Scope                                   : COMPREHENSIVE

Global Time Limit(seconds)              : 3600

Per-SQL Time Limit(seconds)             : 1200

Completion Status                       : COMPLETED

Started at                              : 09/13/2015 23:19:10

Completed at                            : 09/13/2015 23:20:50

Number of Candidate SQLs                : 2

Cumulative Elapsed Time of SQL (s)      : 56


-------------------------------------------------------------------------------

SUMMARY SECTION

-------------------------------------------------------------------------------

                      Global SQL Tuning Result Statistics

-------------------------------------------------------------------------------

Number of SQLs Analyzed                      : 2

Number of SQLs in the Report                 : 2

Number of SQLs with Findings                 : 2

Number of SQLs with Statistic Findings       : 2

Number of SQLs with Alternative Plan Findings: 1

Number of SQLs with SQL profiles recommended : 2


-------------------------------------------------------------------------------

    SQLs with Findings Ordered by Maximum (Profile/Index) Benefit, Object ID

-------------------------------------------------------------------------------

object ID  SQL ID        statistics profile(benefit) index(benefit) restructure

---------- ------------- ---------- ---------------- -------------- -----------

         3 5jvf84zg4c49n          2           94.73%

         4 fa16465c7pqmd          1           93.52%


-------------------------------------------------------------------------------

    Objects with Missing/Stale Statistics (ordered by schema, object, type)

-------------------------------------------------------------------------------

Schema Name                  Object Name                  Type  State   Cascade

---------------------------- ---------------------------- ----- ------- -------

                         SYS IND$                         TABLE STALE   NO

                             USER$                        TABLE STALE   NO


-------------------------------------------------------------------------------

DETAILS SECTION

-------------------------------------------------------------------------------

 Statements with Results Ordered by Maximum (Profile/Index) Benefit, Object ID

-------------------------------------------------------------------------------

Object ID  : 3

Schema Name: SYS

SQL ID     : 5jvf84zg4c49n

SQL Text   : select s.synonym_name as object_name, o.object_type

               from sys.all_synonyms s, sys.all_objects o

              where s.owner in ('PUBLIC', :schema)

                and o.owner = s.table_owner

                and o.object_name = s.table_name

                and o.object_type in ('TABLE', 'VIEW', 'PACKAGE','TYPE',

             'PROCEDURE', 'FUNCTION', 'SEQUENCE')


-------------------------------------------------------------------------------

FINDINGS SECTION (3 findings)

-------------------------------------------------------------------------------


1- Statistics Finding

---------------------

  Optimizer statistics for table "SYS"."IND$" and its indices are stale.


  Recommendation

  --------------

  - Consider collecting optimizer statistics for this table.

    execute dbms_stats.gather_table_stats(ownname => 'SYS', tabname =>

            'IND$', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,

            method_opt => 'FOR ALL COLUMNS SIZE AUTO');


  Rationale

  ---------

    The optimizer requires up-to-date statistics for the table in order to

    select a good execution plan.


2- Statistics Finding

---------------------

  Optimizer statistics for table "SYS"."USER$" and its indices are stale.


  Recommendation

  --------------

  - Consider collecting optimizer statistics for this table.

    execute dbms_stats.gather_table_stats(ownname => 'SYS', tabname =>

            'USER$', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,

            method_opt => 'FOR ALL COLUMNS SIZE AUTO');


  Rationale

  ---------

    The optimizer requires up-to-date statistics for the table in order to

    select a good execution plan.


3- SQL Profile Finding (see explain plans section below)

--------------------------------------------------------

  A potentially better execution plan was found for this statement.

  The SQL profile was not automatically created because its benefit could not

  be verified.


  Recommendation (estimated benefit: 94.73%)

  ------------------------------------------

  - Consider accepting the recommended SQL profile.

    execute dbms_sqltune.accept_sql_profile(task_name =>

            'SYS_AUTO_SQL_TUNING_TASK', object_id => 3, replace => TRUE);


-------------------------------------------------------------------------------

EXPLAIN PLANS SECTION

-------------------------------------------------------------------------------


1- Original With Adjusted Cost

------------------------------


-------------------------------------------------------------------------------

Error: cannot fetch explain plan for object: 3

-------------------------------------------------------------------------------


2- Original With Adjusted Cost

------------------------------

Plan hash value: 1687783800


--------------------------------------------------------------------------------

---------------------------------------------

| Id  | Operation                                      | Name               | Ro

ws  | Bytes |TempSpc| Cost (%CPU)| Time     |

--------------------------------------------------------------------------------

---------------------------------------------

|   0 | SELECT STATEMENT                               |                    |

  4 |   464 |       |  4999   (1)| 00:01:00 |

|*  1 |  TABLE ACCESS BY INDEX ROWID                   | SUM$               |

  1 |     6 |       |     0   (0)| 00:00:01 |

|*  2 |   INDEX UNIQUE SCAN                            | I_SUM$_1           |

  1 |       |       |     0   (0)| 00:00:01 |

|*  3 |  HASH JOIN                                     |                    |

  4 |   464 |       |  4999   (1)| 00:01:00 |

|   4 |   JOIN FILTER CREATE                           | :BF0000            |  3

















本文转自东方之子736651CTO博客,原文链接: http://blog.51cto.com/ecloud/1697137  ,如需转载请自行联系原作者


相关文章
|
SQL 数据库 开发者
MSSQL性能调优实战技巧:索引优化、SQL语句微调与并发控制策略
在Microsoft SQL Server(MSSQL)的管理与优化中,性能调优是一项复杂但至关重要的任务
|
4月前
|
SQL 运维 监控
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
|
3月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
3月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
SQL 监控 数据库
MSSQL性能调优实战策略:索引优化、SQL语句重构与并发控制
在Microsoft SQL Server(MSSQL)的管理和优化过程中,性能调优是确保数据库高效运行、满足业务需求的重要环节
|
SQL 运维 监控
MSSQL性能调优实战:索引优化、SQL查询效率提升与并发控制策略
在Microsoft SQL Server(MSSQL)的日常运维与性能优化中,精准的策略与技巧是实现高效数据库管理的关键
|
SQL 存储 数据库
MSSQL性能调优实战:索引优化、SQL语句精调与高效并发处理
在Microsoft SQL Server(MSSQL)的性能调优征途中,索引优化、SQL语句的精细调整以及高效并发处理是三大核心策略
|
SQL 监控 数据库
MSSQL性能调优实战技巧:索引优化策略、SQL查询重构与并发控制详解
在Microsoft SQL Server(MSSQL)的管理与优化过程中,性能调优是确保数据库高效运行的关键环节
|
SQL 监控 数据库
MSSQL性能调优实战指南:精准索引策略、SQL查询优化与高效并发控制
在Microsoft SQL Server(MSSQL)的性能调优过程中,精准索引策略、SQL查询优化以及高效并发控制是三大核心要素
|
10月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1224 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)