WEB开发网
开发学院数据库Oracle Oracle 11g R1中的统计收集增强 阅读

Oracle 11g R1中的统计收集增强

 2008-09-02 12:45:57 来源:WEB开发网   
核心提示: 表达式统计优化器对应用到列上的操作带来的影响一无所知,使用一种类似于多列统计的方法,Oracle 11g R1中的统计收集增强(4),我们可以收集到表达式统计数据,可以使用存储过程create_EXTENDED_STATS明确地进行创建,分区交换载入(PEL)被用于往表中统计数据,只有新加

表达式统计

优化器对应用到列上的操作带来的影响一无所知,使用一种类似于多列统计的方法,我们可以收集到表达式统计数据。

可以使用存储过程create_EXTENDED_STATS明确地进行创建,或利用GATHER_%存储过程进行数据统计时,在METHOD_OPT参数中指定表达式进行间接创建。

DECLARE
 l_cg_nameVARchar2(30);
BEGIN
 --Explicitlycreated.
 l_cg_name:=DBMS_STATS.create_extended_stats(ownname =>’SCOTT’,
                        tabname =>’EMP’,
                        extension=>’(LOWER(ENAME))’);
 --Implicitlycreated.
 DBMS_STATS.gather_table_stats(
  ’SCOTT’,
  ’EMP’,
  method_opt=>’forcolumns(upper(ename))’);
END;
/

将METHOD_OPT参数设置为“FOR ALL COLUMNS SIZE AUTO”允许对现有的表达式进行数据统计。

BEGIN
 DBMS_STATS.gather_table_stats(
  ’SCOTT’,
  ’EMP’,
  method_opt=>’forallcolumnssizeauto’);
END;
/

[DBA|ALL|USER]_STAT_EXTENSIONS视图显示了关于表达式统计的信息,与多列统计一样。

COLUMNextensionFORMATA30
selectextension_name,extension
FROM dba_stat_extensions
where table_name=’EMP’;
EXTENSION_NAME        EXTENSION
------------------------------------------------------------
SYS_STU3VG629OEYG6FN0EKTGV_HQ6("JOB","DEPTNO")
SYS_STULPA1A#B6YL4KQ59DQO3OADQ("JOB","MGR")
SYS_STU2JLSDWQAFJHQST7$QK81_YB(LOWER("ENAME"))
SYS_STUOK75YSL165W#_X8GUYL0A1X(UPPER("ENAME"))
4rowsselected.
SQL>
COLUMNcol_groupFORMATA30
selecte.extensioncol_group,
   t.num_distinct,
   t.histogram
FROM dba_stat_extensionse
   joindba_tab_col_statisticstONe.extension_name=t.column_name
AND  t.table_name=’EMP’;
COL_GROUP           NUM_DISTINCTHISTOGRAM
---------------------------------------------------------
("JOB","DEPTNO")             9NONE
("JOB","MGR")              8NONE
(LOWER("ENAME"))            14NONE
(UPPER("ENAME"))            14NONE
4rowsselected.
SQL>

表达式统计使用drop_EXTENDED_STATS存储过程进行删除。

--dropthecolumnngroup.
BEGIN
 dbms_stats.drop_extended_stats(ownname =>’SCOTT’,
                tabname =>’EMP’,
                extension=>’(UPPER(ENAME))’);
END;
/
PL/SQLproceduresuccessfullycompleted.
SQL>

对分区对象的统计增强

Oracle 11g也包括了对分区对象统计的改进,未修改过的分区不会重新扫描,这样在大表上收集统计信息时的速度显著提高了,大表上往往包含有部分静态分区数据,分区交换载入(PEL)被用于往表中统计数据,只有新加入到分区中数据才会被扫描,以更新统计数据。

上一页  1 2 3 4 

Tags:Oracle 统计 收集

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接