Oracle 12c数据库优化器统计信息收集的最佳实践(二)

原文链接 http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-bp-for-stats-gather-12c-1967354.pdf

译者  杨禹航


何时收集统计信息

为了选择最佳执行计划,优化器必须可以获得有代表性的统计信息。有代表性的统计数据不必是最新的,而是一组能够帮助优化器确定执行计划中每个操作所能返回的行数。

自动统计信息收集任务

Oracle会在预定义维护窗口期间 (工作日10pm 到2am 和周末6am 到2am )收集数据库中所有缺失统计信息或者统计信息过期对象的统计信息,您可以在Oracle企业管理器或使用DBMS_SCHEDULER和DBMS_AUTO_TASK_ADMIN软件包来更改维护窗口。

图3: 更改自动收集统计信息作业运行时间的维护窗口

如果你已经有一个行之有效的统计收集程序,或者您想要禁用自动收集统计信息任务,您可以使用如下命令:

begin

dbms_auto_task_admin.disable(

client_name=>'auto optimizer stats collection',

operation=>null,

window_name=>null);

end;

/

手工统计收集

如果您打算手动维护优化器的统计信息,则需要确定何时去收集统计信息。基于过期的信息您可以决定什么时候统计信息应该被收集,您可以根据统计信息的失效性确定何时收集统计信息,就像自动作业一样,或者基于您的环境中新数据加载的时间。如果基本的数据没有明显变化,则不建议重新收集统计信息,因为这将不必要地浪费系统资源。

如果数据仅在预先定义的 ETL 或 ELT 作业期间加载到您的环境中, 则可以将统计信息收集操作安排为此过程的一部分。

在线收集统计信息

在Oracle Database 12 c中,在线收集统计信息"piggybacks"作为直接路径数据加载操作的一部分进行收集, 例如, 像使用CTAS的方式创建表,以及IAS方式插入数据。收集统计数据作为数据加载操作的一部分,这意味着不需要额外的全表扫描,就可以在加载数据后立即提供统计信息。

图4:在线收集统计信息为新创建的sales2表提供表和列的统计信息收集

在线收集统计信息并不会收集直方图和索引统计信息,因为这些种类的统计信息需要额外的数据扫描,这可能在数据加载时对性能产生较大影响。

如果要收集直方图或者索引的统计信息,而不重新收集列的基本统计信息, 请使用 DBMS_STATS.GATHER_TABLE_STATS 中新的选择”OPTIONS”参数设置成GATHER AUTO。

请注意,出于性能原因,GATHER AUTO在生成直方图时,使用行中的样本数据而不是表中的所有数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值