首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle收集表统计时间

Oracle收集表统计时间
EN

Stack Overflow用户
提问于 2013-09-08 22:38:26
回答 1查看 22K关注 0票数 1

收集一些Oracle表的统计信息需要很长时间。这些表的记录数量从200万条记录到900万条记录不等。表中每个表都有大约5-6个索引。

Oracle版本是

代码语言:javascript
复制
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
"CORE   10.2.0.1.0  Production"
TNS for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Productio
NLSRTL Version 10.2.0.1.0 - Production

数据集的语法是

代码语言:javascript
复制
dbms_stats.gather_table_stats('OWNER', 'TABLE_NAME', estimate_percent => 100, method_opt => 'for all columns size auto', cascade => true);

当应用程序供应商坚持要使用这些参数时,我们不能更改上面收集stats命令的参数。

请告诉我,如果有什么我们可以做的,以减少收集统计工作所需的时间。我注意到,作业运行时,会导致应用程序的性能略有下降,这是不可接受的。

我还注意到,有些表占用了磁盘上的大量空间,但实际数据(通过估计记录计数乘以平均行长)要小得多。看起来,表需要压缩/缩小/高水标重置等。

例如,一些表在磁盘上占据了9GB,而Real显示为1.2GB。。。近70%的空间浪费在碎片上。

,ALTER会减少收集表上统计信息所需的总时间吗?推荐吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-09 04:50:11

是的,缩小空间会有帮助。如果您有能力将应用程序降下来一段时间,并且这些表不会像以前的大小那样弹回原样,那么缩小空间总是一个好主意。

除此之外,如果参数不能改变,那么就没有什么可以改进的了。在某些情况下,设置DEGREE参数可以显着地提高性能。我知道你说过你不能改变任何参数,但我看不出他们怎么会抱怨那个参数。虽然它可能会使作业运行得更快,但它可能会对系统性能产生更大的影响(但时间更短)。

最好的解决方案可能是升级到11g,任何正常的应用程序都会使用estimate_percent => dbms_stats.auto_sample_size。11g的统计数据比10g的统计量要好得多。有了改进的自动样本算法增量统计设置统计信息首选项并发统计这样的特性,收集统计数据往往更快、更准确。

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

https://stackoverflow.com/questions/18689337

复制
相关文章

相似问题

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