查询处理(二)

Posted by sunshine on 2020-09-04
Words 780 and Reading Time 2 Minutes
Viewed Times

代价度量

影响一次查询执行的代价有很多,磁盘读取,CPU执行,并行/分布式数据库系统中的通信代价等。有些代价难以度量,并且并非主要代价,这里使用磁盘搜索次数和传送磁盘块数来度量查询执行计划的代价。假设磁盘子系统传输一个磁盘块的时间为$t_s$,一次磁盘搜索的时间为$t_T$。

选择运算的代价估计

考虑所有元组都存在单一文件关系上的一个选择运算。

注意一般$B^+$树非叶节点小于总结点数的1%,$B^+$树 n的大小一般等于磁盘块大小。

算法 开销 原因
$A_1$ 线性搜索 $t_s+b_r\times t_T$ 一次初始搜索,加$b_r$次块传输
$A_2$ 线性搜索,码等值比较 平均情形: $t_s+(b_r/2)\times t_T$ 由于最多只有一条记录满足条件,搜索到数据就能终止搜索
$A_3$ $B^+$树主索引,码等值比较 $(h_i+1)(t_T+t_s)$ $h_i$是$B^+$树的高度。根据$B^+$树查找记录的算法,查找时,穿越整棵树的高度,每次穿越都需要一次搜索和传输找到结点,最后一次传输和搜索找到记录
$A_4$ $B^+$树主索引,非码等值比较 $h_i(t_T+t_s)+b\times t_T$ 由于数据按主索引存储不需要额外的搜索,b是存储比较值的块数
$A_5$ $B^+$树辅助索引,码等值比较 $(h_i+1)(t_T+t_s)$ 和主索引类似
$A_6$ $B^+$树辅助索引,非码等值比较 $(h_i+n)(t_T+t_s)$ n表示取到的记录数,辅助索引索引顺序于存储顺序不同,查找到n条记录,就需要n次磁盘传输和磁盘搜索,再加上$B^+$树高度的穿越
$A_7$ $B^+$树主索引,比较 $h_i(t_T+t_s)+b\times t_T$ 根据$B^+$树取数据的过程,符合条件的索引值是连续的,存储的位置也是连续的,不管是等值比较还是比较,过程都类似,且取数据的过程都不需要额外的磁盘搜索
$A_8$ $B^+$树辅助索引,比较 $(h_i+n)(t_T+t_s)$

从表中可以看出一些特点

  • 不论是$B^+$树主索引 还是 $B^+$树辅助索引,进行非码等值比较时和比较的开销都相同,这是由$B^+$树搜索过程决定的。不同的是主索引的存储顺序和记录存储顺序相同,相较于辅助索引,取数据不需要额外的磁盘搜索操作
  • 对于等值比较,码等值比较由于只有0个或一个匹配项,不管是辅助索引还是主索引,都不会存在由于数据存储顺序出现的额外的磁盘搜索,非码等值比较有0个或多个匹配项,辅助索引上的非码等值比较由于数据存储顺序和索引顺序不同,每个匹配项都需要一次磁盘搜索和磁盘传输

This is copyright.