二元高度(binary height)

http://book.51cto.com/art/200812/104308.htm


2.6  二元高度(binary height)

索引的二元高度对把ROWID返回给用户进程时所要求的I/O数量起到关键作用。二元高度的每个级别都会增加一个额外的读取块,而且由于这些块不能按顺序读取,它们都要求一个独立的I/O操作。在图2-1中,我们检索一个二元高度为3的索引,这样会返回一行数据给用户,同时有4个块被读取:3个来自索引,一个来自表。随着索引的二元高度的增加,检索数据所要求的I/O数量也会随之增加。

在对索引进行分析后,可以通过查询DBA_INDEXES的blevel列查看它的二元高度:

 
图2-1  具有二元高度或blevel=3的索引(级别3是树叶块驻留的级别)
XECUTE DBMS_STATS.GATHER_INDEX_STATS ('SCOTT','EMP_ID1');
PL/SQL procedure successfully completed.
select      blevel, index_name
from        dba_indexes
where       index_name = 'EMP_ID1';
BLEVEL   INDEX_NAME
----------  ------------------------------
0   EMP_ID1

技巧:

对索引或者表进行分析可以得到索引的二元高度。使用USER_INDEXES视图里的blevel列可以检查所有索引的二元高度。

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

技巧:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值