数据库系统教程(第3版)-施伯乐-DB-第6章-札记(1).docVIP

  • 5
  • 0
  • 约3.11千字
  • 约 6页
  • 2017-10-16 发布于浙江
  • 举报

数据库系统教程(第3版)-施伯乐-DB-第6章-札记(1).doc

自学札记 数据库系统的一个目标是使用户能简单、方便、容易地存取数据库中的数据。用户访问数据库,不必关心数据库的存储结构和具体实现方式。但是,用户如能了解数据库的存储结构,那么对于数据库就会用一个比较完整的了解,进而拓宽知识面。本文主要讨论DB在磁盘中的文件组织结构、索引、散列技术和多键访问。 一、DB在磁盘中的文件组织结构: 一个文件中可能有成千上万个记录,这些记录如何安排,对于记录的查找、插入和删除等操作的速度和效率的影响非同小可。DB在磁盘中的文件组织结构 图1  索引的分类 现分别考察稠密索引、稀疏索引,多级索引和辅助索引。 稠密索引和稀疏索引的特点和主要优缺点如表2所示: 方式 特点 主要优点 主要缺点 稠密索引 对主文件中每个查找键值建立一个索引记录 查找速度比较快 由于查找键值与索引一一对应,较耗空间 稀疏索引 对若干个查找键的值才建立一个索引记录 占用空间少,插入、删除操作时指针的维护量相对较少 查找速度比较慢 表2  稠密索引和稀疏索引 我们知道,虽然可以采用稀疏索引有效地减少索引所耗的空间,但可能建成的索引还是很大,以至于查询效率仍然不高。这时,我们可以采取一种对主索引再建立一级稀疏索引的方法解决这个问题。即先在外层索引中用二分法查找,找到一小于或等于给出的查找键值的最大的一个键值;然后再到内层索引块中查找;在内层索引块也可以利用二分法查找相应的索引记录,最后再到主文件中查找。如果再增加一层稀疏索引,也就构成了“多级索引”,当数据量很大时,用它来查找,速度将是很快的。 在主索引中,具有相同查找键值的记录在同一块中或相邻的快中,因而查找速度较快。而在辅助索引中,具有相同查找键值的记录分散在文件的各处,故查找起来很不方便,因此需要一座中间“桥梁”——桶——将索引文件和主文件联系起来。每个桶一端连接着索引记录的指针,而另一端则存放着主文件中具有此查找键值的记录的地址。辅助索引虽然改善了系统的查询效率和查询方式,但也给系统带来了很大的负担。因而,数据库设计者应在查询效率和修改的代价方面作出权衡,以选择合适的索引结构。 现在,让我们回到对多级索引的讨论中。多级索引对于改善索引结构的性能起到了很大的作用,它采用了目前广泛流行的一种技术,称为平衡树技术。平衡树又可分为两类:B+树和B树。表3说明了B+树和B树的组织结构(以m阶树为例)。 树型结构 具体组织方式 B+树 树的组织方式: 每个结点中至多有m-1个查找键值和m个指针。 叶结点的组织方式: 叶结点都在同一层,且其中的指针指向主文件中的记录;每个叶结点中至少应有「」「」 方 式 具体方法 查找操作 若查找键值为K1,桶地址表的散列前缀为i,则首先求出h(K1)的前i位值m,然后沿着桶地址表位置m处的指针到达某一个桶中去找记录 插入操作 要插入一个查找键值为K1的记录,首先要用查找操作找到因插入的桶,若桶以装满记录,则必须分裂桶,重新分布记录,并插入新记录。分裂桶的过程可分两种情况考虑(具体情况不再赘述) 删除操作 要删除查找键值为K1的记录,首先用查找方法,将记录找到,然后将记录从所在的桶内删除。若删除后,桶为空,则这个桶也要被删除,这也就是桶的合并操作。有时很可能会引起桶地址表的收缩 表5  可扩充散列的查找、插入、删除操作 图3为文件的可扩充散列结构: 图3  文件的可扩充散列结构     与其他索引或散列技术比较,可扩充散列技术有两个显著的优点: 随着文件的数据量增长,仍然保持原有的操作和查询性能。 空间开销达到最小。存储记录的桶和溢出桶空间都能动态地申请或释放。 其缺点是: 比静态散列多了一个桶地址表。由于桶的编号在桶分裂或合并后不断变化,因此桶地址要存储在桶地址表中,以利查找。但此间接访问对文件的性能影响较小,系统和用户都能接受。 在讨论可扩充散列时,我们可以结合数据结构中的“二叉Trie树”一起考虑。我们可 以将“二叉Trie树”看成是一个通用的数据结构模型,而将可扩充散列看作是“二叉Trie树”的一个实际应用。比如说,“二叉Trie”树中叶子结点的个数对应于可扩充散列结构中桶的个数;桶地址表的散列前缀对应于 “二叉Trie树”当前的深度…… 总之,可扩充散列允许桶空间随时申请或释放,能够很有效地适应快速增长的数据库需求,不仅减少了维护、改组和查询数据库的代价,而且提高了空间的利用率,因而广泛地应用于数据库系统中。 四、多键访问:   我们称只使用一个查找键来组织文件和处理查询的索引或散列技术为单键查询,虽然此种方法在多索引情况(即查找条件不止一个,例如:在学生表中查找年龄为20岁,且姓名以“王”开头的同学的学号)中都能使用,但有一个致命的缺陷:假设年龄为20岁的记录很多,而姓名

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档