query rewrite starburst model (ibm). db2 query optimizer (starburst) parsing and semantic checking...

15
Query Rewrite Starburst Model (IBM)

Upload: deborah-wiggins

Post on 03-Jan-2016

232 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Query Rewrite

Starburst Model (IBM)

Page 2: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

DB2 Query Optimizer (Starburst)

Parsing and Semantic Checking

Query Rewrite

Plan Optimization

Query Evaluation System

Query GraphModel

ExecutablePlan

Data Flow

Control Flow

Compile Time

Run Time

Page 3: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Goal of Query Rewrite

•Make queries as declarative as possible:

Poorly expressed queries could force the optimizer into choosing suboptimal plans

•Perform natural heuristics

For example, “predicate pushdown”

Page 4: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Components of Rewrite Engine

• Rewrite rules (more later)• Rule engine

– control strategies• sequential (rules are processed sequentially)• priority (higher priority rules are given a chance first)• statistical (next rule is chosen randomly based on a user

defined probability distribution– budget

• to avoid spending too much time on rewrites, the processing stops at a consistent state of QGM when the budget is exhausted

• Search facility– browses through QGM providing the context for the

rules to work on

Page 5: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Problem

• How do we choose between competing incompatible transformations?

• Optimal solution: apply cost analysis and pick the transformation leading to a cheaper plan

• Practical solution (why?): generate multiple alternatives and send them to plan optimization phase (problems?)

Page 6: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Rewrite Rules: SELECT MergeCREATE VIEW itpv AS

(SELECT DISTINCT itp.itemn, pur.vendn

FROM itp, pur

WHERE itp.ponum = pur.ponum AND

pur.odate > ’85’)

SELECT DISTINCT itm.itmn, pur.vendn

FROM itm, itp, pur

WHERE itp.ponum = pur.ponum AND itm.itemn = itpv.itemn AND

pur.odate > ’85’ AND

itm.itemn > ’01’ AND

itm.itemn < ’20’

SELECT itm.itmn, itpv.vendn

FROM itm, itpv

WHERE itm.itemn = itpv.itemn AND

itm.itemn > ’01’ AND

itm.itemn < ’20’

Speedup: 200 times

Page 7: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Rewrite Rules: Existential Subquery Merge

SELECT *

FROM itp

WHERE itm.itemn IN

( SELECT itl.itmn

FROM itl

WHERE itl.wkcen = ‘WK468’ AND

itl.locan = ‘L’)

SELECT DISTINCT itp.*

FROM itp, itl

WHERE itp.itmn = itl.itemn AND

itl.wkcen = ‘WK468’ AND

itl.locan = ‘L’

Speedup: 15 times

Page 8: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

Rewrite Rules:Intersect to Exists

SELECT itemn

FROM wor

WHERE empno = ‘EMPN1279’

INTERSECT

SELECT itmn

FROM itl

WHERE entry_time = ‘9773’ AND

wkctr = ‘WK195’)

Speedup: 8 times

SELECT DISTINCT itemn

FROM wor, itl

WHERE empno = ‘EMPN1279’

entry_time = ‘9773’ AND

wkctr = ‘WK195’) AND

itl.itmn = wor.itemn

Page 9: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug

parts(PNUM,QOH)supply(PNUM,QUAN,SHIPDATE)

Query: Find the part numbers of those parts whose quantities on hand equal the number of shipments of those parts before 1-1-80.

select PNUMfrom partswhere QOH = ( select count(SHIPDATE)

from supplywhere supply.PNUM = parts.PNUM

and SHIPDATE < 1-1-80)

Page 10: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug (cont.)select PNUMfrom partswhere QOH = ( select count(SHIPDATE)

from supplywhere supply.PNUM = parts.PNUM

and SHIPDATE < 1-1-80)

temp (SUPPNUM,CT) =(select PNUM, count(SHIPDATE)from supplywhere SHIPDATE < 1-1-80) group by PNUM)

select PNUMfrom parts, tempwhere parts.QOH = temp.CT and

temp.PNUM = parts.PNUM

Page 11: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug (cont.)

PNUM QOH

3 6

10 1

8 0

PNUM QUAN SHIPDATE

3 4 7-3-79

3 2 10-1-78

10 1 6-8-78

10 2 8-10-81

8 5 5-7-83

select PNUMfrom partswhere QOH = ( select count(SHIPDATE)

from supplywhere supply.PNUM = parts.PNUM

and SHIPDATE < 1-1-80)

SupplyParts

PNUM

10

8

Result

Page 12: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug (cont.)

PNUM QOH

3 6

10 1

8 0

PNUM QUAN SHIPDATE

3 4 7-3-79

3 2 10-1-78

10 1 6-8-78

10 2 8-10-81

8 5 5-7-83

SupplyParts

Temptemp (SUPPNUM,CT) =

(select PNUM, count(SHIPDATE)from supplywhere SHIPDATE < 1-1-80) group by PNUM)

Suppnum CT

3 2

10 1

Page 13: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug (cont.)

PNUM QOH

3 6

10 1

8 0

Parts Temp

SUPPNUM CT

3 2

10 1

select PNUMfrom parts, tempwhere parts.QOH = temp.CT and

temp.PNUM = parts.PNUM

Result

PNUM

10

Page 14: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug – solutionwith outer joins

X

A

B

Y

B

C

E

R S R=+S X Y

A null

B B

null C

null E

Page 15: Query Rewrite Starburst Model (IBM). DB2 Query Optimizer (Starburst) Parsing and Semantic Checking Query Rewrite Plan Optimization Query Evaluation System

The Count Bug – solutionwith outer joins

temp (SUPPNUM,CT) =(select parts.PNUM, count(SHIPDATE)from parts, supplywhere SHIPDATE < 1-1-80 and

parts.PNUM =+ supply.PNUMgroup by parts.PNUM)

Parts.PNUM Parts.QOH Supply.PNUM Supply.QUON Supply.SHIPDATE

3 6 3 4 7-3-79

3 6 3 2 10-1-78

10 1 10 1 6-8-78

8 0 null null null

parts.PNUM =+ supply.PNUM (for SHIPDATE < 1-1-80)