Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 24: Query Execution

Similar presentations


Presentation on theme: "Lecture 24: Query Execution"— Presentation transcript:

1 Lecture 24: Query Execution
Wednesday, November 24, 2004

2 Outline Query execution: 15.1 – 15.5

3 Two Pass Algorithms Based on Hashing
Idea: partition a relation R into buckets, on disk Each bucket has size approx. B(R)/M Does each bucket fit in main memory ? Yes if B(R)/M <= M, i.e. B(R) <= M2 M main memory buffers Disk Relation R OUTPUT 2 INPUT 1 hash function h M-1 Partitions . . . 1 2 B(R)

4 Hash Based Algorithms for d
Recall: d(R) = duplicate elimination Step 1. Partition R into buckets Step 2. Apply d to each bucket (may read in main memory) Cost: 3B(R) Assumption:B(R) <= M2

5 Hash Based Algorithms for g
Recall: g(R) = grouping and aggregation Step 1. Partition R into buckets Step 2. Apply g to each bucket (may read in main memory) Cost: 3B(R) Assumption:B(R) <= M2

6 Partitioned Hash Join R |x| S Step 1: Step 2 Step 3
Hash S into M buckets send all buckets to disk Step 2 Hash R into M buckets Send all buckets to disk Step 3 Join every pair of buckets

7 Hash table for partition
Hash-Join B main memory buffers Disk Original Relation OUTPUT 2 INPUT 1 hash function h M-1 Partitions . . . Partition both relations using hash fn h: R tuples in partition i will only match S tuples in partition i. Partitions of R & S Input buffer for Ri Hash table for partition Si ( < M-1 pages) B main memory buffers Disk Output buffer Join Result hash fn h2 Read in a partition of R, hash it using h2 (<> h!). Scan matching partition of S, search for matches. 14

8 Partitioned Hash Join Cost: 3B(R) + 3B(S)
Assumption: min(B(R), B(S)) <= M2

9 Hybrid Hash Join Algorithm
Partition S into k buckets t buckets S1 , …, St stay in memory k-t buckets St+1, …, Sk to disk Partition R into k buckets First t buckets join immediately with S Rest k-t buckets go to disk Finally, join k-t pairs of buckets: (Rt+1,St+1), (Rt+2,St+2), …, (Rk,Sk)

10 Hybrid Join Algorithm How to choose k and t ?
Choose k large but s.t. k <= M Choose t/k large but s.t t/k * B(S) <= M Moreover: t/k * B(S) + k-t <= M Assuming t/k * B(S) >> k-t: t/k = M/B(S)

11 Hybrid Join Algorithm How many I/Os ?
Cost of partitioned hash join: B(R) + 3B(S) Hybrid join saves 2 I/Os for a t/k fraction of buckets Hybrid join saves 2t/k(B(R) + B(S)) I/Os Cost: (3-2t/k)(B(R) + B(S)) = (3-2M/B(S))(B(R) + B(S))

12 Hybrid Join Algorithm Question in class: what is the real advantage of the hybrid algorithm ?

13 Indexed Based Algorithms
Recall that in a clustered index all tuples with the same value of the key are clustered on as few blocks as possible Note: book uses another term: “clustering index”. Difference is minor… a a a a a a a a a a

14 Index Based Selection Selection on equality: sa=v(R)
Clustered index on a: cost B(R)/V(R,a) Unclustered index on a: cost T(R)/V(R,a)

15 Index Based Selection B(R) = 2000 T(R) = 100,000 V(R, a) = 20 Example:
Table scan (assuming R is clustered): B(R) = 2,000 I/Os Index based selection: If index is clustered: B(R)/V(R,a) = 100 I/Os If index is unclustered: T(R)/V(R,a) = 5,000 I/Os Lesson: don’t build unclustered indexes when V(R,a) is small ! cost of sa=v(R) = ?

16 Index Based Join R S Assume S has an index on the join attribute
Iterate over R, for each tuple fetch corresponding tuple(s) from S Assume R is clustered. Cost: If index is clustered: B(R) + T(R)B(S)/V(S,a) If index is unclustered: B(R) + T(R)T(S)/V(S,a)

17 Index Based Join Assume both R and S have a sorted index (B+ tree) on the join attribute Then perform a merge join called zig-zag join Cost: B(R) + B(S)


Download ppt "Lecture 24: Query Execution"

Similar presentations


Ads by Google