- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章: 索引与散列 基本概念 有序索引 B+-Tree 索引文件 B-Tree 索引文件 静态散列 动态散列 有序索引与散列的比较 SQL中的索引定义 多键存取 基本概念 索引机制用于加速对所需数据的存取. 例如, 图书馆中的作者目录 搜索键 – 用来在文件中查找记录的属性或属性集合. 索引文件由如下形式的记录(称为索引项)组成 索引文件一般比原始文件小的多 两种基本索引: 有序索引: 搜索键按顺序存储 散列索引: 搜索键被“散列函数”一致地分配到若干“桶”中. 索引评价度量 有效支持的存取类型, 如 在某属性上具有特定值的记录 属性值落入指定范围的记录 存取时间 插入时间 删除时间 空间开销 有序索引 有序索引: 索引项按搜索键值的顺序有序存储. 主索引: 顺序文件的记录顺序正是索引搜索键的顺序. 也称为聚簇索引 主索引的搜索键通常是主键, 但并非必要. 索引顺序文件: 带有主索引的顺序文件. 次级索引: 索引搜索键的顺序与文件的记录顺序不同. 也称为非聚簇索引 稠密索引文件 稠密索引 — 对文件中的每个搜索键值都有索引记录. 稀疏索引文件 稀疏索引: 只对某些搜索键值有索引记录. 仅当文件记录按搜索键排序才可用 为定位具有搜索键值K的记录: 找到具有比K小的最大搜索键值的索引记录 从该索引记录指向的文件记录开始顺序搜索文件 对插入和删除需要较少空间与维护开销. 查找记录一般比稠密索引慢. 一个好的折衷:针对文件的每个块建立稀疏索引的索引项, 对应于该块中的最小搜索键值. 稀疏索引文件例 多级索引 如果主索引不能一次放入内存, 存取代价就会很大. 为减少对索引记录的磁盘存取次数, 将主索引视为存储在磁盘上的顺序文件并为它建立一个稀疏索引. 外索引 – 主索引的稀疏索引 内索引 – 主索引文件 如果外索引仍太大而不能放入内存, 还可再为它创建另一层索引, 如此类推. 当插入或删除文件记录时, 各层索引都必须更新. 多级索引(续) 索引更新: 删除 如果被删除记录是文件中具有其搜索键值的唯一记录, 则需从索引中删除该搜索键. 单层索引删除: 稠密索引 – 搜索键的删除类似于文件记录的删除. 稀疏索引 – 如果存在该搜索键值的索引项, 则删除之并用文件中的下一搜索键值(按搜索键顺序)代替. 如果下一搜索键值已经存在索引项, 则直接删除. 索引更新: 插入 单层索引插入: 用被插入记录的搜索键值执行一次查找. 稠密索引 – 若该搜索键值在索引中不存在, 插入之. 稀疏索引 – 若索引对每个文件块存有索引项, 则不必修改索引, 除非需创建一个新块. 这时, 新块的第一个搜索键值插入到索引中. 多级索引的插入和删除算法是对单层索引算法的简单扩展 次级索引 经常需要查找某属性值(不是主索引的搜索键) 满足某种条件的全体记录. 例1: 在按账号顺序存储的account 数据库中, 可能希望查找某分行的全体账户 例2: 同上, 但希望查找具有指定余额或余额范围的全体账户 可建立次级索引, 它对每个搜索键值都有一索引记录; 索引记录指向包含具有该搜索键值的所有实际记录的指针的桶. 建立在balance字段上的次级索引 主索引与次级索引 次级索引必须是稠密的 索引对搜索文件记录很有益处. 更新文件时, 该文件上的每个索引都必须更新. 更新索引是数据库更新带来的开销. 利用主索引做顺序扫描很高效, 但利用次级索引做顺序扫描则代价昂贵 因为对每个记录的存取都可能导致存取一个新的磁盘块 B+-树索引文件 索引顺序文件的缺点: 当文件增大时性能降低, 因为可能创建许多溢出块. 需要对整个文件进行周期性的重组. B+-树索引文件的优点: 插入与删除时仅以较少的局部的变化来自动重组. 不需要整个文件重组来维持性能. B+-树索引的缺点: 额外的插入与删除开销, 空间开销. B+-树的优点超过了缺点, 因此被广泛使用. B+-树索引文件 (续) 从根到叶的所有路径长度相同 每个非根非叶节点有[n/2] 到n 个子节点. 叶节点有[(n–1)/2] 到n–1 个值 特殊情况: 若根非叶, 则至少有2 个子节点. 若根是叶(即树中没有其他节点), 则可有0 到(n–1) 个值. B+-树节点结构 典型节点 Ki 是搜索键值 Pi 是子节点指针 (非叶节点中)或记录/记录桶指针(叶节点). 每个节点中搜索键是有序的 K1 K2 K3 . . . Kn–1 B+-树中的叶节点 对i = 1, 2, . . ., n–1, 指针Pi 要么指向具有搜索键值Ki 的文件记录, 要么指向一个具有搜索键值Ki 的所有文件记录的指针桶. 仅当搜索键不构成主键时才需要桶结构. 如果Li, Lj 是叶节点且i j, 则Li 的搜索键
文档评论(0)