CSC 261/461 Database Systems Lecture 19

Similar documents
Lecture 14. Lecture 14: Joins!

Lecture 11. Lecture 11: External Sorting

Lecture 12. Lecture 12: Access Methods

L20: Joins. CS3200 Database design (sp18 s2) 3/29/2018

CMPT 354: Database System I. Lecture 7. Basics of Query Optimization

Lecture 15: The Details of Joins

Announcement. Reading Material. Overview of Query Evaluation. Overview of Query Evaluation. Overview of Query Evaluation 9/26/17

Final Review. CS 145 Final Review. The Best Of Collection (Master Tracks), Vol. 2

Notes. Some of these slides are based on a slide set provided by Ulf Leser. CS 640 Query Processing Winter / 30. Notes

Query Processing & Optimization. CS 377: Database Systems

Database Applications (15-415)

Administriva. CS 133: Databases. General Themes. Goals for Today. Fall 2018 Lec 11 10/11 Query Evaluation Prof. Beth Trushkowsky

Review. Support for data retrieval at the physical level:

Database Applications (15-415)

EECS 647: Introduction to Database Systems

Introduction to Query Processing and Query Optimization Techniques. Copyright 2011 Ramez Elmasri and Shamkant Navathe

Database Systems CSE 414

4/10/2018. Relational Algebra (RA) 1. Selection (σ) 2. Projection (Π) Note that RA Operators are Compositional! 3.

Lecture 12. Lecture 12: The IO Model & External Sorting

Advanced Database Systems

Announcements. Two typical kinds of queries. Choosing Index is Not Enough. Cost Parameters. Cost of Reading Data From Disk

RELATIONAL OPERATORS #1

L22: The Relational Model (continued) CS3200 Database design (sp18 s2) 4/5/2018

Database Applications (15-415)

CSC 261/461 Database Systems Lecture 21 and 22. Spring 2017 MW 3:25 pm 4:40 pm January 18 May 3 Dewey 1101

Fundamentals of Database Systems

CompSci 516 Data Intensive Computing Systems

Overview of Query Processing and Optimization

Algorithms for Query Processing and Optimization. 0. Introduction to Query Processing (1)

R has a ordered clustering index file on its tuples: Read index file to get the location of the tuple with the next smallest value

CS 4604: Introduction to Database Management Systems. B. Aditya Prakash Lecture #10: Query Processing

Lecture 16. The Relational Model

Evaluation of Relational Operations

CSC 261/461 Database Systems Lecture 20. Spring 2017 MW 3:25 pm 4:40 pm January 18 May 3 Dewey 1101

What happens. 376a. Database Design. Execution strategy. Query conversion. Next. Two types of techniques

Today's Class. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Example Database. Query Plan Example

Goals for Today. CS 133: Databases. Relational Model. Multi-Relation Queries. Reason about the conceptual evaluation of an SQL query

Hash table example. B+ Tree Index by Example Recall binary trees from CSE 143! Clustered vs Unclustered. Example

CSC 261/461 Database Systems Lecture 13. Fall 2017

CMSC424: Database Design. Instructor: Amol Deshpande

CompSci 516 Data Intensive Computing Systems. Lecture 11. Query Optimization. Instructor: Sudeepa Roy

Introduction to Database Systems CSE 414. Lecture 26: More Indexes and Operator Costs

Query Processing & Optimization

Query Processing. Debapriyo Majumdar Indian Sta4s4cal Ins4tute Kolkata DBMS PGDBA 2016

Query Processing. Introduction to Databases CompSci 316 Fall 2017

EXTERNAL SORTING. CS 564- Spring ACKs: Dan Suciu, Jignesh Patel, AnHai Doan

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe

Overview of Query Processing. Evaluation of Relational Operations. Why Sort? Outline. Two-Way External Merge Sort. 2-Way Sort: Requires 3 Buffer Pages

Chapter 18 Strategies for Query Processing. We focus this discussion w.r.t RDBMS, however, they are applicable to OODBS.

Chapter 12: Query Processing. Chapter 12: Query Processing

Principles of Database Management Systems

Operator Implementation Wrap-Up Query Optimization

Database Systems CSE 414

Evaluation of Relational Operations

CSE 544 Principles of Database Management Systems

Chapter 12: Query Processing

Implementing Relational Operators: Selection, Projection, Join. Database Management Systems, R. Ramakrishnan and J. Gehrke 1

External Sorting Implementing Relational Operators

Lecture 12. Lecture 12: The IO Model & External Sorting

CSE 190D Spring 2017 Final Exam Answers

6.830 Lecture 8 10/2/2017. Lab 2 -- Due Weds. Project meeting sign ups. Recap column stores & paper. Join Processing:

Implementing Joins 1

Evaluation of relational operations

Chapter 3. Algorithms for Query Processing and Optimization

Database Applications (15-415)

Introduction to Database Systems CSE 414. Lecture 16: Query Evaluation

Faloutsos 1. Carnegie Mellon Univ. Dept. of Computer Science Database Applications. Outline

Outline. Database Management and Tuning. Outline. Join Strategies Running Example. Index Tuning. Johann Gamper. Unit 6 April 12, 2012

DBMS Query evaluation

University of Waterloo Midterm Examination Sample Solution

More Relational Algebra

CompSci 516: Database Systems. Lecture 20. Parallel DBMS. Instructor: Sudeepa Roy

Query and Join Op/miza/on 11/5

CSE 544 Principles of Database Management Systems. Alvin Cheung Fall 2015 Lecture 7 - Query optimization

Chapter 12: Query Processing

Query optimization. Elena Baralis, Silvia Chiusano Politecnico di Torino. DBMS Architecture D B M G. Database Management Systems. Pag.

Something to think about. Problems. Purpose. Vocabulary. Query Evaluation Techniques for large DB. Part 1. Fact:

Database Systems External Sorting and Query Optimization. A.R. Hurson 323 CS Building

Introduction to Database Systems CSE 344

Implementation of Relational Operations

CSC 742 Database Management Systems

Chapter 13: Query Processing

Cost-based Query Sub-System. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Last Class.

Database Applications (15-415)

Database Systems CSE 414

QUERY PROCESSING & OPTIMIZATION CHAPTER 19 (6/E) CHAPTER 15 (5/E)

SQL QUERY EVALUATION. CS121: Relational Databases Fall 2017 Lecture 12

CSE 344 FEBRUARY 14 TH INDEXING

Data on External Storage

Database System Concepts

Course No: 4411 Database Management Systems Fall 2008 Midterm exam

Chapter 6 The Relational Algebra and Relational Calculus

! A relational algebra expression may have many equivalent. ! Cost is generally measured as total elapsed time for

Chapter 13: Query Processing Basic Steps in Query Processing

TotalCost = 3 (1, , 000) = 6, 000

CSC 261/461 Database Systems Lecture 5. Fall 2017

Advances in Data Management Query Processing and Query Optimisation A.Poulovassilis

Optimization Overview

CAS CS 460/660 Introduction to Database Systems. Query Evaluation II 1.1

Lecture Query evaluation. Combining operators. Logical query optimization. By Marina Barsky Winter 2016, University of Toronto

Transcription:

CSC 261/461 Database Systems Lecture 19 Fall 2017

Announcements CIRC: CIRC is down!!! MongoDB and Spark (mini) projects are at stake. L Project 1 Milestone 4 is out Due date: Last date of class We will check your website after that date But, finish early Due Dates: Suggestions:

Due Dates 11/12 to 11/18 11/19 to 11/25 (Thanksgiving Week) 11/26 to 12/02 12/03 to 12/09: Term Paper Due: 12/08 12/10 to 12/13 (Last Class): Poster Session on: 12/11 Project 1 Milestone 4 is due on 12/13 MongoDB Spark Term Paper Poster Session Final: December 18, 2017 at 7:15 pm

Topics for Today Query Processing (Chapter 18) Query Optimization (Chapter 19) on Wednesday

QUERY PROCESSING

Steps in Query Processing Scanning Parsing Validation Query Tree Creation Query Optimization (Query planning) Code generation (to execute the plan) Running the query code

Steps in Query Processing

SQL Queries SQL Queries are decomposed into Query blocks: Select From Where Group By Having Translate Query blocks into Relational Algebraic expression Remember, SQL includes aggregate operators: MIN, MAX, SUM, COUNT etc. Part of the extended algebra Let s go back to Chapter 8 (Section 8.4.2)

Aggregate Functions and Grouping (Relational Algebra) Aggregate function: I < grouping attributes > I < function list > (R) Dno I COUNT Ssn, AVERAGE Salary (EMPLOYEE).

Semijoin ( ) R S = P A1,,An (R S) Where A 1,, A n are the attributes in R Example: Employee Dependents Students(sid,sname,gpa) People(ssn,pname,address) SQL: SELECT DISTINCT sid,sname,gpa FROM Students,People WHERE sname = pname; OR SELECT DISTINCT sid,sname,gpa FROM Students WHERE sname IN (SELECT pname FROM People); RA: Students People

EXTERNAL SORTING

External Merge Sort

Why are Sort Algorithms Important? Data requested from DB in sorted order is extremely common e.g., find students in increasing GPA order Why not just use quicksort in main memory?? What about if we need to sort 1TB of data with 1GB of RAM A classic problem in computer science!

So how do we sort big files? 1. Split into chunks small enough to sort in memory ( runs ) 2. Merge pairs (or groups) of runs using the external merge algorithm 3. Keep merging the resulting runs (each time = a pass ) until left with one sorted file!

2. EXTERNAL MERGE & SORT

Challenge: Merging Big Files with Small Memory How do we efficiently merge two sorted files when both are much larger than our main memory buffer?

External Merge Algorithm Input: 2 sorted lists of length M and N Output: 1 sorted list of length M + N Required: At least 3 Buffer Pages IOs: 2(M+N)

Key (Simple) Idea To find an element that is no larger than all elements in two lists, one only needs to compare minimum elements from each list. If: A : A < A > B : B < B @ Then: Min(A :, B : ) A E Min(A :, B : ) B F for i=1.n and j=1.m

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 1,5 2,22 7,11 20,31 23,24 25,30 Buffer Output: One merged sorted file Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 7,11 20,31 23,24 25,30 Buffer 1,5 2,22 Output: One merged sorted file Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 7,11 20,31 23,24 25,30 Buffer 5 22 1,2 Output: One merged sorted file Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 7,11 20,31 23,24 25,30 Buffer 5 22 Output: One merged sorted file 1,2 Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 7,11 20,31 23,24 25,30 Buffer 22 5 Output: One merged sorted file 1,2 Disk This is all the algorithm sees Which file to load a page from next?

External Merge Algorithm Main Memory Input: Two sorted files F 1 F 2 7,11 20,31 23,24 25,30 Buffer 22 5 Output: One merged sorted file 1,2 Disk We know that F 2 only contains values 22 so we should load from F 1!

External Merge Algorithm Main Memory Input: Two sorted files F 1 20,31 Buffer 7,11 F 2 23,24 25,30 22 5 Output: One merged sorted file 1,2 Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 20,31 Buffer 11 F 2 23,24 25,30 22 5,7 Output: One merged sorted file 1,2 Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 20,31 Buffer 11 F 2 23,24 25,30 22 Output: One merged sorted file 1,2 5,7 Disk

External Merge Algorithm Main Memory Input: Two sorted files F 1 20,31 Buffer 22 11 F 2 23,24 25,30 Output: One merged sorted file 1,2 5,7 And so on Disk

We can merge lists of arbitrary length with only 3 buffer pages. If lists of size M and N, then Cost: 2(M+N) IOs Each page is read once, written once

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file F 1 44,10 Disk 33,12 55,31 Main Memory Buffer Orange file = unsorted F 2 18,22 27,24 3,1 1. Split into chunks small enough to sort in memory

EXTERNAL MERGE SORT (BEFORE MERGE) CSC 261, Spring 2017, UR

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file F 1 44,10 Disk 33,12 55,31 Main Memory Buffer Orange file = unsorted F 2 18,22 27,24 3,1 1. Split into chunks small enough to sort in memory

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file F 1 Disk Main Memory Buffer Orange file = unsorted 44,10 33,12 55,31 F 2 18,22 27,24 3,1 1. Split into chunks small enough to sort in memory

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file F 1 Disk Main Memory Buffer Orange file = unsorted 10,12 31,33 44,55 F 2 18,22 27,24 3,1 1. Split into chunks small enough to sort in memory

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file Each sorted file is a called a run F 1 F 2 10,12 18,22 Disk 31,33 44,55 27,24 3,1 Main Memory Buffer 1,3 18,22 24,27 And similarly for F 2 1. Split into chunks small enough to sort in memory

External Merge Sort Algorithm Example: 3 Buffer pages 6-page file F 1 10,12 Disk 31,33 44,55 Main Memory Buffer F 2 1,3 18,22 24,27 2. Now just run the external merge algorithm & we re done!

Calculating IO Cost For 3 buffer pages, 6 page file: 1. Split into two 3-page files and sort in memory = 1 R + 1 W for each file = 2*(3 + 3) = 12 IO operations 2. Merge each pair of sorted chunks using the external merge algorithm = 2*(3 + 3) = 12 IO operations 3. Total cost = 24 IO

Running External Merge Sort on Larger Files 10,12 45,38 Disk 31,33 44,55 18,43 24,27 Assume we still only have 3 buffer pages (Buffer not pictured) 10,12 31,33 47,55 41,3 18,22 23,20 42,46 31,33 39,55 1,3 18,23 24,27 10,12 48,33 44,40 16,31 18,22 24,27

Running External Merge Sort on Larger Files 10,12 Disk 31,33 44,55 1. Split into files small enough to sort in buffer Assume we still only have 3 buffer pages (Buffer not pictured) 45,38 18,43 24,27 10,12 31,33 47,55 41,3 18,22 23,20 42,46 31,33 39,55 1,3 18,23 24,27 10,12 48,33 44,40 16,31 18,22 24,27

Running External Merge Sort on Larger Files 10,12 18,24 Disk 31,33 44,55 27,38 43,45 1. Split into files small enough to sort in buffer and sort Assume we still only have 3 buffer pages (Buffer not pictured) 10,12 31,33 47,55 3,18 20,22 23,41 31,33 39,42 46,55 1,3 18,23 24,27 10,12 16,18 33,40 44,48 22,24 27,31 Call each of these sorted files a run

Running External Merge Sort on Larger Files 10,12 18,24 10,12 3,18 31,33 1,3 10,12 Disk 31,33 44,55 27,38 43,45 31,33 47,55 20,22 23,41 39,42 46,55 18,23 24,27 33,40 44,48 10,12 33,38 3,10 23,31 1,3 31,33 10,12 Disk 18,24 27,31 43,44 45,55 12,18 20,22 33,41 47,55 18,23 24,27 39,42 46,55 16,18 22,24 Assume we still only have 3 buffer pages (Buffer not pictured) 2. Now merge pairs of (sorted) files the resulting files will be sorted! 16,18 22,24 27,31 27,31 33,40 44,48

Running External Merge Sort on Larger Files 10,12 18,24 Disk 31,33 44,55 27,38 43,45 10,12 33,38 Disk 18,24 27,31 43,44 45,55 3,10 18,20 Disk 10,12 12,18 22,23 24,27 Assume we still only have 3 buffer pages (Buffer not pictured) 10,12 3,18 31,33 47,55 20,22 23,41 3,10 23,31 12,18 20,22 33,41 47,55 31,31 43,44 33,33 38,41 45,47 55,55 3. And repeat 31,33 39,42 46,55 1,3 18,23 24,27 1,3 10,12 16,18 1,3 10,12 16,18 18,23 24,27 33,40 44,48 22,24 27,31 31,33 10,12 27,31 39,42 46,55 16,18 22,24 33,40 44,48 18,22 27,31 40,42 23,24 24,27 31,33 33,39 44,46 48,55 Call each of these steps a pass

Running External Merge Sort on Larger Files Disk Disk Disk Disk 10,12 31,33 44,55 10,12 18,24 27,31 3,10 10,12 12,18 1,3 3,10 10,10 18,24 27,38 43,45 33,38 43,44 45,55 18,20 22,23 24,27 12,12 12,16 18,18 10,12 31,33 47,55 3,10 12,18 20,22 31,31 33,33 38,41 18,18 20,22 22,23 3,18 20,22 23,41 23,31 33,41 47,55 43,44 45,47 55,55 23,24 24,24 27,27 31,33 39,42 46,55 1,3 18,23 24,27 1,3 10,12 16,18 27,31 31,31 31,33 1,3 18,23 24,27 31,33 39,42 46,55 18,22 23,24 24,27 33,33 33,38 39,40 10,12 33,40 44,48 10,12 16,18 22,24 27,31 31,33 33,39 41,42 43,44 44,45 16,18 22,24 27,31 27,31 33,40 44,48 40,42 44,46 48,55 46,47 48,55 55,55 4. And repeat!

Simplified 3-page Buffer Version Assume for simplicity that we split an N-page file into N singlepage runs and sort these; then: First pass: Merge N/2 pairs of runs each of length 1 page Unsorted input file Split & sort Second pass: Merge N/4 pairs of runs each of length 2 pages In general, for N pages, we do log 2 N passes +1 for the initial split & sort Each pass involves reading in & writing out all the pages = 2N IO Sorted! Merge Merge à 2N*( log 2 N +1) total IO cost!

Using B+1 buffer pages to reduce # of passes Suppose we have B+1 buffer pages now; we can: 1. Increase length of initial runs. Sort B+1 at a time! At the beginning, we can split the N pages into runs of length B+1 and sort these in memory IO Cost: 2N( log < N + 1) Starting with runs of length 1 2N( log < N B + 1 + 1) Starting with runs of length B+1

Using B+1 buffer pages to reduce # of passes Suppose we have B+1 buffer pages now; we can: 2. Perform a B-way merge. On each pass, we can merge groups of B runs at a time (vs. merging pairs of runs)! IO Cost: 2N( log < N + 1) 2N( log < N B + 1 + 1) Starting with runs of length 1 Starting with runs of length B+1 2N( log V N B + 1 + 1) Performing B-way merges

Algorithm fro Select Operation Read Section 18.3 (18.3.1, 18.3.2, 18.3.3, 18.3.4) Mostly covers searching: 1. Linear Search 2. Binary Search 3. Indexing 4. Hashing 5. B+ Tree (Skip bitmap index and functional index)

Algorithm for Join Operation The most time consuming operation

What you will learn about in this section 1. Nested Loop Join (NLJ) 2. Block Nested Loop Join (BNLJ) 3. Index Nested Loop Join (INLJ) 4. Sorted-Merge Join 5. Hash Join

RECAP: Joins

Joins: Example R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C A D A B C D 1 0 1 2 3 4 2 5 2 3 1 1 3 7 2 2 2 3 2 3 4 2

Joins: Example R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C A D A B C D 1 0 1 2 3 4 2 5 2 3 1 1 3 7 2 2 2 3 2 3 4 2 2 3 4 3

Joins: Example R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C A D A B C D 1 0 1 2 3 4 2 5 2 3 1 1 3 7 2 2 2 3 2 3 4 2 2 3 4 3 2 5 2 2

Joins: Example R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C A D A B C D 1 0 1 2 3 4 2 5 2 3 1 1 3 7 2 2 2 3 2 3 4 2 2 3 4 3 2 5 2 2 2 5 2 3

Joins: Example R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C A D A B C D 1 0 1 2 3 4 2 5 2 3 1 1 3 7 2 2 2 3 2 3 4 2 2 3 4 3 2 5 2 2 2 5 2 3 3 1 1 7

Semantically: A Subset of the Cross Product R S SELECT R.A,B,C,D FROM R, S WHERE R.A = S.A Example: Returns all pairs of tuples r R, s S such that r. A = s. A R S A B C D A B C 1 0 1 2 3 4 2 5 2 3 1 1 A D 3 7 2 2 2 3 Cross Produc t Filter by conditions (r.a = s.a) 2 3 4 2 2 3 4 3 2 5 2 2 2 5 2 3 3 1 1 7 Can we actually implement a join in this way?

Notes We write R S to mean join R and S by returning all tuple pairs where all shared attributes are equal We write R S on A to mean join R and S by returning all tuple pairs where attribute(s) A are equal For simplicity, we ll consider joins on two tables and with equality constraints ( equijoins ) However joins can merge > 2 tables, and some algorithms do support non-equality constraints!

Nested Loop Joins

Notes We are again considering IO aware algorithms: care about disk IO Given a relation R, let: T(R) = # of tuples in R P(R) = # of pages in R Recall that we read / write entire pages with disk IO Note also that we omit ceilings in calculations good exercise to put back in!

Nested Loop Join (NLJ) Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s)

Nested Loop Join (NLJ) Cost: Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s) P(R) 1. Loop over the tuples in R Note that our IO cost is based on the number of pages loaded, not the number of tuples!

Nested Loop Join (NLJ) Cost: Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s) P(R) + T(R)*P(S) 1. Loop over the tuples in R 2. For every tuple in R, loop over all the tuples in S Have to read all of S from disk for every tuple in R!

Nested Loop Join (NLJ) Cost: Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s) P(R) + T(R)*P(S) 1. Loop over the tuples in R 2. For every tuple in R, loop over all the tuples in S 3. Check against join conditions Note that NLJ can handle things other than equality constraints just check in the if statement!

Nested Loop Join (NLJ) Cost: Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s) P(R) + T(R)*P(S) + OUT 1. Loop over the tuples in R 2. For every tuple in R, loop over all the tuples in S 3. Check against join conditions 4. Write out (to page, then when page full, to disk)

Nested Loop Join (NLJ) Cost: Compute R S on A: for r in R: for s in S: if r[a] == s[a]: yield (r,s) P(R) + T(R)*P(S) + OUT What if R ( outer ) and S ( inner ) switched? P(S) + T(S)*P(R) + OUT Outer vs. inner selection makes a huge difference- DBMS needs to know which relation is smaller!

Block Nested Loop Join (BNLJ)

Block Nested Loop Join (BNLJ) Given 3 pages of memory Compute R S on A: for each page pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) Cost: P(R) 1. Load in 1 page of R at a time (leaving 1 page each free for S & output) Note: There could be some speedup here due to the fact that we re reading in multiple pages sequentially however we ll ignore this here!

Block Nested Loop Join (BNLJ) Cost: Given 3 pages of memory Compute R S on A: for each page pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) P R + P R. P(S) 1. Load in 1 page of R at a time (leaving 1 page each free for S & output) 2. For each page segment of R, load each page of S Note: Faster to iterate over the smaller relation first!

Block Nested Loop Join (BNLJ) Cost: Given 3 pages of memory Compute R S on A: for each page pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) P R + P R. P(S) 1. Load in 1 page of R at a time (leaving 1 page each free for S & output) 2. For each page segment of R, load each page of S 3. Check against the join conditions BNLJ can also handle non-equality constraints

Block Nested Loop Join (BNLJ) Cost: Given 3 pages of memory Compute R S on A: for each page pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) P R + P R. P(S) 1. Load 1 page of R at a time (leaving 1 page each free for S & output) 2. For each page segment of R, load each page of S 3. Check against the join conditions 4. Write out

Block Nested Loop Join (BNLJ) (B+1 pages of Memory) Given B+1 pages of memory Compute R S on A: for each B-1 pages pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) Cost: P(R) 1. Load in B-1 pages of R at a time (leaving 1 page each free for S & output) Note: There could be some speedup here due to the fact that we re reading in multiple pages sequentially however we ll ignore this here!

Block Nested Loop Join (BNLJ) Given B+1 pages of memory Compute R S on A: for each B-1 pages pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) Cost: P R + P R B 1 P(S) 1. Load in B-1 pages of R at a time (leaving 1 page each free for S & output) 2. For each (B-1)-page segment of R, load each page of S Note: Faster to iterate over the smaller relation first!

Block Nested Loop Join (BNLJ) Compute R S on A: ps: for each B-1 pages pr of R: for page ps of S: for each tuple r in pr: for each tuple s in if r[a] == s[a]: yield (r,s) Cost: Given B+1 pages of memory P R + P R B 1 P(S) 1. Load in B-1 pages of R at a time (leaving 1 page each free for S & output) 2. For each (B-1)-page segment of R, load each page of S 3. Check against the join conditions BNLJ can also handle non-equality constraints

Block Nested Loop Join (BNLJ) Cost: Given B+1 pages of memory Compute R S on A: for each B-1 pages pr of R: for page ps of S: for each tuple r in pr: for each tuple s in ps: if r[a] == s[a]: yield (r,s) P R + b c Vd: P(S) + OUT 1. Load in B-1 pages of R at a time (leaving 1 page each free for S & output) 2. For each (B-1)-page segment of R, load each page of S 3. Check against the join conditions 4. Write out

BNLJ vs. NLJ: Benefits of IO Aware In BNLJ, by loading larger chunks of R, we minimize the number of full disk reads of S We only read all of S from disk for every (B-1)-page segment of R! Still the full cross-product, but more done only in memory NLJ P(R) + T(R)*P(S) + OUT BNLJ P R + b c Vd: P(S) + OUT BNLJ is faster by roughly (Vd:)e(c) b(c)

BNLJ vs. NLJ: Benefits of IO Aware Example: R: 500 pages S: 1000 pages 100 tuples / page We have 12 pages of memory (B = 11) Ignoring OUT here NLJ: Cost = 500 + 50,000*1000 = 50 Million IOs ~= 140 hours BNLJ: Cost = 500 + fgg :ggg :g = 50 Thousand IOs ~= 0.14 hours A very real difference from a small change in the algorithm!

Acknowledgement Some of the slides in this presentation are taken from the slides provided by the authors. Many of these slides are taken from cs145 course offered by Stanford University.