数据库工具统计说明技能应用
发布时间:2018-08-23 06:40:48 所属栏目:电商 来源:站长网
导读:ORACLE在执行SQL时假如行使本钱方法说明则全部的整天职析信息来历依赖于体系的统计说明表(DBA_TABLES、DBA_INDEXES、DBA_TAB_COLUMNS)数据,假如说统计说明的数据是禁绝确的,那也许会使ORACLE说明出来的路径执行机能极差,以是统计说明数据是影响ORACLE
ORACLE在执行SQL时假如行使本钱方法说明则全部的整天职析信息来历依赖于体系的统计说明表(DBA_TABLES、DBA_INDEXES、DBA_TAB_COLUMNS)数据,假如说统计说明的数据是禁绝确的,那也许会使ORACLE说明出来的路径执行机能极差,以是统计说明数据是影响ORACLE机能繁重要的信息。 统计说明首要包罗发生表及索引的统计信息 表的统计信息首要包罗表的行数,每行的均匀长度(字节),空闲块,统计时刻等信息 索引的统计信息首要包罗行数、层数、叶块数、统计时刻等信息。 其它ORACLE还可以统计列及数据差池称信息,9i还可以统计体系信息(CPU,I/O) ORACLE执行整天职析时起首取出所应用表及索引的统计数据举办说明,个中数据行数是一个重要的参数,由于ORACLE在说明表巨细时行数为首要参数,假如举办两个表联适时,ORACLE会通过说明表的巨细,抉择应用小表举办全表查询,而大表执行连系查询,这种机能明明高于先大表举办全表扫描。索引的统计信息对说明也发生较量大的影响,如ORACLE通过统计可以说明发生多个索引的优先级及索引的适用性来确定最优的索引计策。ORACLE还可以统计列及数据对称信息以发生更准确的说明。如一个表有A字段的索引,个中A共有两种值1和0,共10000笔记录,为0的记录有10条,为1的记录有9990条,这时假如没有进队列数据差池称的统计信息,那么ORACLE对A=0及A=1前提查询城市举办索引,但现实应用对A=0的索引机能获得了很大的进步,而A=1的索引反而使机能降落。以是说索引特性值说明信息对应用索激发生重大影响,准确的信息使ORACLE不会行使不该该用的索引。 现实说明 zl_cbqc和zl_yhjbqk都没有成立统计信息,执行如下两个SQL ORACLE将发生差异的执行打算。 1 select * from dlyx.zl_cbqc b, dlyx.zl_yhjbqk a where a.qc_bh=b.qc_bh 执行打算: SELECT STATEMENT, GOAL = CHOOSE NESTED LOOPS TABLE ACCESS FULL DLYX ZL_YHJBQK TABLE ACCESS BY INDEX ROWID DLYX ZL_CBQC INDEX UNIQUE SCAN DLYX 抄表区册主键 2 select * from dlyx.zl_yhjbqk a,dlyx.zl_cbqc b where a.qc_bh=b.qc_bh 执行打算: SELECT STATEMENT, GOAL = CHOOSE NESTED LOOPS TABLE ACCESS FULL DLYX ZL_CBQC TABLE ACCESS BY INDEX ROWID DLYX ZL_YHJBQK INDEX RANGE SCAN DLYX 区册索引 在对两个表举办了统计说明后 3 select * from dlyx.zl_yhjbqk a,dlyx.zl_cbqc b where a.qc_bh=b.qc_bh 执行打算: SELECT STATEMENT, GOAL = CHOOSE 159 72853 9689449 HASH JOIN 159 72853 9689449 TABLE ACCESS FULL DLYX ZL_CBQC 1 426 19596 TABLE ACCESS FULL DLYX ZL_YHJBQK 157 72853 6338211 4 select * from dlyx.zl_cbqc b,dlyx.zl_yhjbqk a where a.qc_bh=b.qc_bh 执行打算: SELECT STATEMENT, GOAL = CHOOSE 159 72853 9689449 HASH JOIN 159 72853 9689449 TABLE ACCESS FULL DLYX ZL_CBQC 1 426 19596 TABLE ACCESS FULL DLYX ZL_YHJBQK 157 72853 6338211 从以上测试可以明明看出ORACLE的说明功效 第1条SQL与第2条SQL在没有统计说明的信息下举办,ORACLE无法举办判定,只能以法则要领举办说明,按照表的呈现先后次序有明明相关。 第3条SQL与第4条SQL在有统计说明的信息下举办,ORACLE说明与表的呈现先后次序无关,由于它已经知道了表的数据量而且已经确定返回的数据量根基上是两个表全部的数据,以是对表两个表举办了HASH JOIN (同时取出两个表的数据然后在内存中举办连系发生返回功效)。 相干技能 用analyze语句发生说明数据 说明表:analyze table zl_yhjbqk estimate statistics sample 20 percent 说明索引:analyze index用户资料表主键compute statistics 说明列:analyze table zl_yhjbqk compute statistics for columns hbs_bh 说明索引列:analyze table zl_yhjbqk compute statistics for all indexed columns 用sys.dbms_utility包说明数据 说明数据库(包罗全部的用户工具和体系工具):analyze_database 说明用户全部的工具(包罗用户方案内的表、索引、簇):analyze_schema 用sys.dbms_stats包处理赏罚说明数据 说明数据库(包罗全部的用户工具和体系工具):gather_database_stats 说明用户全部的工具(包罗表、索引、簇):gather_schema_stats 说明表:gather_table_stats 说明索引:gather_index_stats 删除数据库统计信息:delete_database_stats 删除用户方案统计信息:delete_schema_stats 删除表统计信息:delete_table_stats 删除索引统计信息:delete_index_stats 删除列统计信息:delete_column_stats 配置表统计信息:set_table_stats 配置索引统计信息:set_index_stats 配置列统计信息:set_column_stats ORACLE保举用户回收sys.dbms_stats包体举办说明,由于在ORACLE9i及其以上的版本全面扩充的此包体的成果。sys.dbms_utility包体举办说明时会对全部的信息所有门析一遍,时刻较量长,而在9i中sys.dbms_stats可以操作表修改监控技能来判定需统计说明的表举办,节减了用户的说明资源。 备注: ORACLE在获得了表的统计说明数据后才会举办整天职析,不然回收法则说明。 并不是全部的统计数据城市对ORACLE说明发生影响,有些统计数据ORACLE并不处理赏罚,只是提供应用户一个参考信息,也也许在ORACLE往后的版本中操作这些信息举办说明。 说明表的登任命户必需对表拥有会见权限或具有DBA或Analyze any权限 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |