博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL自动调优
阅读量:5743 次
发布时间:2019-06-18

本文共 5779 字,大约阅读时间需要 19 分钟。

   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
 ,如需转载请自行联系原作者
你可能感兴趣的文章
基础005_V7-Select IO
查看>>
素数+map BestCoder Round #54 (div.2) 1002 The Factor
查看>>
P1772 [ZJOI2006]物流运输
查看>>
Release和Debug的区别[转]
查看>>
oracle11g 数据库导出报“ EXP-00003:
查看>>
机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器...
查看>>
BZOJ1721 Ski Lift 缆车支柱
查看>>
发现一个开源项目-Altairis Simple ASP.NET SQL Providers
查看>>
关于Socket通讯时通讯协议的制定
查看>>
HDU-1150-MachineSchedule(二分图匹配)
查看>>
PHP session 跨子域问题总结
查看>>
C#中的抽象方法,虚方法,接口之间的对比
查看>>
计算机视觉入门 Intorduction To Computer Vision
查看>>
[LeetCode] Implement Trie (Prefix Tree)
查看>>
SharedPreferences
查看>>
HDR和bloom效果的区别和关系
查看>>
死锁概念以及预防解决方法简介 多线程上篇(八)
查看>>
oracle 新增字段
查看>>
JavaScript的原型模式
查看>>
Android自动化测试工具
查看>>