数据库服务器技术之查询优化详解
1. B树搜索与空间优化
在数据库服务器中,对于B树或B+树的搜索采用了一种特殊的双指针技术。其中一个指针直接指向包含与键值Ki对应的元组的块,从而中断搜索;另一个指针则继续在包含大于Ki且小于Ki + 1的键值的子树中进行搜索。第一个指针P0指向键值小于K1的子树,最后一个指针PF指向键值大于KF的子树。这种技术不仅节省了索引页面的空间,还能在中间节点找到给定键值时终止搜索,无需遍历每一层。
通常,事务从根节点到指定叶子节点遍历B树或B+树的效率是令人满意的。因为存储树的前几层的页面由于其他事务的操作,常常会留在缓冲区中。而且,事务通常只是读取这些页面,通过锁定机制可以以共享方式访问它们。
为了优化占用空间,可以对键值进行压缩。例如,在树的高层只保留键值的前缀,在树的低层(即搜索的最后部分)只保留后缀。
2. 查询优化概述
查询优化器是数据库架构中一个重要且经典的模块。它接收用SQL编写的查询语句,首先会对查询进行分析,以识别可能存在的词法、语法或语义错误,并将这些错误提示给用户进行修正。在这个阶段,系统会访问数据字典进行语义检查,数据字典还会提供有关表大小的统计信息。
一旦查询被接受,它会被转换为内部的代数形式,此时真正的优化过程开始,主要包括以下几个阶段:
- 代数优化 :执行所有方便的代数变换,如“推”选择和投影操作,这种逻辑优化独立于系统的成本模型。
- 依赖优化 :依赖于底层支持的数据访问方法类型和所使用的成本模型。虽然一般的优化原则已经明确,但每个系统都有其独特的特点。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



