Oracle 11g R1中的统计收集增强
2008-09-02 12:45:57 来源:WEB开发网表达式统计
优化器对应用到列上的操作带来的影响一无所知,使用一种类似于多列统计的方法,我们可以收集到表达式统计数据。
可以使用存储过程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)被用于往表中统计数据,只有新加入到分区中数据才会被扫描,以更新统计数据。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
赞助商链接