oracle统计信息收集

上一篇 / 下一篇  2009-01-04 22:58:22 / 个人分类:Oracle

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

统计信息包括下面几类:

7MC#\Ul:{|#?0

表统计:包括记录数、block数和记录平均长度。51Testing软件测试网 h:VT{-I le6H?`b P-J

列统计:列中不同值的数量(NVD)、空值的数量和数据分布(HISTOGRAM)。51Testing软件测试网 jv\2xr4i"Ov

索引统计:索引叶块的数量、索引的层数和聚集因子(CLUSTERING FACTOR)。51Testing软件测试网]?8Aa7b$z

系统统计:I/O性能和利用率和CPU性能和利用率。

g\k h3o*f#}3ZB|"v0

"w5^%qBSoui9J0

生成统计信息:

,\plz:Pv^_a(]0

统计信息生成技术包括三种:

Gv0bEd o(P| F/T5G0

基于数据采样的估计方式;

P9Z"nU,~0

精确计算方式;

4~k L0

用户自定义的统计信息收集方式;

-I#Cf4{-h*K0

其中采用估算方式可以指定总记录数的估算百分比或者总块数的估算百分比。51Testing软件测试网(hKK~o\#x]

分区表的统计信息分为几级:分区表的整体信息、分区的统计信息和子分区的统计信息。

6k2k X0X~a0

最常用的收集统计信息的方式包括:DBMS_STATS包和ANALYZE语句,Oracle推荐使用DBMS_STATS包来收集统计信息。51Testing软件测试网y!J%SX:V

DBMS_STATS包中用于收集统计信息的过程包括:

%yWWZO.O0

dbms_stats.gather_table_stats  收集表、列和索引的统计信息;51Testing软件测试网&A \.h,m h:CP"s
    dbms_stats.gather_schema_stats   收集SCHEMA下所有对象的统计信息;
}c? XS a'Ic4L0     dbms_stats.gather_index_stats  收集索引的统计信息;51Testing软件测试网%~3XJ}+~X-_ rAd
    dbms_stats.gather_system_stats  收集系统统计信息。51Testing软件测试网k6dI'|2{J
    dbms_stats.delete_table_stats  删除表的统计信息
US!us.I'i0    dbms_stats.export_table_stats 输出表的统计信息
i#B)^*{.h'X)l,QO J0    dbms_stats.create_state_table 51Testing软件测试网L i i([k3t*U#p!N
    dbms_stats.set_table_stats 设置 表的统计
+zC$DhKW/?0    dbms_stats.auto_sample_size

1R sE+]_x(|o0

dbms_stats.gather_database_stats:收集数据库中所有对象的统计信息;

"l-?8vD-yJ2P m0

.W#wD geS K0

CREATE INDEX和ALTER INDEX REBUILD时可以指定COMPUTE STATISTICS语句,对于非分区表重建索引时会收集表、列和索引的统计信息。对于分区表,只收集索引信息,不会收集表和列信息。

YCy"g&D1xF0

可以在将METHOD_OPT参数设置为“FOR ALL HIDDEN COLUMNS SIZE N”来收集函数索引的索引表达式信息。

,iN]&l}O7yC0

*V7b9XO2B0~ Jcy1@0

Oracle根据下列条件来决定使用哪些索引:

I![*lT1Ch"@&Ul'_h0

索引中的记录数;

i$tac i0

索引中不同键值的数量;

$Hi~`,}t0

索引的层数;

e'h} UDDa0

索引中的叶块数;51Testing软件测试网 f%fdKC*bL`4j

聚集因子;

T cZ-d4r o7Gz0

每个键值平均叶块数;51Testing软件测试网+`6i?&z3f8O&C_8r!@

如果两个索引的选择性、查询代价和集势都相同,那么优化器会根据索引名称的字母顺序选51Testing软件测试网`1|8|qpmh.IiH

TAG: Oracle

 

评分:0

我来说两句

Open Toolbar