[bbk5139]第77集 第9章 数据库性能维护 04

Optimizer Statistics Collection

  • Ways to collect statistics:
    • -Automatically:Automatic Maintenance Tasks(自动搜集统计数据信息的功能,是自oracle10g以后才有的)

查看系统里的job信息

SQL> select owner,job_name from dba_scheduler_jobs;

OWNER                          JOB_NAME
------------------------------ ------------------------------
SYS                            XMLDB_NFS_CLEANUP_JOB
SYS                            SM$CLEAN_AUTO_SPLIT_MERGE
SYS                            RSE$CLEAN_RECOVERABLE_SCRIPT
SYS                            FGR$AUTOPURGE_JOB
SYS                            BSLN_MAINTAIN_STATS_JOB
SYS                            DRA_REEVALUATE_OPEN_FAILURES
SYS                            HM_CREATE_OFFLINE_DICTIONARY
SYS                            ORA$AUTOTASK_CLEAN
SYS                            FILE_WATCHER
SYS                            PURGE_LOG
ORACLE_OCM                     MGMT_STATS_CONFIG_JOB

OWNER                          JOB_NAME
------------------------------ ------------------------------
ORACLE_OCM                     MGMT_CONFIG_JOB
EXFSYS                         RLM$SCHDNEGACTION
EXFSYS                         RLM$EVTCLEANUP
ARCER                          JOB_INVEST_20110630
U2                             ADD_DEPT_JOB

16 rows selected.

使用job方式,自动运行搜集统计数据信息,采取的方式是估算;也就是说并不一定每个对象都会进行搜集.假如说一张表有100多万条记录,Job执行之前仅有200多条记录发生变化,Job在搜集数据统计信息时,有可能不会统计它,因为200多条记录对于100多万条记录,对于执行计划的判断,基本上没有影响;

    • -Manually:DBMS_STATS package

统计数据分析的时候,手工方式进行搜集是不可避免的:1、数据库移植;2、锁定某张表,不再进行统计数据搜集;3、有的表不进行搜集时没错,反而进行搜集的时候报错了;... 

有时候根据业务需求,需要将统计数据进行删除,具体删除方法如下:

execute dbms_stats.delete_table_stats('SCOTT','EMP1');

oracle 10g以后,已经不存在基于规则的优化方式,而是采用基于代价的优化方式.

    • By Setting database initialization parameters

决定oracle动态采样数据的参数;样本容量越小,性能越高;反之...

SQL> show parameter optimizer_dynamic_sampling;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
optimizer_dynamic_sampling           integer     2
    •  By importing statistics from another database

将生产库中表的统计数据信息,导入到测试库中,进行查看分析.从而不影响真实生产库.

原文地址:https://www.cnblogs.com/arcer/p/3115576.html