[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
将生产库中表的统计数据信息,导入到测试库中,进行查看分析.从而不影响真实生产库.