热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle19C优化器统计顾问程序概念

ORACLE19CSQL调优指南优


Optimizer Statistics Advisor使用与自动数据库诊断监视器(ADDM),SQL Performance Analyzer和其他顾问相同的顾问框架。


1 Optimizer Statistics Advisor的组件

Optimizer Statistics Optimizer框架将其元数据存储在数据字典和动态性能视图中。

以下维恩图显示了Optimizer Statistics Advisor的规则,发现,建议和操作之间的关系。例如,所有发现都源自规则,但并非所有规则都会生成发现。

图18-2 Optimizer Statistics Advisor组件



1.1 Optimizer Statistics Advisor的规则

一个优化程序统计顾问规则是Oracle提供的标准,通过该优化程序统计顾问执行其检查。

这些规则体现了基于当前功能集的Oracle最佳实践。如果最佳实践因发行版本而异,则Optimizer Statistics Advisor规则也会更改。

顾问程序将规则分为以下几类:

  • 系统

    此类检查统计信息收集的首选项,自动统计信息收集作业的状态,SQL计划指令的使用等。在这一类规则具有价值SYSTEMV$STATS_ADVISOR_RULES.RULE_TYPE

  • 运作方式

    此类检查统计信息收集是否使用默认值,是否使用过程创建测试统计信息,等等。在这一类规则具有价值 SET_*_STATSOPERATIONV$STATS_ADVISOR_RULES.RULE_TYPE

  • 目的

    此类检查统计信息的质量,统计信息的陈旧性,不必要的统计信息收集等。在这一类规则具有价值OBJECTV$STATS_ADVISOR_RULES.RULE_TYPE

规则检查以下问题:

  • 如何收集统计数据

    例如,一条规则可能会为初始化参数指定建议的设置。另一个规则可能指定应在架构级别收集统计信息。

  • 何时收集统计数据

    例如,顾问可能建议应该启用自动统计信息收集工作的维护窗口,或者应该扩展该窗口。

  • 如何提高统计收集效率

    例如,一条规则可能指定应在中使用默认参数DBMS_STATS,或者不应手动设置统计信息。

在中V$STATS_ADVISOR_RULES,每个规则都有一个唯一的字符串ID,可在DBMS_STATS过程和报告中使用。您可以使用规则过滤器来指定Optimizer Statistics Advisor应检查的规则。但是,您不能编写新规则。

示例18-1 V $ STATS_ADVISOR_RULES中的上市规则

以下查询以及示例输出列出了中规则的子集V$STATS_ADVISOR_RULES发行版本之间的规则可能会有所不同。

SET LINESIZE 208
SET PAGESIZE 100
COL ID FORMAT 99
COL NAME FORMAT a33
COL DESCRIPTION FORMAT a62

SELECT RULE_ID AS ID, NAME, RULE_TYPE, DESCRIPTION
FROM V$STATS_ADVISOR_RULES
WHERE RULE_ID BETWEEN 1 AND 12
ORDER BY RULE_ID;

ID NAME RULE_TYPE DESCRIPTION
-- ------------------------------- --------- -------------------------------------------------------
1 UseAutoJob SYSTEM Use Auto Job for Statistics Collection
2 CompleteAutoJob SYSTEM Auto Statistics Gather Job should complete successfully
3 MaintainStatsHistory SYSTEM Maintain Statistics History
4 UseConcurrent SYSTEM Use Concurrent preference for Statistics Collection
5 UseDefaultPreference SYSTEM Use Default Preference for Stats Collection
6 TurnOnSQLPlanDirective SYSTEM SQL Plan Directives should not be disabled
7 AvoidSetProcedures OPERATION Avoid Set Statistics Procedures
8 UseDefaultParams OPERATION Use Default Parameters in Statistics Collection Proc.
9 UseGatherSchemaStats OPERATION Use gather_schema_stats procedure
10 AvoidInefficientStatsOprSeq OPERATION Avoid inefficient statistics operation sequences
11 AvoidUnnecessaryStatsCollection OBJECT Avoid unnecessary statistics collection
12 AvoidStaleStats OBJECT Avoid objects with stale or no statistics

12 rows selected.

也可以看看:

Oracle数据库参考以了解更多信息V$STATS_ADVISOR_RULES

 


 1.2 Optimizer Statistics Advisor的发现

当Optimizer Statistics Advisor检查数据库中存储的证据并得出未遵循规则的结论时,将得出一个发现。

为了生成结果,Optimizer Statistics Advisor执行一个任务,该任务可以自动或手动调用。此任务分析存储在数据字典中的统计信息历史记录,统计信息操作日志以及中存在的当前统计信息足迹SYSAUX例如,顾问查询DBA_TAB_STATISTICSDBA_IND_STATISTICS确定统计信息是否过时,或行数之间是否存在差异。

通常,尽管某些发现(例如对象陈旧性)仅提供信息,但是当未遵循或违反特定规则时,Optimizer Statistics Advisor会生成发现。例如,发现可能显示DBMS_STATS.GATHER_TABLE_STATS已使用ESTIMATE_PERCENT=>0.01,这违反了ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE规则。

一个发现恰好对应一个规则。但是,规则可以产生许多发现。

 

 
1.3针对Optimizer Statistics Advisor的建议

根据每个发现,Optimizer Statistics Advisor会提供有关如何获得更好统计信息的建议。

例如,顾问可能会发现违反了在收集统计信息时不使用采样的规则,并建议AUTO_SAMPLE_SIZE改为指定顾问将建议存储在中DBA_ADVISOR_RECOMMENDATIONS

单个建议可能存在多个建议。在这种情况下,您必须进行调查以确定要遵循的建议。每个建议都包含一个或多个理由,这些理由可以解释为什么Optimizer Statistics Advisor提出建议。在某些情况下,调查结果可能不会产生建议。

 


 1.4 Optimizer Statistics Advisor的操作

Optimizer Statistics Advisor操作是实现建议的SQL或PL / SQL脚本。可行时,建议会采取相应的措施。顾问将操作存储在中DBA_ADVISOR_ACTIONS

例如,Optimizer Statistics Advisor执行一个任务,该任务执行以下步骤:

  1. 检查规则

    顾问检查是否应避免使用过时的统计信息的规则。

  2. 产生发现

    顾问程序发现许多对象没有统计信息。

  3. 产生推荐

    顾问建议收集没有统计信息的对象的统计信息。

  4. 产生动作

    该顾问程序将生成一个执行的PL / SQL脚本,该脚本DBMS_STATS.GATHER_DATABASE_STATS提供需要收集统计信息的对象列表。




2.1 Optimizer Statistics Advisor的操作模式

Optimizer Statistics Advisor支持自动和手动模式。

  • 自动化的

    预定义的任务AUTO_STATS_ADVISOR_TASK每天自动在维护窗口中运行一次。该任务作为自动优化器统计信息收集客户端的一部分运行。自动化任务会生成结果和建议,但不会自动实施操作。

    对于任何其他任务,您可以配置自动化任务并生成报告。如果报告建议采取措施,则可以手动实施措施。

  • 手册

    您可以使用DBMS_STATS.CREATE_ADVISOR_TASK函数创建自己的任务,然后随时使用该EXECUTE_ADVISOR_TASK过程运行它

    与自动任务不同,手动任务可以自动执行操作。或者,您可以配置任务以生成PL / SQL脚本,然后可以手动运行该脚本。


推荐阅读
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了在Oracle数据库中,动态SQL语句的执行及其对事务管理的影响,特别是关于回滚操作的有效性。重点讨论了一个具体场景:将预警短信从当前表迁移到历史表时遇到的字段长度不匹配问题及相应的异常处理。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 甲骨文携手印度Airtel拓展云服务市场
    美国云服务巨头甲骨文宣布与印度电信集团Bharti Airtel的数据中心部门Nxtra合作,旨在加速其在印度市场的业务扩展。此举将显著提升甲骨文在这一快速增长市场中的客户覆盖面和技术支持能力。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • 本文详细介绍了 Oracle 数据库中 TRUNC 函数的两种用法:日期截断和数值截断。TRUNC 函数用于根据指定格式或精度对日期和数值进行截断处理,而不会进行四舍五入。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
author-avatar
juxiu小妹_895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有