CS542. Algorithms on Secondary Storage Sorting Chapter 13. Professor E. Rundensteiner. Worcester Polytechnic Institute

Similar documents
External Sorting. Chapter 13. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

External Sorting. Chapter 13. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

External Sorting. Chapter 13. Comp 521 Files and Databases Fall

EXTERNAL SORTING. Sorting

Why Sort? Data requested in sorted order. Sor,ng is first step in bulk loading B+ tree index. e.g., find students in increasing GPA order

Carnegie Mellon Univ. Dept. of Computer Science Database Applications. Why Sort? Why Sort? select... order by

Sorting a file in RAM. External Sorting. Why Sort? 2-Way Sort of N pages Requires Minimum of 3 Buffers Pass 0: Read a page, sort it, write it.

Spring 2017 EXTERNAL SORTING (CH. 13 IN THE COW BOOK) 2/7/17 CS 564: Database Management Systems; (c) Jignesh M. Patel,

Database Applications (15-415)

Evaluation of Relational Operations

Last Class. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Why do we need to sort? Today's Class

External Sorting Implementing Relational Operators

CompSci 516: Database Systems

Last Class Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Dtb Database Systems. Announcement

NOTE: sorting using B-trees to be assigned for reading after we cover B-trees.

Announcements. Reading Material. Today. Different File Organizations. Selection of Indexes 9/24/17. CompSci 516: Database Systems

External Sorting Sorting Tables Larger Than Main Memory

Database Applications (15-415)

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

Evaluation of relational operations

EECS 647: Introduction to Database Systems

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

Hash-Based Indexing 165

Lecture 11. Lecture 11: External Sorting

Data on External Storage

Database Applications (15-415)

Motivation for Sorting. External Sorting: Overview. Outline. CSE 190D Database System Implementation. Topic 3: Sorting. Chapter 13 of Cow Book

Chapter 12: Query Processing. Chapter 12: Query Processing

Kathleen Durant PhD Northeastern University CS Indexes

CS 5614: (Big) Data Management Systems. B. Aditya Prakash Lecture #5: Hashing and Sor5ng

Evaluation of Relational Operations: Other Techniques

Overview of Storage and Indexing

Track Join. Distributed Joins with Minimal Network Traffic. Orestis Polychroniou! Rajkumar Sen! Kenneth A. Ross

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

Tree-Structured Indexes

Chapter 12: Query Processing

Midterm 1: CS186, Spring I. Storage: Disk, Files, Buffers [11 points] SOLUTION. cs186-

Sorting & Aggregations

Readings. Important Decisions on DB Tuning. Index File. ICOM 5016 Introduction to Database Systems

Tree-Structured Indexes

Overview of Storage and Indexing

Tree-Structured Indexes

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

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

Chapter 13: Query Processing

THE B+ TREE INDEX. CS 564- Spring ACKs: Jignesh Patel, AnHai Doan

Data Management for Data Science

CSE 444: Database Internals. Lectures 5-6 Indexing

CSE 544 Principles of Database Management Systems. Magdalena Balazinska Winter 2009 Lecture 6 - Storage and Indexing

Advanced Database Systems

Tree-Structured Indexes. Chapter 10

Review: Memory, Disks, & Files. File Organizations and Indexing. Today: File Storage. Alternative File Organizations. Cost Model for Analysis

! 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

Indexing. Chapter 8, 10, 11. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Tree-Structured Indexes

Evaluation of Relational Operations: Other Techniques

RELATIONAL OPERATORS #1

Announcements. Reading Material. Recap. Today 9/17/17. Storage (contd. from Lecture 6)

Lecture 8 Index (B+-Tree and Hash)

Overview of Storage and Indexing

Evaluation of Relational Operations

Evaluation of Relational Operations

Background: disk access vs. main memory access (1/2)

CS-245 Database System Principles

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

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

Review. Support for data retrieval at the physical level:

Query Processing & Optimization

Midterm 1: CS186, Spring I. Storage: Disk, Files, Buffers [11 points] cs186-

Query Processing: A Systems View. Announcements (March 1) Physical (execution) plan. CPS 216 Advanced Database Systems

Lecture 13. Lecture 13: B+ Tree

Tree-Structured Indexes

Architecture and Implementation of Database Systems (Summer 2018)

Data Storage and Disk Structure

CS240 Fall Mike Lam, Professor. Quick Sort

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

Context. File Organizations and Indexing. Cost Model for Analysis. Alternative File Organizations. Some Assumptions in the Analysis.

Why Is This Important? Overview of Storage and Indexing. Components of a Disk. Data on External Storage. Accessing a Disk Page. Records on a Disk Page

Database System Concepts

Final Exam Review. Kathleen Durant CS 3200 Northeastern University Lecture 22

CMSC424: Database Design. Instructor: Amol Deshpande

Announcements (March 1) Query Processing: A Systems View. Physical (execution) plan. Announcements (March 3) Physical plan execution

Database Management System

User Perspective. Module III: System Perspective. Module III: Topics Covered. Module III Overview of Storage Structures, QP, and TM

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

Implementation of Relational Operations: Other Operations

Overview of Storage and Indexing

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

Overview of Storage and Indexing

Administrivia. Tree-Structured Indexes. Review. Today: B-Tree Indexes. A Note of Caution. Introduction

Tree-Structured Indexes. A Note of Caution. Range Searches ISAM. Example ISAM Tree. Introduction

Query Processing. Introduction to Databases CompSci 316 Fall 2017

Storage hierarchy. Textbook: chapters 11, 12, and 13

Storage and Indexing

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

Lecture 12. Lecture 12: Access Methods

Principles of Data Management. Lecture #5 (Tree-Based Index Structures)

Indexes. File Organizations and Indexing. First Question to Ask About Indexes. Index Breakdown. Alternatives for Data Entries (Contd.

Transcription:

CS542 Algorithms on Secondary Storage Sorting Chapter 13. Professor E. Rundensteiner

Lesson: Using secondary storage effectively Data too large to live in memory Regular algorithms on small scale only Must design algorithms for large data I/O costs dominate must reduce I/O

Why Sort? A classic problem in computer science! Data requested in sorted order via SQL: e.g., find students in increasing gpa order Sorting is first step in bulk loading B+ tree index. Sorting useful for eliminating duplicate copies in a collection of records Sort-merge join algorithm involves sorting. Problem: sort 1Gb of data with 1Mb of RAM. why not virtual memory?

2-Way Sort: Requires 3 Buffers PREPARE: 1 pass: Read a page, sort it, write it. INPUT / OUTPUT Disk Main memory buffer Disk MERGE: Many passes: Merge smaller runs into INPUT 1 INPUT 2 OUTPUT larger runs. Disk Main memory buffer Disk

Two-Way External Merge Sort

Idea: Divide and conquer: sort subfiles and merge into larger sorts 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,6 4,9 7,8 5,6 1,3 2 2,3 4,6 2,3 4,4 6,7 8,9 4,7 8,9 1,3 5,6 2 1,2 3,5 6 Input file PASS 0 1-page runs PASS 1 2-page runs PASS 2 4-page runs PASS 3 1,2 2,3 3,4 4,5 6,6 7,8 9 8-page runs

Cost? 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,6 4,9 7,8 5,6 1,3 2 2,3 4,6 2,3 4,7 8,9 1,3 5,6 2 Input file PASS 0 1-page runs PASS 1 2-page runs PASS 2 4,4 6,7 8,9 1,2 3,5 6 4-page runs PASS 3 1,2 2,3 3,4 4,5 6,6 7,8 9 8-page runs

Costs for pass : all pages # of passes : height of tree Total cost : product of above 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,6 4,9 7,8 5,6 1,3 2 2,3 4,6 2,3 4,4 6,7 8,9 4,7 8,9 1,2 2,3 3,4 4,5 6,6 7,8 9 1,3 5,6 2 1,2 3,5 6 Input file PASS 0 1-page runs PASS 1 2-page runs PASS 2 4-page runs PASS 3 8-page runs

Each pass reads + writes each page in file. N pages in file => 2N Number of passes log N 1 2 So total cost is: 2 N log N 1 2 3,4 6,2 9,4 8,7 5,6 3,1 2 3,4 2,6 4,9 7,8 5,6 1,3 2 2,3 4,6 2,3 4,4 6,7 8,9 4,7 8,9 1,2 2,3 3,4 4,5 6,6 7,8 9 1,3 5,6 2 1,2 3,5 6 Input file PASS 0 1-page runs PASS 1 2-page runs PASS 2 4-page runs PASS 3 8-page runs

External Merge Sort What if we had more buffer pages? How do we utilize them wisely? - Two main ideas!

Phase 1 : Prepare INPUT 1... Disk INPUT 2... INPUT B B Main memory buffers Disk Construct as large as possible starter lists.

Phase 2 : Merge INPUT 1... INPUT 2... OUTPUT Disk INPUT B-1 B Main memory buffers Disk Compose as many sorted sublists into one long sorted list.

Cost of External Merge Sort Cost = 2N * (# of passes) # of passes: 1 log N / B B 1

Example Buffer : with 5 buffer pages File to sort : 108 pages Pass 0: Size of each run? Number of runs? Pass 1: Size of each run? Number of runs? etc???

Example Buffer : with 5 buffer pages File to sort : 108 pages Pass 0: 108 / 5 = 22 sorted runs of 5 pages each (last run is only 3 pages) Pass 1: 22 / 4 = 6 sorted runs of 20 pages each (last run is only 8 pages) Pass 2: 2 sorted runs, 80 pages and 28 pages Pass 3: Sorted file of 108 pages Total I/O costs:? 2*N * (4 passes)

Example Buffer : with 5 buffer pages ; File to sort : 108 pages Total IO costs = 2 * N ( # of passes ) = 2N * ( 1 log N / B B 1 log_ 4 = 2 * 108 * (1 + ) 108/ 5 = 2 * 108 * (1 + log_4 ( 22 )) = 2 * 108 * 4

Number of Passes of External Sort - gain of utilizing all available buffers - importance of a high fan-in during merging N B=3 B=5 B=9 B=17 B=129 B=257 100 7 4 3 2 1 1 1,000 10 5 4 3 2 2 10,000 13 7 5 4 2 2 100,000 17 9 6 5 3 3 1,000,000 20 10 7 5 3 3 10,000,000 23 12 8 6 4 3 100,000,000 26 14 9 7 4 4 1,000,000,000 30 15 10 8 5 4

Optimizing External Sorting Cost metric? I/O only (until now) CPU is nontrivial, worth reducing

Optimizing Internal Sorting: Phase 1 12 4... 2 8 10 3 5 INPUT CURRENT SET OUTPUT 1 input, 1 output, B-2 current set buffer Main idea: repeatedly pick tuple in current set with smallest k value that is still greater than largest k value in output buffer and append it to output buffer

Internal Sort Algorithm 12 4... 2 9 10 3 5 8 INPUT CURRENT SET OUTPUT

Internal Sort Algorithm 2 12 4... 10 4 3 5 8 9 INPUT CURRENT SET OUTPUT

Internal Sort Algorithm 12 4... 2 8 10 3 5 INPUT CURRENT SET OUTPUT Input & Output? new input page is read in, if it is fully consumed. Output is written out, when it is full When terminate current run? When all tuples in current set are smaller than largest tuple in output buffer.

Analysis of Heapsort Fact: Average length of a run in heapsort is 2B The snowplow analogy Worst-Case: What is min length of a run? How does this arise? Best-Case: What is max length of a run? How does this arise? Quicksort is faster, but... B

Optimizing External Sorting: Phase 2 Further optimization for external sorting: Blocked I/O Double buffering

Blocking of Buffer Pages: Ext. Sort Thus far : Do 1 I/O a page at a time But : Reading a block of pages sequentially is cheaper Make input/output a block of b pages block size b INPUT 1 INPUT 1 INPUT 2 INPUT 2 OUTPUT OUTPUT' block size b Disk INPUT k INPUT k Disk B main memory buffers

Example: Blocking for Merge Sort Idea : buffer blocks = b pages; 1 buffer block of b pages for input, 1 buffer block of b pages for output then we can merge B-b/b runs in that first pass Example : 10 buffer pages if one-page input and output buffer blocks, then we produce 9 runs at a time if two-page input and output buffer blocks, then we produce 4 runs at a time

Blocking of Buffer Pages block size b INPUT 1 INPUT 1 INPUT 2 INPUT 2 OUTPUT OUTPUT' block size b Disk INPUT k INPUT k Disk B main memory buffers, k-way merge Pro: Save total costs of IOs Cons: Reduce fan-out during merge passes In practice, most files still sorted in 2-3 passes.

Double Buffering Overlap CPU and I/O To reduce wait time for I/O request to complete, prefetch into `shadow block. INPUT 1 INPUT 1' INPUT 2 INPUT 2' OUTPUT OUTPUT' Disk INPUT k INPUT k' b block size Disk B main memory buffers, k-way merge Potentially, more passes In practice, most files still sorted in 2-3 passes.

Using B+ Trees for Sorting Scenario: Table to be sorted has B+ tree index on sorting column(s). Idea: Retrieve records in order by traversing leaf pages. Is this a good idea? Cases to consider: B+ tree is clustered B+ tree is not clustered Good idea! Bad idea!

Clustered B+ Tree Used for Sorting Traversal of tree from root to left-most leaf, then if Alt. 1, retrieve all leaf pages in order If Alt. 2, additional cost of retrieving actual data records Index (Directs search) Data Entries ("Sequence set") Data Records Always better than external sorting!

Unclustered B+ Tree Used for Sorting Alternative (2) for data; each data entry contains rid of a data record. In general, one I/O per data record! Index (Directs search) Data Entries ("Sequence set") Data Records

External Sorting vs. Unclustered Index N Sorting p=1 p=10 p=100 100 200 100 1,000 10,000 1,000 2,000 1,000 10,000 100,000 10,000 40,000 10,000 100,000 1,000,000 100,000 600,000 100,000 1,000,000 10,000,000 1,000,000 8,000,000 1,000,000 10,000,000 100,000,000 10,000,000 80,000,000 10,000,000 100,000,000 1,000,000,000 p: # of records per page (p=100 realistic) B=1,000 and block size=32 for sorting

Summary External sorting is important; DBMS may dedicate part of buffer pool for sorting! External merge sort minimizes disk I/O costs: In practice, # of phases rarely more than 3. Choice of internal sort algorithm may matter. Best sorts are wildly fast: Despite 40+ years of research, still improving! Clustered B+ tree is good for sorting; unclustered tree is usually very bad.