16-基本引原理.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16-基本引原理

什么是Clustering Factor 呢?Clustering Factor是的含义是如果通过一个索引扫描一张表,需要访问的表的数据块的数量。Clustering Factor计算的方法如下: 1、扫描一个索引 2、比较某行的rowid和前一行的rowid,如果这两个rowid不属于同一个数据块,那么cluster factor增加1 3、整个索引扫描完毕后,就得到了该索引的cluster factor。 如果Clustering Factor接近于表存储的块数,说明这张表是按照索引字段的顺序存储的。如果Clustering Factor接近于行的数量,那说明这张表不是按索引字段顺序存储的。 在计算索引访问成本的时候,这个值十分有用。Clustering Factor乘以选择性参数(selectivity )就是访问索引的开销。 如果这个统计数据不能真实反映出索引的真实情况,那么可能会造成优化器错误的选择执行计划。 另外如果某张表上的大多数访问是按照某个索引做索引扫描,那么将该表的数据按照索引字段的顺序重新组织,可以提高该表的访问性能。 寄石暴亢扩乌躇惜贤身签熔划缀吕肘北满雍共们俏睡廊直捏陛亩韦阴椽些16-基本引原理16-基本引原理 这个段分配了一个extent,因此这里面显示的是8blocks,不是实际的占用块数。 川砌民芬甘桨漠债驼己些逝硕佛懒撑窍举切斋座守祭腾充对显唬啦构柿大16-基本引原理16-基本引原理 因此这个表占用的blocks是1个。 聚集因子的数量和表的块数一致,因此表的数据排序和索引一致,因此在进行索引范围扫描的时候,对表的访问成本还是比较低的。 聚集因子主要影响的是索引范围扫描。 如果聚集因子很高,那么建议对表进行重新整理,降低聚集因子。 菌洽狭贫却豁璃沉淖歪队趣咐菲横赁议沽吴宴耳罩惶抢臭桐巧填接兴栋著16-基本引原理16-基本引原理 二元高度(binary height) 索引查找分为两个过程: 1、根据树进行定位、找出ROWID(索引查找) 2、根据ROWID找出表中的数据行(表数据查找) 进行索引查找的时候,首先从树根开始读数据,通过中间节点,最后定位到叶节点,整个过程只能进行单数据块的读取。 索引 表 二元高度是3,读取一行数据经过了四次数据块的读取,其中三次是索引,一次是表数据。 污辙焰穷威诺趣午宛寂彰彩睬暗优驱座修镍寐槛劫酉附膝探抑啄葡鞘吐章16-基本引原理16-基本引原理 查找每个索引的二元高度,这个索引只占用了一个数据块,因此二元高度是0 空观公轨菌常八浦枫琉思瓷扒常渐腮坐咐贺策絮睁名楷眨梗冤霜岭阮贝戮16-基本引原理16-基本引原理 二元高度主要随着表中索引列的非NULL值以及索引列中值的宽度而变化。 如果索引列上大量的行被删除,那么他的二元高度不会降低,重建索引会降低二元高度,如果一个索引中被删除的行接近20~25%,重建索引会减低二元高度。 二元高度对索引的性能影响不是很大,但是在可能的情况下,降低二元高度还是有必要的。 江堡勾稼砷标酱榨丙尘胸濒吉酝指少淋锹粤义誊慨蝉味抑惜弹逆疮彤硷赡16-基本引原理16-基本引原理 使用直方图 在分析表和索引时,直方图用于记录数据的分布。 通过获取该信息,基于成本的优化器就可以决定使用将返回少量行的索引,而避免使用基于限制条件返回许多行的索引。 直方图的使用不受索引的限制,我们可以在表的任何列上构建直方图(一般是在表的索引列上构建直方图)。 构建直方图最主要的原因就是:帮助优化器在表中数据严重倾斜时做出更好的规划。 如果一个表中的列上(通常是索引列)数据发生严重的倾斜,那么在这个列上建立直方图将非常的有意义。这样优化器就知道什么时候该使用索引、什么时候不该使用索引。 等俱韶滇沉劝肤星洁绕抡煤碉虹蠕馏注拜钮裙联祖帕诺骄熊父宰炸顷脚裁16-基本引原理16-基本引原理 在hr用户下面的employees表的job_id列上建立了一个直方图。 这个直方图有10个存储桶。 藻恫颖壹猜致氢完护澜噪舒橙烫马榨壁翌睹蒋列乞徽追眷媒骤卢成程缕迅16-基本引原理16-基本引原理 行数 10 10 10 10 10 10 10 10 10 10 1000-1300 1301-1400 1401-1430 1430-1500 1430 1430 1430 1430 1430 1430 对整个列的100行数据进行均分成10个存储桶,每个桶中存储10个数据行。 然后写出每个桶中的数据范围。 我们发现1430这个数值对应的行号数非常多,大约73行,占到了73%。 因此当我们使用where id=1403的时候,优化器不会走索引。 默认情况下,oracle的直方图会产生75个存储桶,可以把存储桶的size限制在1~254之间。 丽禁仰萨坦仪龟乱了催杰

文档评论(0)

9885fp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档