收集一些Oracle表的统计信息需要很长时间。这些表的记录数量从200万条记录到900万条记录不等。表中每个表都有大约5-6个索引。
Oracle版本是
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数据集的语法是
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会减少收集表上统计信息所需的总时间吗?推荐吗?
发布于 2013-09-09 04:50:11
是的,缩小空间会有帮助。如果您有能力将应用程序降下来一段时间,并且这些表不会像以前的大小那样弹回原样,那么缩小空间总是一个好主意。
除此之外,如果参数不能改变,那么就没有什么可以改进的了。在某些情况下,设置DEGREE参数可以显着地提高性能。我知道你说过你不能改变任何参数,但我看不出他们怎么会抱怨那个参数。虽然它可能会使作业运行得更快,但它可能会对系统性能产生更大的影响(但时间更短)。
最好的解决方案可能是升级到11g,任何正常的应用程序都会使用estimate_percent => dbms_stats.auto_sample_size。11g的统计数据比10g的统计量要好得多。有了改进的自动样本算法、增量统计、设置统计信息首选项和并发统计这样的特性,收集统计数据往往更快、更准确。
https://stackoverflow.com/questions/18689337
复制相似问题