Optimizer Statistics Advisor是内置的诊断软件,可以分析统计信息和与统计信息相关的任务的质量。
顾问程序任务会在维护窗口中自动运行,但是您也可以根据需要运行它。然后,您可以查看顾问报告。如果顾问提出了建议,那么在某些情况下,您可以运行系统生成的脚本来实施它们。
下图提供了Optimizer Statistics Advisor的概念概述。
18.1.1 Optimizer Statistics Advisor的目的
Optimizer Statistics Advisor检查如何收集优化器统计信息。
顾问程序将自动诊断现有实践中的问题以收集统计信息。该顾问并没有收集新的或另一套优化的统计数据。顾问程序的输出是结果和建议的报告,可帮助您遵循最佳实践来收集统计信息。
优化器统计信息在确定查询的执行计划中起着重要作用。因此,对于优化器而言,收集和维护准确且最新的统计数据至关重要。DBMS_STATS为此,优化器提供了从发行版到发行版不断发展的软件包。通常,用户会根据特定的工作负载制定自己的策略来收集统计信息,然后使用本地脚本来实施这些策略。
本节包含以下主题:
- 传统基于脚本的方法存在的问题脚本方法
的优点是通常会测试和检查脚本。但是,次优遗留脚本的所有者可能不会更改它们,以免引起计划变更。 - Optimizer Statistics Advisor
的优点基于顾问的方法比传统方法具有更好的可伸缩性和可维护性。
1. 传统的基于脚本的方法存在的问题
脚本化方法的优势在于,通常会对脚本进行测试和审查。但是,次优遗留脚本的所有者可能不会更改它们,以免引起计划变更。
传统方法存在以下问题:
- 旧版脚本可能无法跟上新的最佳实践,而新的最佳实践可能会因发行版本而异。
通常,后续版本会增加直方图,采样,工作负载监视,并发和其他与优化程序相关的功能。例如,从Oracle Database 12c开始,Oracle建议设置
AUTO_SAMPLE_SIZE而不是百分比。但是,传统脚本通常会指定采样百分比,这可能会导致执行计划不理想。 - 资源浪费在不必要的统计信息收集上。
脚本每天可能在同一张表上多次收集统计信息。
- 自动统计信息收集作业不能保证准确和最新的统计信息。
例如,有时自动统计信息收集作业未运行,因为初始化参数组合将其禁用,或者该作业被终止。此外,有时由于资源限制或由于需要收集统计信息的对象太多,自动作业维护窗口不足。在收集所有统计信息之前停止运行的作业不会对某些对象产生任何统计信息或过时的统计信息,从而可能导致计划不理想。
- 统计信息有时可能会丢失,陈旧或不正确。
例如,表与其索引之间或具有主键-外键关系的表之间的统计信息可能不一致。另外,统计信息收集作业可能是由于偶然而被禁用的,或者您可能不知道脚本已失败。
- 缺少有关问题的知识可能会很耗时且需要大量资源。
例如,服务请求可能会寻求解决问题的方法,而不会意识到问题是由次优统计信息引起的。诊断可能需要大量时间通过电子邮件发送问题查询的脚本,启用跟踪并调查跟踪。
- 建议的修复程序可能不可行。
性能工程师可能会建议更改维护统计信息的应用程序代码。在某些组织中,可能很难或不可能满足此要求。
2. Optimizer Statistics Advisor的优点
基于顾问的方法比传统方法具有更好的可伸缩性和可维护性。
如果最佳实践在新版本中发生了变化,则Optimizer Statistics Advisor会将这些实践编码在其规则中。这样,顾问程序始终提供最新建议。
该顾问会分析您当前如何收集统计信息(使用手动脚本,显式设置参数等),现有统计信息收集作业的有效性以及所收集统计信息的质量。优化程序统计顾问并没有收集新的或另一套优化的统计,所以不影响工作量。而是,Optimizer Statistics Advisor分析存储在数据字典中的信息,然后将结果和建议存储在数据库中。
与传统方法相比,Optimizer Statistics Advisor具有以下优点:
- 提供易于理解的报告
顾问应用规则来生成结果,建议和操作。
- 提供脚本以实施必要的修复程序,而无需更改应用程序代码
当您执行建议的操作时,改进语句的每次执行都会带来好处。例如,如果您设置全局首选项以使样本数量
AUTO_SAMPLE_SIZE而不是次优百分比,则基于改进统计信息的每个计划都可以从此更改中受益。 AUTO_STATS_ADVISOR_TASK每天运行一次在维护窗口中 命名的预定义任务为了运行自动化作业,
STATISTICS_LEVEL必须将初始化参数设置为TYPICAL或ALL。DBMS_STATS软件包中提供了一个API ,使您可以手动创建和运行任务,将发现和建议存储在数据字典视图中,为任务生成报告以及在必要时实施更正- 与现有工具集成
该顾问程序与SQL Tuning Advisor和AWR集成在一起,它们汇总了Optimizer Statistics Advisor结果。




