首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高dbms_stats.gather_schema_stats的性能

如何提高dbms_stats.gather_schema_stats的性能
EN

Stack Overflow用户
提问于 2019-01-12 11:28:20
回答 2查看 3.7K关注 0票数 1

使用下面的块收集模式统计数据花费了16.30个小时。有什么方法可以提高性能吗?

代码语言:javascript
复制
begin
   dbms_stats.gather_schema_stats(
      ownname          => 'SCHEMA_NAME',
      estimate_percent => dbms_stats.auto_sample_size,
      method_opt       => 'for all columns size AUTO',
      cascade          => true, 
      degree           => 16
   );
end;

此活动每周执行一次,但对用户来说,等待16小时是不可以的。

我的Oracle db是11.2.0版本,模式中有几个大的分区表,数据插入/删除经常发生。

EN

回答 2

Stack Overflow用户

发布于 2019-01-12 19:28:09

考虑一个额外的参数options,其GATHER AUTO值介于ownnameestimate_percent之间,它只为没有统计信息或行更改超过10%的表收集统计信息,以缩短时间,顺便说一句,将estimate_percent参数保持为dbms_stats.auto_sample_size,因为数据库会自动为您估计值:

代码语言:javascript
复制
begin
   dbms_stats.gather_schema_stats(
      ownname          => 'SCHEMA_NAME',
      options          => 'GATHER AUTO',
      estimate_percent => dbms_stats.auto_sample_size,
      method_opt       => 'for all columns size AUTO',
      cascade          => true, 
      degree           => 16
   );
end;
/
票数 2
EN

Stack Overflow用户

发布于 2019-01-12 22:01:26

是否始终需要重新计算整个架构的统计数据?您还可以对单个表或仅对分区,甚至对单个列执行集统计。将数据收集状态限制为数据已更改的对象( significantly. )

当数据没有变化时,在表/分区上收集统计数据是没有任何意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54159145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档