在Oracle中,当收集表的统计信息时应该注意哪些问题

0    191    1

Tags:

👉 本文共约1952个字,系统预计阅读时间或需8分钟。

关于收集统计信息需要注意以下几点:

① 对于数据量不大的OLTP类型的系统,建议使用自动收集统计信息,并对一些特殊的大表写JOB定时收集统计信息。如果是数据量很大的OLAP或者DSS系统,那么建议DBA自己写JOB脚本来收集统计信息。

② 在导入大量数据后应及时收集统计信息后才能进行相关的后续业务处理(包括查询和修改),否则可能会由于实际数据量和统计信息里记录的数据量存在巨大差异而导致CBO选择错误的执行计划。

③ 全局临时表默认不能收集统计信息,在生成执行计划时采用动态采样比较好。

④ 对于某些新上线或新迁移的系统,建议进行全库收集一次统计信息。

⑤ 建议及时对包含日期型字段的表收集统计信息,避免出现谓词越界现象。

⑥ 统计信息收集作业采样比例:对于Oracle 11g及其以上的版本收集统计信息的采样比例建议采用DBMS_STATS.AUTO_SAMPLE SIZE。如果是Oracle 10g,那么建议将采样比例的初始值设为30%,然后根据目标SQL的实际执行情况再做调整。

⑦ 系统统计信息:如果系统的硬件环境发生了变化,那么建议要额外收集一次系统统计信息。

⑧ 内部对象统计信息:在明确诊断出系统已有的性能问题是因为X$表的内部对象统计信息不准引起的,这个时候就应该收集X$表的内部对象统计信息,其它情形就不要收集了。

⑨ 表的大小、是否并行:若表很大,而系统空闲,则可以使用并行来收集统计信息。

⑩ 表是否分区:若是分区表则建议收集全局的统计信息并且收集数据量有变更的单个分区(加GRANULARITY和参数并设置属性INCREMENTAL)的统计信息。

⑪ 是否收集索引的统计信息:一般情况下都应该收集索引的统计信息。

⑫ 是否收集直方图。对直方图统计信息的收集策略是对已经存在直方图统计信息的列才收集直方图统计信息,而目标列的初次直方图统计信息则是由了解系统的DBA手工来收集直方图。设置METHOD_OPT的值为“FOR ALL COLUMNS SIZE REPEAT”。

⑬ 是否可以并发收集统计信息:若系统有很多小表,则可以考虑并发收集统计信息。

⑭ 系统的负载情况:在手动收集统计信息的时候需要注意系统的负载情况。

⑮ 预估多久可以收集完成:对OLAP系统的大表而言,根据平时收集统计信息的经验要预估出收集统计信息要花费多长的时间。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
在Oracle中,当收集表的统计信息时应该注意哪些问题后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部