问题描述
请问下各位大佬,对于一个数据量特别大的库,有没有好的方法收集统计信息,并且不会把库弄崩呢?
专家解答
降低采样比,并行度降低
exec dbms_stats.set_global_prefs(‘incremental’, ‘TRUE’);
exec dbms_stats.set_global_prefs(pname => ‘ESTIMATE_PERCENT’, pvalue => ‘0.1’);
对于TB级的库,0.1%的采样比例还是高,可以降低到0.001甚至更低,因为Oracle再判断采样比例的时候,会根据表大小自动判断。举个例子,一个1000条记录的表,设置了1%的比例去收集,Oracle并不会只分析10条记录,而是会完整采样。只有表达到一定的量级后,Oracle才根据设置的采样比例进行收集。换句话说,这个比例设置的是最大表的最低比例,如果Oracle判断表比较小,采用的比例会高于这个值。
另外,启用块采样。block_sample=>true 不然,遇到一个块中的行较多时,可能采样的是1%的行,但需要访问的块却是全部或者大部分块。
最后修改时间:2020-11-30 13:55:37
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




