Oracle 索引基本原理(3)


表中索引列的非NULL值数量的增加和索引列中值的范围狭窄是二元高度增加的主要原因:索引上如果有大量被删除的行,它的二元高度也会增加。重建索引可能使二元高度降低。虽然这些步骤减少了针对索引执行的IO数量,但对性能的改进却可能很小。如果一个索引中被删除的行接近20%~25%,重建索引会降低二元高度以及在一次IO中所读取的索引块中的空闲空间.

数据库中的数据块越大,索引的二元高度就越低。二元高度每增加一个级别,在DML操作期间就会额外增加性能成本。

关于BLEVEL和索引高度的更多细节
B树级别是指一个索引从它的根块到其叶块的深度。0层表名根块和叶块在同一个级别。所有索引都是从一个叶块开始,这时它代表一颗0级的B树。当行被逐渐添加到索引中时,oracle会把数据放到叶块中,随着不断有数据插入,一旦初始叶块填满,两个新块就会被创建出来,oracle以两种方式处理这个操作,90-10或50-50索引分裂法。被插入的值决定了使用哪种分裂方式:
 1.如果新值大于该索引中已有任何值,那么oracle将使用90-10分裂法,把当前块中的值复制到一个新块,将新值放到另外一个块中。
 2.如果新值不是该索引中最大的值,那么oracle会使用50-50分裂法,将较小的一半索引值放到一个新块中,将较大的另一半索引值放到另外一个新块中。
 只有在根节点分裂的情况下,索引会创建两个新块,当前的根块的内容被分割到两个新的分支块中,形成一个更高的索引树的顶部。

1.更新操作对索引的影响
索引只有在表中组成索引的列被更新时才会受到影响。当更新组成索引的表列时,索引上会执行一个删除和插入的操作。旧值被标记为已删除,与原索引条目对应的一个新值被插入。因此,索引上没有真正意义上的"更新"。索引条目通过oracle的延迟块清理功能得以清理。只有在索引条目被删除而且块被清理后,索引块中的空间才能被新条目重用。

2.删除操作对索引的影响
索引上的删除操作,并没有真正从索引中删除条目以获得空间。实际上,当表中一条记录被删除时,相应的索引条目被标记为已删除,在清理过程清理之前,仍然保留在索引中。

3.更新和删除操作对索引的影响
删除操作仍然把数据块留在叶块中,需要由清理过程清理。
在同一事务中对索引的删除/插入操作,往往会明显增大索引的大小,这种情况一般发生在同一事务执行大量这样的操作。删除操作自身不会引起索引高度或BLEVEL的增加,只不过反应了如何重用被删除行所占空间的更大的问题。所以最好拆分原事务,这有助于重用空间,不会导致索引人为地增长到大于它应有的大小。
 索引块分裂会产生大量的重做日志。
 使用本地管理的表空间以避免碎片和极少重建索引。

4.数据块大小对索引的影响
从分支块到根块都可能分裂,这种行为会导致索引的高度和分支的增加。分支索引块分裂的次数,可以通过使用较大的索引块尽量减少,这是一些专家认为应使用更大的块创建索引表空间的原因。如果每个索引块能容纳更多的数据索引分裂的出现的频率将低很多,因此可以减少索引的分支和树叶块数。将索引移到具有更大的块大小的表空间时需要重建,这时会删除所有被标记为删除的条目,压缩索引使用空间,包括回收被标记为已删除的条目的空间和条目已经删除但还没有回收或重用的空间。

八.使用直方图
在分析表或索引时,直方图用于记录数据的分布。通过获得该信息,基于成本的优化器就可以针对查询条件决定如何使用索引。如果条件返回少量行,就采用索引;如果条件返回许多行,就不采用索引。直方图的使用不限于索引。表的任何列上都可以构建直方图.

构造直方图最主要的原因就是帮助优化器在表中数据出现严重偏斜时做出更好的规划。如果一到两个值构成了表中的大部分数据,使用相关的索引就可能无法协助减少满足查询所需的IO数量,创建直方图可以让基于成本的优化器知道何时使用索引才最合适,或者何时根据where子句中的条件值,表中80%的记录会返回。

首先要指出它的大小,该大小与直方图所需的桶数相关。每个桶包含列值和行数的相关信息。
execute dbms_stats.gather_table_stats('scott','company',METHOD_OPT => 'FOR COLUMN SIZE 10 company_code');

oracle 的直方图分为高度均衡和频率两种。高度均衡直方图里的所有桶都有相同的行数。桶的起点和终点取决于包含这些值的行数。频率的直方图规定每个存储桶的值的范围,然后统计出这个范围内的行数,这并不是一个理想的选择。
如果使用频率均衡方式的桶,多数桶都只有3行记录;有一个桶却有73行记录。如果使用高度均衡方式的桶,每个桶都有相同数目的行,多数桶的终点都是1430,这也反映了数据的偏斜分布。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/54a351932523bfb76c2e30d845e73b6b.html