oracle聚簇因子概念及实验

oracle聚簇因子概念及实验

ID:33741425

大小:58.34 KB

页数:4页

时间:2019-02-28

oracle聚簇因子概念及实验_第1页
oracle聚簇因子概念及实验_第2页
oracle聚簇因子概念及实验_第3页
oracle聚簇因子概念及实验_第4页
资源描述:

《oracle聚簇因子概念及实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Oracle聚簇因子Oracle中,对于同一个查询语句,有时候会很快的完成,有时候却很慢,但是表结构什么的完全一致,表中的数据也完全一致,这个具体是什么原因呢,就要从Index中的细节说起了。在Oracle屮的一个特殊的视图uscr_indcxcs屮有一个特殊的列,名字是clustering_factor,这个值的内容就是如果访问表的整个表数据,会造成多少次数据库IOoA:如果这个值与块数接近,则说明表相当有序,得到了很好的组织。在这种情况下,同一个叶子块屮的索引条目可能指向同一个数据块屮的行。B:如果这个值与行数接近,表的次序可能就是非常随机的。在这种情况下,同一个叶子块上的索

2、引条目不太可能指向同一个数据块上的行。可以把聚簇因子看作是通过索引读取整个表时对表执行的逻辑1/0次数。也就是说局促因子指示了表相对于索引木身的有序程度。当oracle对索引结构执行区间扫描时,如果它发现索引中的下一行与前一行在同一个数据块上,就不会再执行另一个I/O从缓冲区缓存屮获得表块。它已经有了表块的一个句柄,只需要直接使用就行了。不过,如果下一行不在同一个块上,就会释放当前的这个块,而执行另一个物理I/O在缓冲区缓存存放要处理的下一个块。我们在查询索引状态的时候,通常会用到userjndexes这张表,这张表中有一列(CLUSTERING_FACTOR聚簇因子),这里简单

3、的介绍下聚簇因子的意思,大家知道数据表屮的薮据都是无序的存在库屮,当我们在对数据进行检索的时候,查找起来很是耗费资源,于是我们就需要为表创建索引,索引的作用就是把表中的数据按照一定的顺序排列保存起来,于是就出现了一个问题,有的表中的数据和索引想要排列的顺序很是相近,而另一些表中的数据和索引想要排列的顺序相距甚远,聚簇因子的作用就是用来标示这个的,聚簇因子越小,相似度越高,聚簇因子越大,相似度越低。我们知道了聚簇因子是干嘛的了,但是还不了解标示数据的相似度有何意义,我们继续讨论:oracle在存储数据的时候,并不是按照数据块的顺序挨个进行存入数据,因为前面存入的数据经常会有dml或

4、者ddl操作,删除数据后,原先存有数据的数据块就变成了空块,oracle为了节省存储空间,当数据库再次有新数据进行插入的话,就会优先使用那些空块,只有当空块不够使用的时候,才会去高水位以上开辟新块,这种情况也就会导致,一张表中的数据,并不是存储在相邻的数据块中,于是聚簇因子变的很大,当这种情况进行逻辑读取的时候,就会增加10的次数,影响了读取的速度。既然说聚簇因子关系着表的读取速度,那么我们能够手工控制聚簇因子的大小吗?答案是肯定的,但是事情总是有利也有弊,1)我们可以对表进行重构(altertableempmove);2)或者按照索引的顺序重建表(createtableemp_

5、bkasselect*fromemporderbyempno);3)可以在高水位以上开辟足够的新块,把一张表的数据全部存入这里,以达到降低聚簇因子的目的,但是带来的结果也就是空间的浪费,同时因为高水位线是全表扫描的终点,人为的拔高了水位线,容易造成全表扫的速率降低,因此需要慎垂考虑。1)创建分区表,以减少对数据块的访问实验:1、准备试验条件一创建表t_lCREATETABLEt_l.ASSELECTROWNUMrn,a.*FROMall_objectsaORDERBYobject_nameDESC;■■创建表关丁rownum索引CREATEINDEXind_t_lONt_l(rn

6、);■■创建表表t_2CREATETABLEt_2ASSELECT*FROM(SELECTROWNUMrn,a.*FROMall_objectsa)ORDERBYrnASC;■■创建t_2表关于rownum索引CREATEINDEXind_t_2ONt_2(rn);••分析两张表及其索引EXECDBMS_STATS・gather_table_stats(USERJ1T_11);EXECDBMS_STATS・gather_table_stats(USER>'T_2');EXECDBMS_STATS・gather_index_stats(USER,'IND_T_11);EXECDBM

7、S_STATS.gather_index_stats(USER,'IND_T_2');■■说明:两个表的区别就是t_2表中的rn是有序的,刚刚建立七_2表的索引一致2、执行查询操作SQL>setautottraceonlystat;SQL>SELECT*FROMt_lWHERErnBETWEEN100AND120;己选择21行。统计信息0recursivecalls0dbblockgets17consistentgets0physicalreads0redosize1807byt

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。