Oracle 11g Concepts 笔记3:什么是B树索引及其介绍

上一篇笔记里我们简单了解了Oracle索引的分类及唯一索引的特征,在本篇里我们简单了解什么是B-Tree Indexes及对其作一基本介绍。

B-trees, short for balanced trees, are the most common type of database index.顾名思义,B-Tree是一个平衡树的结构注意这里的B表示Balanced平衡的意思,而不是Binary二叉】,B树索引也是Oracle里最为常见的索引类型。B树索引里的数据是已经按照键字或者是被索引字段事先排好序存放的,默认是升序存放,也解释了为什么我们在创建索引的时候有可能会用到数据库的临时表空间的临时段。下面,看一幅B树索引的内部结构图:

b-tree-index

对于这幅B树存储结构图作以下几点介绍:

1 索引高度是指从根块到达叶子块时所遍历的数据块的个数,而索引层次=索引高度-1;本图中的索引的高度是3,索引层次等于2;通常,索引的高度是2或者3,即使表中有上百万条记录,也就意味着,从索引中定位一个键字只需要2或3次I/O,索引越高,性能越差;

2 B树索引包含两种数据块儿:分枝块(Branch Block)和叶子块(Leaf Block);

3 分枝块里存放指向下级分枝块(索引高度大于2,即有超过两层分枝块的情况)或者直接指向叶子块的指针(索引高度等于2,即层次为1的索引);

4 叶子块,就是位于B树结构里最底层的数据块。叶子块里存放的是索引条目,即索引关键字和rowid,rowid用来精确定位表里的记录;索引条目都是按照索引关键字+rowid已经排好序存放的;同一个叶子块里的索引条目同时又和左右兄弟条目形成链表,并且是一个双向链表;

5 B树索引的所有叶子块一定位于同一层上,这是由B树的数据结构定义的。因此,从根块到达任何一个叶子块的遍历代价都是相同的;

评论 (1)

  • zhouyf| 2011年11月4日

    这个图很漂亮~收了
    3Q

  • 发表评论

    邮箱地址不会被公开。 必填项已用*标注