Lecture 11. Query Processing

Meaturing of query cost

t T t_T tT – time to transfer one block. (≈ 0.1ms)
t S t_S tS – time for one seek. (≈ 4ms)
Cost for b block transfers plus S seeks : b ∗ t T + S ∗ t S b* t_T + S* t_S btT+StS

在这里插入图片描述

External merge sort

cost:
M: 缓冲区能容纳的磁盘块数
b r b_r br: 关系r中记录的磁盘块数
b b b_b bb: 每次从一个归并段读取的数据数
merge passes required:    ⌈ l o g M − 1 ( b r / M ) ⌉ \; \lceil log_{M-1}(b_r/M) \rceil logM1(br/M)
total number of block transfer:    b r ( 2 ⌈ l o g M − 1 ( b r / M ) ⌉ + 1 ) \; b_r(2\lceil log_{M-1}(b_r/M) \rceil + 1) br(2logM1(br/M)+1)
total number of seeks:    2 ⌈ b r / M ⌉ + ⌈ b r / b b ⌉ ( 2 ⌈ l o g M − 1 ( b r / M ) ⌉ − 1 ) \; 2\lceil b_r/M \rceil + \lceil b_r / b_b \rceil (2 \lceil log_{M-1}(b_r/M) \rceil -1 ) 2br/M+br/bb(2logM1(br/M)1)

Join

元组数较少的关系作为外层关系时效果较好
nested-loop join 嵌套循环连接
n: 元组数(记录数)
b: 磁盘块数
worst case:    n r ∗ b s + b r \; n_r * b_s+b_r nrbs+br block transfer, plus n r + b r n_r +b_r nr+br disk seeks
best case:    b r + b s \; b_r + b_s br+bs block transfer, plus 2 seeks

block nested-loop join 块嵌套循环连接
worst case:    b r ∗ b s + b r \; b_r * b_s+b_r brbs+br block transfer, plus 2 ∗ b r 2*b_r 2br seeks
best case:    b r + b s \; b_r + b_s br+bs block transfer, plus 2 seeks
improve:    ⌈ b r / ( M − 2 ) ∗ b s + b r ⌉ \; \lceil b_r / (M-2) * b_s + b_r \rceil br/(M2)bs+br block transfer, plus 2 ⌈ b r / ( M − 2 ) ⌉ 2\lceil b_r / (M-2 ) \rceil 2br/(M2) seeks

indexed nested-loop join 索引嵌套循环连接
c: 用连接条件对s进行单次选择操作的代价
cost of join:    b r ( t T + t S ) + n r ∗ c \; b_r(t_T+t_S)+n_r*c br(tT+tS)+nrc

merge-join 排序归并连接
b r + b s b_r+b_s br+bs block transfers + ⌈ b r / b b ⌉ + ⌈ b s / b b ⌉ \lceil b_r/b_b \rceil + \lceil b_s / b_b \rceil br/bb+bs/bb seeks

hash-join
M > n h + 1 M>n_h +1 M>nh+1 M > ( b s + M ) + 1 M>(b_s+M)+1 M>(bs+M)+1 M > b s M>\sqrt {b_s} M>bs 时不需要递归划分
不需要递归划分时: 3 ( b r + b s ) + 4 ∗ n h 3(b_r + b_s) +4 * n_h 3(br+bs)+4nh block transfers + 2 ( ⌈ b r / b b ⌉ + ⌈ b s / b b ⌉ ) 2( \lceil b_r / b_b \rceil + \lceil b_s/b_b \rceil) 2(br/bb+bs/bb) seeks
需要递归划分时: 2 ( b r + b s ) ⌈ l o g M – 1 ( b s ) – 1 ⌉ + b r + b s 2(b_r + b_s) \lceil log_{M–1}(b_s) – 1 \rceil + b_r + b_s 2(br+bs)logM1(bs)1+br+bs block transfers + 2 ( ⌈ b r / b b ⌉ + ⌈ b s / b b ⌉ ) ⌈ l o g M – 1 ( b s ) – 1 ⌉ 2(\lceil b_r / b_b \rceil + \lceil b_s / b_b \rceil ) \lceil log_{M–1}(b_s) – 1 \rceil 2(br/bb+bs/bb)logM1(bs)1 seeks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值