oracle收集统计信息.docx
- 文档编号:10957608
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:17
- 大小:57.29KB
oracle收集统计信息.docx
《oracle收集统计信息.docx》由会员分享,可在线阅读,更多相关《oracle收集统计信息.docx(17页珍藏版)》请在冰豆网上搜索。
oracle收集统计信息
oracle收集统计信息
(2011-06-2910:
51:
12)
转载▼
标签:
杂谈
分类:
oracle学习笔记
统计信息包括下面几类:
表统计:
包括记录数、block数和记录平均长度。
列统计:
列中不同值的数量(NVD)、空值的数量和数据分布(HISTOGRAM)。
索引统计:
索引叶块的数量、索引的层数和聚集因子(CLUSTERINGFACTOR)。
系统统计:
I/O性能和利用率和CPU性能和利用率。
统计信息生成技术包括三种:
基于数据采样的估计方式;
精确计算方式;
用户自定义的统计信息收集方式;
其中采用估算方式可以指定总记录数的估算百分比或者总块数的估算百分比。
分区表的统计信息分为几级:
分区表的整体信息、分区的统计信息和子分区的统计信息。
最常用的收集统计信息的方式包括:
DBMS_STATS包和ANALYZE语句,Oracle推荐使用DBMS_STATS包来收集统计信息。
DBMS_STATS包中用于收集统计信息的过程包括:
dbms_stats.gather_table_stats 收集表、列和索引的统计信息;
dbms_stats.gather_schema_stats 收集SCHEMA下所有对象的统计信息;
dbms_stats.gather_index_stats 收集索引的统计信息;
dbms_stats.gather_system_stats 收集系统统计信息。
dbms_stats.delete_table_stats 删除表的统计信息
dbms_stats.export_table_stats输出表的统计信息
dbms_stats.create_state_table
dbms_stats.set_table_stats设置表的统计
dbms_stats.auto_sample_size
dbms_stats.gather_database_stats:
收集数据库中所有对象的统计信息;
在CREATEINDEX和ALTERINDEXREBUILD时可以指定COMPUTESTATISTICS语句,对于非分区表重建索引时会收集表、列和索引的统计信息。
对于分区表,只收集索引信息,不会收集表和列信息。
可以在将METHOD_OPT参数设置为“FORALLHIDDENCOLUMNSSIZEN”来收集函数索引的索引表达式信息
Oracle根据下列条件来决定使用哪些索引:
索引中的记录数;
索引中不同键值的数量;
索引的层数;
索引中的叶块数;
聚集因子;
每个键值平均叶块数;
如果两个索引的选择性、查询代价和集势都相同,那么优化器会根据索引名称的字母顺序选
示例(保持表和索引的状态一直,要重建索引,需要使表和索引同时处于解锁状态):
execdbms_stats.gather_index_stats(user,'CR_SHMTRESUL
Oracledbms_stats
分类:
Oracle2012-04-0616:
13468人阅读评论(0)收藏举报
oraclestatisticstablenullsystemschema
Oracledbms_stats
.
第一部分:
GatheringOptimizerStatistics
1.GATHER_DATABASE_STATS
收集数据库中所有对象的统计信息
Parameters:
--estimate_percent:
需分析的百分比(NULLmeanscompute),默认值可以通过SET_PARAM来改变。
Thevalidrangeis[0.000001,100]
--block_sample:
无论是否是随机块采样替代随机行采样,随机块采样的效率都会比较高。
除非数据不是随机分布在磁盘上的。
DEFAULTFALSE
--method_opt:
FORALL[INDEXED|HIDDEN]COLUMNS[size_clause]
FORCOLUMNS[sizeclause]column|attribute[size_clause][,column|attribute[size_clause]...]
size_clauseisdefinedassize_clause:
=SIZE{integer|REPEAT|AUTO|SKEWONLY}
-integer:
Numberofhistogrambuckets.Mustbeintherange[1,254].-REPEAT:
Collectshistogramsonlyonthecolumnsthatalreadyhavehistograms.-AUTO:
Oracledeterminesthecolumnstocollecthistogramsbasedondatadistributionandtheworkloadofthecolumns.-SKEWONLY:
Oracledeterminesthecolumnstocollecthistogramsbasedonthedatadistributionofthecolumns.
ThedefaultisFORALLCOLUMNSSIZEAUTO.默认值可以通过SET_PARAM来改变
--degree:
并行度,ThedefaultfordegreeisNULL.
--granularity:
只有分区表才会用到此参数
--cascade:
是否要统计此表上的index,默认为false,默认值可以通过SET_PARAM来改变
--Stattab:
Userstatisticstableidentifierdescribingwheretosavethecurrentstatistics.
--Statid:
Identifier(optional)toassociatewiththesestatisticswithinstattab.
--options:
默认值GATHER(Gathersstatisticsonallobjectsintheschema),
其它选项:
GATHERAUTO:
Gathersallnecessarystatisticsautomatically
GATHERSTALE:
Gathersstatisticsonstaleobjectsasdeterminedbylookingatthe*_tab_modificationsviews.
GATHEREMPTY:
Gathersstatisticsonobjectswhichcurrentlyhavenostatistics.
LISTAUTO:
ReturnsalistofobjectstobeprocessedwithGATHERAUTO,WhenGATHERAUTOisspecified,theonlyadditionalvalidparametersarestattab,statid,objlistandstatown;
LISTSTALE:
Returnsalistofstaleobjectsasdeterminedbylookingatthe*_tab_modificationsviews.
LISTEMPTY:
Returnsalistofobjectswhichcurrentlyhavenostatistics.
--objlist:
Listofobjectsfoundtobestaleorempty
--statown:
Schemacontainingstattab(ifdifferentfromcurrentschema)
--gather_sys:
Gathersstatisticsontheobjectsownedbythe'SYS'user,默认值TRUE
--no_invalidate:
设置为TRUE时,相关的游标不会失效;反之,游标失效。
2.GATHER_DICTIONARY_STATS
此过程收集统计数据字典用户’SYS’,’SYSTEM’以及RDBMS组件用户.
必须有SYSDBA或ANALYZEANYDICTIONARY和ANALYZEANYSYSTEM权限才能执行此过程。
参数:
--comp_id:
指定需统计用户的COMP_ID,通过DBA_REGISTRY视图来查看COMP_ID。
如此值为NULL,则统计所有RDBMS组件的用户。
此管是否有此参数,’SYS’,’SYSTEM’用户都会被统计。
其它参数estimate_percent--block_sample--method_opt–degree–granularity–cascade–stattab–statid–options–objlist–statown--no_invalidate都同上
3.GATHER_FIXED_OBJECTS_STATS
此过程收集统计所有的动态性能表
必须有SYSDBA或具有ANALYZEANYDICTIONARY权限才能执行此过程。
参数:
stattab–statid–statown--no_invalidate
4.GATHER_INDEX_STATS
此过程收集索引的统计。
一些参数被限制的,不会并行处理clusterindexes,domainindexes,和bitmapjoinindexes,granularity和no_invalidate参数在这些index中不起作用。
参数:
--ownname:
被统计的schema
--indname:
index名
--Partname:
Nameofpartition
--force:
即使表被锁定,也强行统计
--estimate_percent–stattab–statid–statown–degree–granularity--no_invalidate都同上
5.GATHER_SCHEMA_STATS
此过程收集统计某用户下所有的对象
参数:
--ownname:
需分析的schema,null时则为当前schema
--estimate_percent--block_sample--method_opt–degree–granularity–cascade–stattab–statid–options–objlist–statown--no_invalidate都同上
6.GATHER_SYSTEM_STATS
此过程收集系统统计,用来系统的cpu和IO指标
参数:
--gathering_mode:
-NOWORKLOAD,收集I/O的性能指标,数据库的大小决定收集时间。
收集期间ORACLE将评估IO平均的读取寻道时间和传输速度。
-INTERVAL,指定统计的时间(分钟数),统计完成后,统计信息将建立或更新在数据字典或指定的stattab中。
在统计期间可以用GATHER_SYSTEM_STATS(gathering_mode=>'STOP')来中断统计。
SQL>execdbms_stats.gather_system_stats('interval',15);
SQL>execdbms_stats.gather_system_stats('stop');
SQL>selectpname,pval1fromsys.aux_stats$;--查看统计结果
-START|STOP:
开始和结束统计
--interval:
指定统计的分钟数,当上面的参数是INTERVAL时才用此参数
--no_invalidate:
设置为TRUE时,相关的游标不会失效;反之,游标失效。
–statid–statown同上
7.GATHER_TABLE_STATS
此过程统计tableandcolumn(andindex)信息。
参数:
Ownname:
用户名
Tabname:
TABLE名
Partname:
分区名Nameofpartition
--estimate_percent--block_sample--Method_opt–degree–granularity–cascade–stattab–statid–statown--no_invalidate--force都同上
第二部分:
SettingorGettingStatistics
1.SET_COLUMN_STATS
设置列相关信息
参数:
--ownname:
用户名
--tabname:
TABLE名
--colname:
列名
--partname:
分区名
--stattab:
指定存放用户分析的数据的表名
--statid:
stattab的ID,只有当stattab没有指定时使用
--ext_stats:
自定义的统计
--stattypown:
统计类型的所属用户
--STATTYPNAME:
统计类型的名称
--distinct:
有多少个值(numberofdistinctvalues)
--density:
列密度。
如果此值是null且distinct不为空,那么此值将参照distinct
--nullcnt:
numberofNULLS
--srec:
StatRecstructurefilledinbyacalltoPREPARE_COLUMN_VALUESorGET_COLUMN_STATS
--avgclen:
列的平均长度(inbytes)
--flags:
ORACLE内部使用,应该为NULL
--statown:
Schemacontainingstattab(ifdifferentthanownname)
--no_invalidate:
设置为TRUE时,相关的游标不会失效;反之,游标失效。
--force:
被设置的column被锁时也强行设置
2.SET_INDEX_STATS
设置索引相关信息
3.SET_PARAM
此过程是用来设置DBMS_STATS的值的,可以用GET_PARAM函数来得到参数的当前值。
参数:
--pname:
可以是CASCADE,DEGREE,EASTIMAT_PERCENT,METHOD_OPT,NO_INVALIDATE,GRANULARITY,AUTOSTATS_TARGET
--pval:
参数的值。
如果是NULL,则设成默认值。
Torunthisprocedure,youmusthavetheSYSDBAorboththeANALYZEANYDICTIONARYandANALYZEANYsystemprivileges
举例:
DBMS_STATS.SET_PARAM('CASCADE','DBMS_STATS.AUTO_CASCADE');
DBMS_STATS.SET_PARAM('ESTIMATE_PERCENT','5');
DBMS_STATS.SET_PARAM('DEGREE','NULL');
4.SET_SYSTEM_STATS
设置系统的统计
参数:
--pname:
--iotfrspeed:
IO的传输速度/毫秒
--ioseektim:
seektime+latencytime+operatingsystemoverheadtime,inmilliseconds
--sreadtim:
averagetimetoreadsingleblock(randomread),inmilliseconds
--mreadtim:
averagetimetoreadanmbrcblockatonce(sequentialread),inmilliseconds
--cpuspeed:
averagenumberofCPUcyclesforeachsecond,inmillions,capturedfortheworkload(statisticscollectedusing'INTERVAL'or'START'and'STOP'options)
--cpuspeednw:
averagenumberofCPUcyclesforeachsecond,inmillions,capturedforthenoworkload(statisticscollectedusing'NOWORKLOAD'option.
--mbrc:
averagemultiblockreadcountforsequentialread,inblocks
--maxthr:
I/O的最大吞吐量,bytes/second
--slavethr:
averageslaveI/Othroughput,inbytes/second
--pvalue:
参数的值
--stattab:
指定存放用户分析的数据的表名
--statid:
用户ID
--statown:
stattab指定表的所属用户
--cachedblk:
段在buffercache中的平均块数
--cachehit:
段的平均命中率
5.SET_TABLE_STATS
设置表的统计
参数:
--ownname,--tabname,--partname,--stattab,--statid同上
--numrows:
表中有多少行
--numblks:
表占用了多少块
--avgrlen:
平均的行长度
--flags,--statown,--no_invalidate,--cachedblk,--cachehit,--force同上
6.PREPARE_COLUMN_VALUES
7.PREPARE_COLUMN_VALUES_NVARCHAR2
8.PREPARE_COLUMN_VALUES_ROWID
9.GET_COLUMN_STATSProcedures
取栏位的统计信息
参数:
--ownname,--tabname,--colname,--partname,--stattab,--statid,--ext_stats,--stattypown,--STATTYPNAME,--distinct,--density,--nullcnt,--srec,--avgclen,--statown
10.GET_INDEX_STATS
取索引的统计信息
参数
--ownname,--indname,--partname,--stattab,--statid,--ext_stats,--stattypown,--STATTYPNAME,--numrows,--numblks
--numdist:
Numberofdistinctkeysintheindex(partition)
--avglblk:
Averageintegralnumberofleafblocksinwhicheachdistinctkeyappearsforthisindex(partition)
--avgdblk:
Averageintegralnumberofdatablocksinthetablepointedtobyadistinctkeyforthisindex(partition)
--clstfct:
Clusteringfactorfortheindex(partition)
--indlevel:
Heightoftheindex(partition)
--statown:
stattab的用户名
--guessq:
估计INDEX的质量
--cachedblk:
段在buffercache中的平均块数
--cachehit:
段的平均命中率
11.GET_SYSTEM_STATS
此过程取系统的统计信息
语法:
DBMS_STATS.GET_SYSTEM_STATS(
statusOUTVARCHAR2,
dstartOUTDATE,
dstopOUTDATE,
pnameVARCHAR2,
pvalueOUTNUMBER,
stattabINVARCHAR2DEFAULTNULL,
statidINVARCHAR2DEFAULTNULL,
statownINVARCHAR2DEFAULTNULL);
参数:
--Status:
会输出以下值之一COMPLETED,AUTOGATHERING,MANUALGATHERING,BADSTATS
--dstart:
收集分析开始的时间
--dstop:
收集分析结束的时间
--pname:
需要获取值的参数,可选的值有:
iotfrspeed,ioseektim,sreadtim,mreadtim,cpuspeed,cpuspeednw,mbrc,maxthr,slavethr
--pvalue:
值
--stattab:
统计表所表名,如果此值为null,则会从数据字典中取。
--statid:
stattab的id
--statown:
stattab的own
12.GET_TABLE_STATUS
取table相关的统计信息
语法:
DBMS_STATS.GET_TABLE_STATS(
ownnameVARCHAR2,
tabnameVARCHAR2,
partnameVARCHAR2DEFAULTNULL,
stattabVARCHAR2DEFAULTNULL,
statidVARCHAR2DEFAULTNULL,
numrowsOUTNUMBER,
numblksOUTNUMBER,
avgrlenOUTNUMBER,
statownVARCHAR2DEFAULTNULL,
cachedblkOUTNUMBER,
cachehitOUTNUMBER);
13.CREATE_STAT_TABLE
此过程建立stattab的TABLE,以保存统计信息。
语法:
DBMS_STATS.CREATE_STAT_TABLE(
ownnameVARCHAR2,
stattabVARCHAR2,
tblspaceVARCHAR2DEFAULTNULL);
参数:
--ownname:
用户名
--stattab:
需建立的stattab表名。
--tblspace:
stattab的tablespace.如果为null则会使用用户的默认表空间
14.DROP_STAT_TABLE
此过程删除用户定义的统计表
语法:
DB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 收集 统计 信息