当前课程知识点:高级数据库系统 >  第一讲 数据文件的组织与索引技术 >  3. B+树索引 >  1-3 B+树索引(1)

返回《高级数据库系统》慕课在线视频课程列表

1-3 B+树索引(1)在线视频

1-3 B+树索引(1)

下一节:1-3 B+树索引(2)

返回《高级数据库系统》慕课在线视频列表

1-3 B+树索引(1)课程教案、知识点、字幕

与顺序索引相对应的是一种简单的辅助索引结构

这种索引结构一般建立在非码属性上,是一种非聚集的稠密索引

因为是在非码属性上,非聚集的索引

所以索引的顺序与文件的存储顺序是不一样的

也因此呢,这种索引必须是稠密索引

如图所示,那么索引文件的顺序与数据文件的顺序是不一样的

那么正因为它建立在非码属性上

所以非码属性就有可能会取重复的值

比如说这里面10有两个,20有三个等等

有的时候为了减小这个索引文件的大小

我们只为每一个码值建立索引,那么加入一个中间层

这个中间层就存储每一个键值所对应记录的所有的指针

那么这就是简单的辅助索引结构

下面我们要为大家介绍一种比较重要的索引结构,B+树索引

这种索引结构在数据库领域里面运用的非常广泛

很多的商用数据库管理系统,比如像SQL Server,ORACLE等等

都使用它作为这个索引结构,那么B+树索引是一种多级索引

它采用的是平衡树结构

那么在这个树中,每一个节点它的结构都是相同的

像这个图所示,每一个节点都包含n个指针和n-1个键码

这n-1个键码它都是从小到大依次排列

B+树它的节点类型包含三种

第一种呢,是根节点,第二种是非叶节点,第三种是叶节点

根节点我们分别来说一下,根节点的结构呢

和叶节点,非叶节点它们都是不同的

首先对于根节点来说,从充满度上来讲,根节点可以少于半满

但是除非这棵树只有一个节点,否则这棵树必须至少要包含两个指针

比如这个图所示,那么根节点的每一个指针都指向

叶节点或者是非叶节点,那么这是根节点的结构

那么下面我们来看一下它的叶节点的结构

从充满度上来讲,每一个叶节点它必须包含的键指数达到半满以上

另外呢,叶节点和叶节点之间必须要通过指针连接起来

也就说每一个叶节点都通过最后一个指针和下一个叶节点连接起来

这样呢,所有的叶节点就会按照搜索码值从小到大的顺序连接起来

形成一个稠密索引,那么叶节点的其他指针指向什么地方呢

每一个叶节点的其他指针比如说像pi

它指向的是码值为ki的所在记录的存储地址

比如这个图所示,比如说,Brighton这个码值前面的这个p

它指向的是Brighton所在的这条记录的存储地址

这就是叶节点的结构,下面我们来看一下非叶节点的结构

B+树的非叶节点呢,是在叶节点的基础之上形成的一个多级索引结构

从充满度上来讲,非叶节点也需要键码的总数要达到半满以上

非叶节点的每一个指针都指向叶节点或者是下一个非叶节点

这就是B+树的非叶节点的结构

根据这样的一些要求呢,我们就可以建立一个完整的B+树

这样的一个索引结构,那么下面我们来看一下B+树索引的特点

那么整个B+树既可以作为主索引,也就是聚集索引

也可以作为辅助索引使用,也就是说它可以建立在码属性上

也可以建立在非码属性上,但是作为主索引的时候,它可以是稀疏索引

也可以是稠密索引,也就是说它的叶子节点可以是按块建立索引

也可以按照搜索码值来进行建立

那么下面我们来看一下B+树的查询

B+树它可以支持范围查询,也可以支持随机查询

支持范围查询,比如说它可以支持某一个搜索码值大于A小于B

这样的一种查询,那么针对这样的一种查询

我们只要找到A和B所在的叶节点

在这棵树的叶节点它的范围,那么A和B之间的所有叶节点

这些记录都是我们要寻找的结果,所以它支持范围查询是没有问题的

那么当然,它也支持随机查询

比如要支持一个搜索码值等于A,这是非常容易

那么我们直接从根节点遍历到叶节点

找到键值等于A的这样一条记录就可以了

所以从这个查询这个角度来说,B+树的查询功能还是比较强大的

B+树的查询是从根节点向叶节点的一个遍历过程

那么它的代价是什么样子的呢

因为B+树的查询是一个遍历的过程

所以查询的代价就是一个遍历树的这样的一种代价

也就是说它的代价就是树的高度,我们用一个公式来表达

这个公式里面呢k代表的是关系里面所有键值的数量

那么n-1是每一个节点键码的数量,也就是说我们查询的树的高度

那么下面呢,我们来看一下B+树的维护过程

B+树的维护是指我们插入或者删除记录的时候

我们如何维持这个索引结构它的标准定义

也就是说B+树的结构不能变化,必须保证它定义的要求

那么一般来说,当我们插入记录的时候,B+树会产生节点的分裂

那么当我们删除记录,键值要删除的时候

会产生节点的合并,下面我们就要用例子来说明一下

那么在插入和删除记录的时候,那么B+树的维护过程

高级数据库系统课程列表:

第一讲 数据文件的组织与索引技术

-1. 数据文件的组织

--1-1 数据文件的组织

-2. 索引的概念与分类

--1-2 索引的概念与分类

-3. B+树索引

--1-3 B+树索引(1)

--1-3 B+树索引(2)

-4. 散列索引

--1-4 散列索引

-5. 小结

--html

-6.练习--作业

第二讲 查询处理及优化

-1. 查询代价的测量及查询处理过程概述

--2-1 查询代价的测量及查询处理过程概述

-2. 关系操作的基础算法

--2-2. 关系操作的基础算法(1)

--2-2. 关系操作的基础算法(2)

-3. 查询表达式的运算

--2-3 查询表达式的运算

-4.查询优化机制

--2-4 查询优化机制

-5.小结

--html

-6.练习--作业

第三讲 数据管理与恢复技术

-1. 数据库的故障及可恢复模型

--3-1. 数据库的故障及可恢复模型

-2. 事务及日志的相关概念

--3-2. 事务及日志的相关概念

-3. 基于undo日志的恢复机制

--3-3. 基于undo日志的恢复机制

-4. 基于redo日志的恢复机制

--3-4. 基于redo日志的恢复机制

-5. 小结

--html

-6. 练习--作业

第四讲 事务并发调度的相关概念

-1. 并发调度及相关概念

--4-1. 并发调度及相关概念

-2. 可串行化调度

--4-2. 可串行化调度

-3. 冲突可串行化调度

--4-3. 冲突可串行化调度

-4. 小结

--html

-5. 练习--作业

第五讲 基于封锁的并发控制机制

-1. 锁的概念及封锁的原理

--5-1. 锁的概念及封锁的原理

-2. 两阶段锁协议

--5-2. 两阶段锁协议

-3. 多粒度锁及意向锁

--5-3. 多粒度锁及意向锁

-4. 死锁的处理

--5-4. 死锁的处理

-5. 小结

--html

-6. 练习--作业

第六讲 并发控制的其它机制

-1. 基于时间戳的调度

--6-1. 基于有效性检验的调度

-2. 基于有效性检验的调度

--6-2. 基于时间戳的调度

-3. 小结

--html

-4. 练习--作业

第七讲 分布式数据库基本概念

-1. 分布式数据库系统的产生及定义

--7-1. 分布式数据库系统的产生及定义(1)

--7-1. 分布式数据库系统的产生及定义(2)

-2. 分布式数据库系统的模式结构与功能结构

--7-2. 分布式数据库系统的模式结构与功能结构

-3. 分布式数据库系统中存在的技术问题

--7-3. 分布式数据库系统中存在的技术问题

-4. 小结

--html

-5. 练习--作业

第八讲 分布式数据库的设计

-1. 分布式数据库的设计方法、内容和目标

--8-1. 分布式数据库的设计方法、内容和目标

-2. 自顶向下方法构建数据库

--8-2 . 自顶向下方法构建数据库

-3. 数据的分片和分布设计

--8-3. 数据的分片和分布设计(1)

--8-3. 数据的分片和分布设计(2)

-4. 分布式数据库设计案例讲解

--8-4. 分布式数据库设计案例讲解(1)

--8-4. 分布式数据库设计案例讲解(2)

--8-4. 分布式数据库设计案例讲解(3)

-5. 小结

--html

-6. 练习--作业

第九讲 分布式数据库查询机制

-1. 分布式查询处理的步骤和代价

--1. 分布式查询处理的步骤和代价

-2. 基于等价变换的查询优化

--2. 基于等价变换的查询优化

-3. 基于半连接算法的查询优化

--3. 基于半连接算法的查询优化

-4. 基于直接连接算法的查询优化

--4. 基于直接连接算法的查询优化

-5. 小结

--html

-6. 练习--作业

第十讲 分布式数据库的事务管理及恢复机制

-1. 分布式事务概述

--1. 分布式事务概述

-2. 分布式事务的两阶段提交协议

--2. 分布式事务的两阶段提交协议

-3.分布式并发控制概述

--3.分布式并发控制概述

-4. 并发控制的加锁机制

--4. 并发控制的加锁机制

-5. 并发控制的时标技术

--5. 并发控制的时标技术

-6. 小结

--html

-7.练习--作业

高级数据库技术期末试题

-试题--作业

1-3 B+树索引(1)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。