Query Processing Notes. Query Processing The query processor turns user queries and data...

144
Query Processing Notes

Transcript of Query Processing Notes. Query Processing The query processor turns user queries and data...

Page 1: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Query Processing Notes

Page 2: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Query Processing

• The query processor turns user queries and data modification commands into a query plan - a sequence of operations (or algorithm) on the database– from high level queries to low level commands

• Decisions taken by the query processor– Which of the algebraically equivalent forms of a

query will lead to the most efficient algorithm?– For each algebraic operator what algorithm should

we use to run the operator?– How should the operators pass data from one to

the other? (eg, main memory buffers, disk buffers)

Page 3: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example

Select B,D

From R,S

Where R.A = “c” S.E = 2 R.C=S.C

Page 4: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

R A B C S C D E

a 1 10 10 x 2

b 1 20 20 y 2

c 2 10 30 z 2

d 2 35 40 x 1

e 3 45 50 y 3

Answer B D2 x

Page 5: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• How do we execute query eventually?

- Scan relations- Do Cartesian product- Select tuples- Do projection

One idea

Page 6: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

RxS R.A R.B R.C S.C S.D S.E

a 1 10 10 x 2

a 1 10 20 y 2

. .

C 2 10 10 x 2 . .

Bingo!

Got one...

Page 7: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Relational Algebra - can be enhanced to describe plans...

Ex: Plan I

B,D

R.A=“c” S.E=2 R.C=S.C

X

R S

1. Scan R2. For each tuple r of R scan S3. For each (r,s), where s in S

select and project on the fly

SCANSCAN

FLY

FLY

OR:B,D [ R.A=“c” S.E=2 R.C = S.C (R X S )]FLYFLY SCAN SCAN

Page 8: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Ex: Plan I

B,D

R.A=“c” S.E=2 R.C=S.C

X

R S

“FLY” and “SCAN” are the defaults

Page 9: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Another idea:

B,D

R.A = “c” S.E = 2

R S

Plan II

natural join

Scan R and S, perform on the fly selections, do hash join, project

HASH

Page 10: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

R S

A B C (R) (S) C D E

a 1 10 A B C C D E 10 x 2

b 1 20 c 2 10 10 x 2 20 y 2

c 2 10 20 y 2 30 z 2

d 2 35 30 z 2 40 x 1

e 3 45 50 y 3

Page 11: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Plan III

Use R.A and S.C Indexes

(1) Use R.A index to select R tuples with R.A = “c”

(2) For each R.C value found, use S.C index to find matching join tuples

(3) Eliminate join tuples S.E 2

(4) Project B,D attributes

Page 12: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

R S

A B C C D E

a 1 10 10 x 2

b 1 20 20 y 2

c 2 10 30 z 2

d 2 35 40 x 1

e 3 45 50 y 3

A CI1 I2

=“c”

<c,2,10> <10,x,2>

check=2?

output: <2,x>

next tuple:<c,7,15>

Page 13: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

RS

R.B, S.D S.E=2

R.a=“c”INDEX

RI

Right Index Join

Algebraic Form of Plan

Page 14: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

From Query To Optimal Plan

• Complex process

• Algebra-based logical and physical plans

• Transformations

• Evaluation of multiple alternatives

Page 15: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Issues in Query Processing and Optimization

• Generate Plans– employ efficient execution primitives for computing relational

algebra operations – systematically transform expressions to achieve more

efficient combinations of operators• Estimate Cost of Generated Plans

– Statistics• “Smart” Search of the Space of Possible Plans

– always do the “good” transformations (relational algebra optimization)

– prune the space (e.g., System R)• Often the above steps are mixed

Page 16: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

parse

convert

Generate/Transform lqp’s

estimate result sizes

generate physical plans

estimate costs

pick best

execute

{P1,P2,…..}

{(P1,C1),(P2,C2)...}

Pi

answer

SQL query

parse tree

logical query plan

“improved” l.q.p(s)

l.q.p. +sizes

statistics

Scope of responsibilityof each module may

is fuzzy

Generate/Transform pqp’s

Page 17: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: The Journey of a Query

SELECT TheaterFROM Movie M, Schedule SWHERE M.Title = S.Title AND M.Actor=“Winger”

Movie Schedule

M.Title=S.Title AND M.Actor=“Winger”

Theater

Logical Plan Generatorapplies Algebraic Rewriting

x

M.Title=S.Title

Theater

Parse/Convert

M.Actor=“Winger”

Movie Schedule

Theater

M.Actor=“Winger”

M.Title=S.TitleLogical

PlanGenerator

Next Page

JOIN

Movie Schedule

x

Initial logicalquery plan

Another logicalquery plan

And yet another logical

query plan

Page 18: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

The Journey of a Query cont’d: Summary of Logical Plan Generator

Theater

S.Title=M.Title

M.Actor=“Winger”

Logical PlanGenerator

Movie Schedule

Theater

M.Actor=“Winger”

M.Title=S.Title

MovieSchedule

4th logicalquery plan

• 4 logical query plans created• algebraic rewritings were used for producing the

candidate logical query plans plans• the last one is the winner (at least, cannot be a

big loser)• in general, multiple logical plans may “win”

eventually

cond

SR

R S

condx

if cond refers

only on S

Page 19: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

The Journey of a Query Continues at the Physical Plan Generator

Physical Plan Generators choosesexecution primitives and

data passing

Theater

S.Title=M.Title

Actor=“Winger”

LEFT INDEX

PhysicalPlan 1

index on Actor and Title, unsorted tables,

tables>>memory

INDEX

MovieSchedule

Theater

S.Title=M.Title

M.Actor=“Winger”

MovieSchedule

Theater

S.Title=M.Title

M.Actor=“Winger”

SORT-MERGE

index on Actor, tables Schedule sorted on Title,

INDEX

PhysicalPlan

Generator

MovieSchedule

Physical Plan 2

More than one plansmay be generated bychoosing different

primitives

Page 20: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Nested SQL query

SELECT title

FROM StarsIn

WHERE starName IN (

SELECT name

FROM MovieStar

WHERE birthdate LIKE ‘%1960’

);

(Find the movies with stars born in 1960)

Page 21: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Parse Tree<Query>

<SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Tuple> IN <Query>

title StarsIn <Attribute> ( <Query> )

starName <SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Attribute> LIKE <Pattern>

name MovieStar birthDate ‘%1960’

Page 22: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Generating Relational Algebra

title

StarsIn <condition>

<tuple> IN name

<attribute> birthdate LIKE ‘%1960’

starName MovieStar

An expression using a two-argument , midway between a parse tree and relational

algebra

Page 23: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Logical Query Plan (Relational Algebra)

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStarMay consider “IN” elimination as a

rewritingin the logical plan generator or may consider it a task of the converter

Page 24: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Improved Logical Query Plan

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStar

Question:Push project to

StarsIn?

Page 25: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: Result sizes are important for selecting physical plans

Need expected size

StarsIn

MovieStar

Page 26: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example: One Physical Plan

Additional parameters: memory size, result sizes...

StarsInSCAN

MovieStar

birthdate LIKE ‘%1960’INDEX

starName=name

name

title

Page 27: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Topics

• Bag Algebra and other extensions– name & value conversions, functions,

aggregation

Page 28: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algebraic Operators: A Bag version

• Union of R and S: a tuple t is in the result as many times as the sum of the number of times it is in R plus the times it is in S

• Intersection of R and S: a tuple t is in the result the minimum of the number of times it is in R and S

• Difference of R and S: a tuple t is in the result the number of times it is in R minus the number of times it is in S

(R) converts the bag R into a set– SQL’s R UNION S is really (R S)

• Example: Let R={A,B,B} and S={C,A,B,C}.Describe the union, intersection and difference...

Page 29: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Extended Projection• We extend the relational project as follows:

– The attribute list may include xy in the list A to indicate that the attribute x is renamed to y

– Arithmetic or string operators on attributes are allowed. For example, • a+bx means that the sum of a and b is renamed into x.

• c||dy concatenates the result of c and d into a new attribute named y

• The result is computed by considering each tuple in turn and constructing a new tuple by picking the attributes names in A and applying renamings and arithmetic and string operators

• Example:

Page 30: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

An Alternative Approach to Arithmetic and Other 1-1 Computations

• Special purpose operators that for every input tuple they produce one output tuple– MULT A,BCR: for each tuple of R, multiply attribute A

with attribute B and put the result in a new attribute named C.

– PLUS A,BCR

– CONCAT A,BCR

• Exercise: Write the above operators using extended projection. Assume the schema of R is R(A,B,D,E).

Page 31: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Product and Joins

• Product of R and S (RS):– If an attribute named a is found in both schemas then

rename one column into R.a and the other into S.a– If a tuple r is found n times in R and a tuple s is found m

times in S then the product contains nm instances of the tuple rs

• Joins– Natural Join R S = C(RS) where

• C is a condition that equates all common attributes• A is the concatenated list of attributes of R and S with no duplicates• you may view tha above as a rewriting rule

– Theta Join • arbitrary condition involving multiple attributes

Page 32: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Grouping and Aggregation

• Operators that combine the GROUP-BY clause with the aggregation operator (AVG,SUM,MIN,MAX,…)

• SUMGroupbyList;GroupedAttributeResultAttribute R corresponds toSELECT GroupbyList,

SUM(GroupedAttribute) AS ResultAttributeFROM RGROUP BY GroupbyList

• Similar for AVG,MIN,MAX,COUNT…• Note that (R) could be seen as a special case of

grouping and aggregation• Example

Page 33: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Relational algebra optimization

• Transformation rules

(preserve equivalence)

• What are good transformations?

Page 34: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algebraic Rewritings: Commutativity and Associativity

R

S T

T

R S

R S

Commutativity Associativity

R

S T

T

R SR S S R

S R

Cartesian Product

NaturalJoin

Question 1: Do the above hold for both sets and bags? Question 2: Do commutativity and associativity holdfor arbitrary Theta Joins?

Page 35: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algebraic Rewritings: Commutativity and Associativity (2)

R

S T

T

R S

R S

Commutativity Associativity

R

S T

T

R SR S S R

S R

Union

Intersection

Question 1: Do the above hold for both sets and bags?Question 2: Is difference commutative and associative?

Page 36: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algebraic Rewritings for Selection: Decomposition of Logical Connectives

cond2

cond1

Rcond1 AND cond2

R

cond1 OR cond2

R

cond2

R

cond1

cond1

cond2

R

Does it applyto bags?

Page 37: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algebraic Rewritings for Selection: Decomposition of Negation

cond1 AND NOT cond2

R

Question

NOT cond2

R

cond1 OR NOT cond2

R

Complete

Page 38: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Pushing the Selection Thru Binary Operators: Union and Difference

R S

cond

cond

S

cond

R

R S

cond

-

cond

S

cond

R

-

S

cond

R

-

Union

Difference

Exercise: Do the rule for intersection

Page 39: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Pushing Selection thru Cartesian Product and Join

R S

cond

cond

SR

The right direction

requires that cond refers to S attributes only

R S

cond

cond

SR

The right directionrequires that cond refers to S

attributes only

The right direction

requires that all the attributes used

by cond appear in both R and S

cond

SR

cond

Exercise: Do the rule for theta join

Page 40: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Rules: combined

Let x = subset of R attributes

z = attributes in predicate P(subset of R attributes)

x[p (R) ] = {p [ x (R) ]} x xz

Page 41: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Pushing Simple Projections Thru Binary Operators

A projection is simple if it only consists of an attribute list

R S

A

A

S

A

R

Union

Question 1: Does the above hold for both bags and sets?Question 2: Can projection be pushed below

intersection and difference? Answer for both bags and sets.

Page 42: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Pushing Simple Projections Thru Binary Operators: Join and Cartesian Product

R S

A

C

S

B

R

A Where B is the list

of R attributes thatappear in A. Similar for C.

R S

A

C

S

B

R

A

Exercise: Write the rewriting rule that pushes projectionbelow theta join.

Question: What is Band C ?

Page 43: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Projection Decomposition

XY

X

RX

R

Page 44: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Some Rewriting Rules Related to Aggregation: SUM

• condSUMGroupbyList;GroupedAttributeResultAttributeR SUMGroupbyList;GroupedAttributeResultAttribute cond R, if cond involves only the GroupbyList

• SUMGL;GARA(RS) PLUS RA1, RA2:RA

((SUMGL;GARA11 R) (SUMGL;GARA2 S)))

• SUM GL2;RA1RA2 SUM GL1;GARA1R SUMGL2:GARA2R– Question: does the above hold for both bags and sets?

Page 45: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

More Rules can be Derived:

pq (R S) =

pqm (R S) =

pvq (R S) =

Derived Rules: combined

p only at R, q only at S, m at both R and S

Page 46: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

--> Derivation for first one:

pq (R S) =

p [q (R S) ] =

p [ R q (S) ] =

[p (R)] [q (S)]

Page 47: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

p1p2 (R) p1 [p2 (R)]

p (R S) [p (R)] S

R S S R

x [p (R)] x {p [xz (R)]}

Which are always “good” transformations?

Page 48: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

In textbook: more transformations

• Eliminate common sub-expressions

• Other operations: duplicate elimination

Page 49: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Bottom line:

• No transformation is always good at the l.q.p level

• Usually good:– early selections– elimination of cartesian products – elimination of redundant subexpressions

• Many transformations lead to “promising” plans– Commuting/rearranging joins– In practice too “combinatorially explosive” to

be handled as rewriting of l.q.p.

Page 50: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Arranging the Join Order: the Wong-Youssefi algorithm (INGRES)

Sample TPC-H Schema

Nation(NationKey, NName)Customer(CustKey, CName, NationKey)Order(OrderKey, CustKey, Status)Lineitem(OrderKey, PartKey, Quantity)Product(SuppKey, PartKey, PName)Supplier(SuppKey, SName)

SELECT SNameFROM Nation, Customer, Order, LineItem, Product, SupplierWHERE Nation.NationKey = Cuctomer.NationKey

AND Customer.CustKey = Order.CustKeyAND Order.OrderKey=LineItem.OrderKeyAND LineItem.PartKey= Product.PartkeyAND Product.Suppkey = Supplier.SuppKeyAND NName = “Canada”

Find the names of suppliers that sell a

product that appears in a line item of

an order made by a customer who is in Canada

Page 51: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Challenges with Large Natural Join Expressions

For simplicity, assume that in the query1. All joins are natural2. whenever two tables of the FROM clause have common

attributes we join on them1. Consider Right-Index only

Nation Customer Order LineItem Product Supplier

σNName=“Canada”

πSName

One possible order

RI

RI

RI

RI

RI

Index

Page 52: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Multiple Possible Orders

Nation CustomerOrderLineItem Product Supplier

σNName=“Canada”

πSName

RI

RI

RI

RI

RI

Page 53: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Wong-Yussefi algorithm assumptions and objectives

• Assumption 1 (weak): Indexes on all join attributes (keys and foreign keys)

• Assumption 2 (strong): At least one selection creates a small relation– A join with a small relation results in a small

relation

• Objective: Create sequence of index-based joins such that all intermediate results are small

Page 54: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Hypergraphs

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

• relation hyperedges• two hyperedges for same relation are possible

• each node is an attribute• can extend for non-natural equality joins by merging nodes

Nation

Customer

OrderLineItem

Product

Supplier

Page 55: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Small Relations/Hypergraph Reduction

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem

Product

Supplier

NationKey NName

“Nation” is small because it has the equality selection

NName = “Canada”

Nation

σNName=“Canada”Index Pick a small

relation (and its conditions) to start

the plan

Page 56: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem

Product

Supplier

NationKey NName

Nation

σNName=“Canada”Index

RI

Remove small relation (hypergraph reduction) and color

as “small” any relation that joins with the removed “small” relation

Customer

Pick a small relation (and its

conditions if any) and join it with the small relation that has been reduced

Page 57: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

After a bunch of steps…

Nation Customer Order LineItem Product Supplier

σNName=“Canada”

πSName

RI

RI

RI

RI

RI

Index

Page 58: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Multiple Instances of Each Relation

SELECT S.SNameFROM Nation, Customer, Order, LineItem L, Product P, Supplier S,

LineItem LE, Product PE, Supplier EnronWHERE Nation.NationKey = Cuctomer.NationKey

AND Customer.CustKey = Order.CustKeyAND Order.OrderKey=L.OrderKeyAND L.PartKey= P.PartkeyAND P.Suppkey = S.SuppKeyAND Order.OrderKey=LE.OrderKeyAND LE.PartKey= PE.PartkeyAND PE.Suppkey = Enron.SuppKeyAND Enron.Sname = “Enron”AND NName = “Cayman”

Find the names of suppliers

whose products

appear in an order made

by a customer who is in Cayman

Islands and an Enron product

appears in the same

order

Page 59: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Multiple Instances of Each Relation

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem L

Product P

Supplier S

SuppKey PName PartKey SName

Product PE

Supplier Enron

LineItem LE

Quantity

Page 60: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Multiple choices are possible

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem L

Product P

Supplier S

SuppKey PName PartKey SName

Product PE

Supplier Enron

LineItem LE

Quantity

Page 61: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem L

Product P

Supplier S

SuppKey PName PartKey SName

Product PE

Supplier Enron

LineItem LE

Quantity

Page 62: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

CName

CustKey

NationKey NName

Status OrderKey

Quantity

PartKeySuppKey PName SName

Nation

Customer

OrderLineItem L

Product P

Supplier S

SuppKey PName PartKey SName

Product PE

Supplier Enron

LineItem LE

Quantity

Page 63: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Nation Customer Order

σNName=“Cayman”

RI

RI

Index

Enron PE LE

σSName=“Enron”

RI RI

Index

LineItem Product Supplier

RI

RI

RI

Page 64: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Algorithms for Relational Algebra Operators

• Three primary techniques– Sorting– Hashing– Indexing

• Three degrees of difficulty– data small enough to fit in memory– too large to fit in main memory but small enough to be

handled by a “two-pass” algorithm– so large that “two-pass” methods have to be

generalized to “multi-pass” methods (quite unlikely nowadays)

Page 65: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Estimating IOs:

• Count # of disk blocks that must be read (or written) to execute query plan

Page 66: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

To estimate costs, we may have additional parameters:

B(R) = # of blocks containing R tuples

f(R) = max # of tuples of R per block

M = # memory blocks available

HT(i) = # levels in index i

LB(i) = # of leaf blocks in index i

Page 67: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Clustering index

Index that allows tuples to be read in an order that corresponds to physical order

A

Aindex

101517

193537

Page 68: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Clustering can radically change cost

• Clustered file organization

…..

• Clustered relation

…..

• Clustering index

R1 R2 S1 S2 R3 R4 S3 S4

R1 R2 R3 R4 R5 R5 R7 R8

Page 69: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example R1 R2 over common attribute C

T(R1) = 10,000

T(R2) = 5,000

S(R1) = S(R2) = 1/10 block

Memory available = 101 blocks

Metric: # of IOs

(ignoring writing of result)

Page 70: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Caution!

This may not be the best way to compare

• ignoring CPU costs

• ignoring timing

• ignoring double buffering requirements

Page 71: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Iteration join (conceptually – without taking into account disk block issues)

for each r R1 do

for each s R2 do

if r.C = s.C then output r,s pair

Page 72: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Merge join (conceptually)(1) if R1 and R2 not sorted, sort them

(2) i 1; j 1;

While (i T(R1)) (j T(R2)) do

if R1{ i }.C = R2{ j }.C then outputTuples

else if R1{ i }.C > R2{ j }.C then j j+1

else if R1{ i }.C < R2{ j }.C then i i+1

Page 73: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Procedure Output-Tuples

While (R1{ i }.C = R2{ j }.C) (i T(R1)) do

[jj j;

while (R1{ i }.C = R2{ jj }.C) (jj T(R2)) do

[output pair R1{ i }, R2{ jj };

jj jj+1 ]

i i+1 ]

Page 74: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example

i R1{i}.C R2{j}.C j1 10 5 1

2 20 20 2

3 20 20 3

4 30 30 4

5 40 30 5

50 6

52 7

Page 75: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Join with index (Conceptually)

For each r R1 do

[ X index (R2, C, r.C)

for each s X do

output r,s pair]

Assume R2.C index

Note: X index(rel, attr, value)

then X = set of rel tuples with attr = value

Page 76: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Hash join (conceptual)– Hash function h, range 0 k– Buckets for R1: G0, G1, ... Gk– Buckets for R2: H0, H1, ... Hk

Algorithm

(1) Hash R1 tuples into G buckets

(2) Hash R2 tuples into H buckets

(3) For i = 0 to k do

match tuples in Gi, Hi buckets

Page 77: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Simple example hash: even/odd

R1 R2 Buckets2 5 Even 4 4 R1 R23 12 Odd: 5 38 139 8

1114

2 4 8 4 12 8 14

3 5 9 5 3 13 11

Page 78: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Factors that affect performance

(1) Tuples of relation stored

physically together?

(2) Relations sorted by join attribute?

(3) Indexes exist?

Page 79: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Disk-oriented Computation Model• There are M main memory buffers.

– Each buffer has the size of a disk block

• The input relation is read one block at a time.• The cost is the number of blocks read.• If B consecutive blocks are read the cost is B/d.• The output buffers are not part of the M buffers mentioned

above.– Pipelining allows the output buffers of an operator to be the input of

the next one.– We do not count the cost of writing the output.

Page 80: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Notation

• B(R) = number of blocks that R occupies

• T(R) = number of tuples of R

• V(R,[a1, a2 ,…, an]) = number of distinct tuples in the projection of R on a1, a2 ,…, an

Page 81: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

One-Pass Main Memory Algorithms for Unary Operators

• Assumption: Enough memory to keep the relation

• Projection and selection:– Scan the input relation R and apply operator one tuple at a time

– Incremental cost of “on the fly” operators is 0

– Cost depends on• clustering of R • whether the blocks are consecutive

• Duplicate elimination and aggregation– create one entry for each group and compute the aggregated value of the

group

– it becomes hard to assume that CPU cost is negligible• main memory data structures are needed

Page 82: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

for each block Br of R do store tuples of Br in main memoryfor each each block Bs of S do for each tuple s of Bs join tuples of s with matching tuples of R

One-Pass Nested Loop Join• Assume B(R) is less than M

• Tuples of R should be stored in an efficient lookup structure

• Exercise: Find the cost of the algorithm below

Page 83: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Generalization of Nested-Loops

for each chunk of M-1 blocks Br of R do store tuples of Br in main memory for each each block Bs of S do for each tuple s of Bs join tuples of s with matching tuples of R

Exercise: Compute cost

Page 84: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Simple Sort-Merge Join• Assume natural join on C• Sort R on C using the two-phase

multiway merge sort– if not already sorted

• Sort S on C• Merge (opposite side)

– assume two pointers Pr,Ps to tuples on disk, initially pointing at the start

– sets R’, S’ in memory

• Remarks:– Very low average memory requirement

during merging (but no guarantee on how much is needed)

– Cost:

while Pr!=EOF and Ps!=EOF if *Pr[C] == *Ps[C] do_cart_prod(Pr,Ps) else if *Pr[C] > *Ps[C] Ps++ else if *Ps[C] > *Pr[C] Pr++

function do_cart_prod(Pr,Ps) val=*Pr[C] while *Pr[C]==val store tuple *Pr in set R’ while *Ps[C]==val store tuple *Ps in set S’; output cartesian product

of R’ and S’

Page 85: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Efficient Sort-Merge Join

• Idea: Save two disk I/O’s per block by combining the second pass of sorting with the ``merge”.

• Step 1: Create sorted sublists of size M for R and S• Step 2: Bring the first block of each sublist to a

buffer– assume no more than M sublists in all

• Step 3:Repeatedly find the least C value c among the first tuples of each sublist. Identify all tuples with join value c and join them. – When a buffer has no more tuple that has not already

been considered load another block into this buffer.

Page 86: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Efficient Sort-Merge Join Example

C RA 1 r1

2 r2

3 r3

20 r20

R

C SA 1 s1

...

5 s5

16 s16

20 s20

S

Assume that after first phase of multiway sort we get 4 sublists,

2 for R and 2 for S.Also assume that each block contains

two tuples.

3 7 8 10 11 13 14 16 17 181 2 4 5 6 9 12 15 19 20

R

1 3 5 17 2 4 16 18 19 20

S

Page 87: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Two-Pass Hash-Based Algorithms

• General Idea: Hash the tuples of the input arguments in such a way that all tuples that must be considered together will have hashed to the same hash value.– If there are M buffers pick M-1 as the number of hash buckets

• Example: Duplicate Elimination– Phase 1: Hash each tuple of each input block into one of the M-1

bucket/buffers. When a buffer fills save to disk.– Phase 2: For each bucket:

• load the bucket in main memory,

• treat the bucket as a small relation and eliminate duplicates

• save the bucket back to disk.

– Catch: Each bucket has to be less than M.– Cost:

Page 88: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Hash-Join Algorithms

• Assuming natural join, use a hash function that– is the same for both input arguments R and S

– uses only the join attributes

• Phase 1: Hash each tuple of R into one of the M-1 buckets Ri and similar each tuple of S into one of Si

• Phase 2: For i=1…M-1– load Ri and Si in memory

– join them and save result to disk

• Question: What is the maximum size of buckets?• Question: Does hashing maintain sorting?

Page 89: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Index-Based Join: The Simplest Version

for each Br in R do for each tuple r of Br with B value b

use index of S to find tuples {s1 ,s2 ,...,sn} of S with B=b

output {rs1 ,rs2 ,...,rsn}

Assume that we do natural join of R(A,B) and S(B,C)and there’s an index on S

Cost: Assuming R is clustered and non-sorted and theindex on S is clustered on B then B(R)+T(R)B(S)/V(S,B) + some more for reading indexQuestion: What is the cost if R is sorted?

Page 90: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Opportunities in Joins Using Sorted Indexes

• Do a conventional Sort-Join avoiding the sorting of one or both of the input operands

Page 91: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Estimating cost of query plan

(1) Estimating size of results

(2) Estimating # of IOs

Page 92: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Estimating result size

• Keep statistics for relation R– T(R) : # tuples in R– S(R) : # of bytes in each R tuple– B(R): # of blocks to hold all R tuples– V(R, A) : # distinct values in R

for attribute A

Page 93: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example

R A: 20 byte string

B: 4 byte integer

C: 8 byte date

D: 5 byte string

A B C D

cat 1 10 a

cat 1 20 b

dog 1 30 a

dog 1 40 c

bat 1 50 d

T(R) = 5 S(R) = 37

V(R,A) = 3 V(R,C) = 5

V(R,B) = 1 V(R,D) = 4

Page 94: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Size estimates for W = R1 x R2

T(W) =

S(W) =

T(R1) T(R2)

S(R1) + S(R2)

Page 95: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

S(W) = S(R)

T(W) = ?

Size estimate for W = Z=val(R)

Page 96: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example

R V(R,A)=3

V(R,B)=1

V(R,C)=5

V(R,D)=4

W = z=val(R) T(W) =

A B C D

cat 1 10 a

cat 1 20 b

dog 1 30 a

dog 1 40 c

bat 1 50 d

T(R)V(R,Z)

Page 97: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

What about W = z val (R) ?

T(W) = ?

• Solution # 1:

T(W) = T(R)/2

• Solution # 2:

T(W) = T(R)/3

Page 98: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Solution # 3: Estimate values in range

Example R ZMin=1 V(R,Z)=10

W= z 15 (R)

Max=20

f = 20-15+1 = 6 (fraction of range) 20-1+1 20

T(W) = f T(R)

Page 99: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Equivalently:

fV(R,Z) = fraction of distinct values

T(W) = [f V(Z,R)] T(R) = f T(R)

V(Z,R)

Page 100: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Size estimate for W = R1 R2

Let x = attributes of R1

y = attributes of R2

X Y =

Same as R1 x R2

Case 1

Page 101: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

W = R1 R2 X Y = A

R1 A B C R2 A D

Case 2

Assumption:ΠA R1 ΠA R2 Every A value in R1 is in R2

(typically A of R1 is foreign key

of the primary key of A of R2)

ΠA R2 ΠA R1 Every A value in R2 is in R1

“containment of value sets” (justified by primary

key – foreign key relationship)

Page 102: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

R1 A B C R2 A D

Computing T(W) when A of R1 is the

foreign key ΠA R1 ΠA R2

1 tuple of R1 matches with exactly 1 tuple of R2

so T(W) = T(R1)

Page 103: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

R1 A B C R2 A D

Another way to approach when

ΠA R1 ΠA R2

Take 1 tuple Match

1 tuple matches with T(R2) tuples... V(R2,A)

so T(W) = T(R2) T(R1) V(R2, A)

Page 104: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• V(R1,A) V(R2,A) T(W) = T(R2) T(R1)

V(R2,A)

• V(R2,A) V(R1,A) T(W) = T(R2) T(R1)

V(R1,A)

[A is common attribute]

Page 105: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

T(W) = T(R2) T(R1)

max{ V(R1,A), V(R2,A) }

In general W = R1 R2

Page 106: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example 1(a) Iteration Join R1 R2

• Relations not contiguous

• Recall T(R1) = 10,000 T(R2) = 5,000

S(R1) = S(R2) =1/10 block

MEM=101 blocks

Cost: for each R1 tuple:

[Read tuple + Read R2]

Total =10,000 [1+5000]=50,010,000 IOs

Page 107: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Can we do better?Use our memory

(1) Read 100 blocks of R1

(2) Read all of R2 (using 1 block) + join

(3) Repeat until done

Page 108: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost: for each R1 chunk:

Read chunk: 1000 IOs

Read R2 5000 IOs

6000

Total = 10,000 x 6000 = 60,000 IOs 1,000

Page 109: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Can we do better?

Reverse join order: R2 R1

Total = 5000 x (1000 + 10,000) = 1000

5 x 11,000 = 55,000 IOs

Page 110: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Relations contiguous

Example 1(b) Iteration Join R2 R1

CostFor each R2 chunk:

Read chunk: 100 IOsRead R1: 1000 IOs

1,100Total= 5 chunks x 1,100 = 5,500 IOs

Page 111: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example 1(c) Merge Join

• Both R1, R2 ordered by C; relations contiguous

Memory

R1

R2

…..

…..

R1

R2

Total cost: Read R1 cost + read R2 cost

= 1000 + 500 = 1,500 IOs

Page 112: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example 1(d) Merge Join

• R1, R2 not ordered, but contiguous

--> Need to sort R1, R2 first…. HOW?

Page 113: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

One way to sort: Merge Sort

(i) For each 100 blk chunk of R:

- Read chunk

- Sort in memory

- Write to disk

sorted

chunks

Memory

R1

R2 ...

Page 114: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

(ii) Read all chunks + merge + write out

Sorted file Memory Sorted

Chunks ......

Page 115: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost: Sort

Each tuple is read,written,

read, written

so...

Sort cost R1: 4 x 1,000 = 4,000

Sort cost R2: 4 x 500 = 2,000

Page 116: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example 1(d) Merge Join (continued)

R1,R2 contiguous, but unordered

Total cost = sort cost + join cost

= 6,000 + 1,500 = 7,500 IOs

But: Iteration cost = 5,500 so merge joint does not pay off!

Page 117: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

But say R1 = 10,000 blocks contiguous

R2 = 5,000 blocks not ordered

Iterate: 5000 x (100+10,000) = 50 x 10,100 100

= 505,000 IOs

Merge join: 5(10,000+5,000) = 75,000 IOs

Merge Join (with sort) WINS!

Page 118: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

How much memory do we need formerge sort?

E.g: Say I have 10 memory blocks 10

...

100 chunks to merge, need 100 blocks!R1

Page 119: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

In general:

Say k blocks in memory

x blocks for relation sort

# chunks = (x/k) size of chunk = k

# chunks < buffers available for merge

so... (x/k) k

or k2 x or k x

Page 120: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

In our example

R1 is 1000 blocks, k 31.62

R2 is 500 blocks, k 22.36

Need at least 32 buffers

Page 121: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Can we improve on merge join?

Hint: do we really need the fully sorted files?

R1

R2

Join?

sorted runs

Page 122: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost of improved merge join:

C = Read R1 + write R1 into runs

+ read R2 + write R2 into runs

+ join

= 2000 + 1000 + 1500 = 4500

--> Memory requirement?

Page 123: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Example 1(e) Index Join

• Assume R1.C index exists; 2 levels

• Assume R2 contiguous, unordered

• Assume R1.C index fits in memory

Page 124: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost: Reads: 500 IOs

for each R2 tuple:

- probe index - free

- if match, read R1 tuple: 1 IO

Page 125: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

What is expected # of matching tuples?

(a) say R1.C is key, R2.C is foreign key

then expect = 1

(b) say V(R1,C) = 5000, T(R1) = 10,000with uniform assumptionexpect = 10,000/5,000 = 2

Page 126: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

(c) Say DOM(R1, C)=1,000,000

T(R1) = 10,000

with alternate assumption

Expect = 10,000 = 1 1,000,000 100

What is expected # of matching tuples?

Page 127: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Total cost with index join

(a) Total cost = 500+5000(1)1 = 5,500

(b) Total cost = 500+5000(2)1 = 10,500

(c) Total cost = 500+5000(1/100)1=550

Page 128: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

What if index does not fit in memory?

Example: say R1.C index is 201 blocks

• Keep root + 99 leaf nodes in memory

• Expected cost of each probe is

E = (0)99 + (1)101 0.5 200 200

Page 129: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Total cost (including probes)

= 500+5000 [Probe + get records]= 500+5000 [0.5+2] uniform assumption

= 500+12,500 = 13,000 (case b)

For case (c):

= 500+5000[0.5 1 + (1/100) 1]

= 500+2500+50 = 3050 IOs

Page 130: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

So far

Iterate R2 R1 55,000 (best)Merge Join _______Sort+ Merge Join _______R1.C Index _______R2.C Index _______

Iterate R2 R1 5500Merge join 1500Sort+Merge Join 7500 4500R1.C Index 5500 3050 550R2.C Index ________co

nti

guous

not

con

tig

uou

s

Page 131: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• R1, R2 contiguous (un-ordered)

Use 100 buckets

Read R1, hash, + write buckets

R1

Example 1(f) Hash Join

...

...

10 blocks

100

Page 132: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

-> Same for R2

-> Read one R1 bucket; build memory hash table

-> Read corresponding R2 bucket + hash probe

R1

R2

...

R1

memory...

Then repeat for all buckets

Page 133: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost:“Bucketize:” Read R1 + write

Read R2 + write

Join: Read R1, R2

Total cost = 3 x [1000+500] = 4500

Note: this is an approximation since buckets will vary in size and we have to round up to blocks

Page 134: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Minimum memory requirements:

Size of R1 bucket = (x/k)

k = number of memory buffers

x = number of R1 blocks

So... (x/k) < k

k > x need: k+1 total memorybuffers

Page 135: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Trick: keep some buckets in memory

E.g., k’=33 R1 buckets = 31 blocks keep 2 in memory

memory

G0

G1

in

...

31

33-2=31

R1

Memory use:G0 31 buffersG1 31 buffersOutput 33-2 buffersR1 input 1Total 94 buffers

6 buffers to spare!!

called hybrid hash-join

Page 136: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Next: Bucketize R2– R2 buckets =500/33= 16 blocks– Two of the R2 buckets joined immediately

with G0,G1

memory

G0

G1

in

...

16

33-2=31

R2

...

31

33-2=31

R2 buckets R1 buckets

Page 137: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Finally: Join remaining buckets– for each bucket pair:

• read one of the buckets into memory• join with second bucket

memory

Gi

out

...

16

33-2=31

ans

...

31

33-2=31

R2 buckets R1 bucketsone full R2bucket

one R1buffer

Page 138: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Cost

• Bucketize R1 = 1000+3131=1961

• To bucketize R2, only write 31 buckets:so, cost = 500+3116=996

• To compare join (2 buckets already done)read 3131+3116=1457

Total cost = 1961+996+1457 = 4414

Page 139: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• How many buckets in memory?

memory

G0

G1

inR1

memory

G0

inR1

OR...

See textbook for answer...

?

Page 140: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Another hash join trick:

• Only write into buckets<val,ptr> pairs

• When we get a match in join phase,must fetch tuples

Page 141: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• To illustrate cost computation, assume:– 100 <val,ptr> pairs/block– expected number of result tuples is 100

• Build hash table for R2 in memory 5000 tuples 5000/100 = 50 blocks

• Read R1 and match• Read ~ 100 R2 tuples

Total cost = Read R2: 500Read R1: 1000Get tuples: 100

1600

Page 142: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

So far:Iterate 5500Merge join 1500Sort+merge joint 7500R1.C index 5500 550R2.C index _____Build R.C index _____Build S.C index _____Hash join 4500+ with trick,R1 first 4414 with trick,R2 first _____Hash join, pointers 1600

con

tig

uou

s

Page 143: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

Summary

• Iteration ok for “small” relations(relative to memory size)

• For equi-join, where relations notsorted and no indexes exist,hash join usually best

Page 144: Query Processing Notes. Query Processing The query processor turns user queries and data modification commands into a query plan - a sequence of operations.

• Sort + merge join good fornon-equi-join (e.g., R1.C > R2.C)

• If relations already sorted, usemerge join

• If index exists, it could be useful

(depends on expected result size)