暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 手动收集优化器统计信息的准则

原创 Asher.HU 2021-02-04
1658


在大多数情况下,自动统计信息收集对于以中等速度修改的数据库对象就足够了。

如下表所示,有时自动收集可能不足或不可用。

表13-2手动收集统计信息的原因

问题了解更多
您执行某些类型的批量加载,并且不能等待维护窗口收集统计信息,因为必须立即执行查询。 批量装载的在线统计收集 
在非代表性工作负载期间,自动统计信息收集将收集固定表的统计信息。 收集固定对象的统计信息 
自动统计信息收集不会收集系统统计信息。 手动收集系统统计信息 
易失表将被删除或截断,然后在白天进行重建。 使用动态统计信息收集易失表的统计信息 


本节提供了一些典型情况的准则,您可以选择手动进行统计收集:

13.3.2.1设置样本大小的准则

在优化器统计信息的上下文中,采样是从表行的随机子集收集统计信息。通过使数据库避免对整个表进行扫描和对整个表进行排序,采样可以最大程度地减少收集统计信息所需的资源。

数据库在处理表中的所有行(这是100%的示例)时,会收集最准确的统计信息。但是,较大的样本量会增加统计信息收集操作的时间。面临的挑战是确定样本大小,以在合理的时间内提供准确的统计信息。

DBMS_STATS用户指定参数时使用采样,该参数ESTIMATE_PERCENT控制表中要采样的行的百分比。为了在获得必要的统计精度的同时最大程度地提高性能,Oracle建议该ESTIMATE_PERCENT参数使用默认设置DBMS_STATS.AUTO_SAMPLE_SIZE在这种情况下,Oracle数据库将自动选择样本大小。此设置启用以下功能:

  • 一种基于散列的算法,比采样速度快得多

    该算法读取所有行并产生与100%样本中的统计几乎准确的统计。使用此技术计算的统计信息是确定性的。

  • 增量统计
  • 并发统计
  • 新的直方图类型

            该DBA_TABLES.SAMPLE_SIZE列表示用于收集统计信息的实际样本量。

也可以看看:

 

13.3.2.2并行收集统计信息的准则

默认情况下,数据库以表或索引级别指定的并行度收集统计信息。

您可以使用收集过程degree参数来覆盖此设置DBMS_STATSOracle建议设置degreeDBMS_STATS.AUTO_DEGREE此设置使数据库可以根据对象大小和与并行度相关的初始化参数的设置来选择适当的并行度。

数据库可以串行或并行收集大多数统计信息。但是,数据库不会并行收集一些索引统计信息,包括群集索引,域索引和位图联接索引。在收集并行统计信息时,数据库可以使用采样。

注意:

不要混淆并行收集统计信息 与 收集统计信息。

也可以看看:


13.3.2.3分区对象准则

对于分区表和索引,DBMS_STATS可以为每个分区收集单独的统计信息,并为整个表或索引收集全局统计信息。

同样,对于复合分区,DBMS_STATS可以收集有关子分区,分区以及整个表或索引的单独统计信息。

要确定要收集的分区统计信息的类型,请granularityDBMS_STATS过程指定参数Oracle建议根据分区类型granularity将其设置为默认值,AUTO以收集子分区,分区或全局统计信息。ALL设置将收集所有类型的统计信息。

也可以看看:

 收集分区对象的增量统计信息 


13.3.2.4频繁更改对象的准则

频繁修改表时,应经常收集统计信息,以使它们不会过时,但又不会经常收集统计信息而降低性能。

您可能仅需要每周或每月收集一次新的统计信息。最佳实践是使用脚本或作业计划程序定期运行DBMS_STATS.GATHER_SCHEMA_STATSDBMS_STATS.GATHER_DATABASE_STATS过程。


13.3.2.5外部表准则

因为数据库不允许对外部表进行数据操作,所以数据库绝不会将外部表的统计信息标记为过时。例如,如果外部表需要新的统计信息,则因为基础数据文件已更改,那么请重新收集统计信息。

对于外部表,DBMS_STATS请使用与内部表相同的过程。注意,scanrate的参数DBMS_STATS.SET_TABLE_STATSDBMS_STATS.GET_TABLE_STATS指定的速率(以MB /秒),在该Oracle数据库的扫描表中的数据,并且只对外部表相关SCAN_RATE列显示在DBA_TAB_STATISTICSDBA_TAB_PENDING_STATS数据字典视图中。

也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论