External Sorting - PowerPoint PPT Presentation

About This Presentation
Title:

External Sorting

Description:

Sorting useful for eliminating duplicate copies in a collection of records ... The 'snowplow' analogy. Worst-Case: What is min length of a run? How does this arise? ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 33
Provided by: RaghuRamak241
Learn more at: http://web.cs.wpi.edu
Category:
Tags: external | sorting

less

Transcript and Presenter's Notes

Title: External Sorting


1
External Sorting
  • Chapter 13

2
Why Sort?
  • A classic problem in computer science!
  • Data requested in sorted order
  • 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?

3
Using secondary storage effectively
  • General Wisdom
  • I/O costs dominate
  • Design algorithms to reduce I/O

4
2-Way Sort Requires 3 Buffers
  • Phase 1 PREPARE.
  • Read a page, sort it, write it.
  • only one buffer page is used
  • Phase 2, 3, , etc. MERGE
  • three buffer pages used.

INPUT 1
OUTPUT
INPUT 2
Main memory buffers
Disk
Disk
5
Two-Way External Merge Sort
Input file
6,2
2
3,4
9,4
8,7
5,6
3,1
PASS 0
1-page runs
1,3
2
3,4
5,6
2,6
4,9
7,8
PASS 1
  • Idea Divide and conquer sort subfiles and
    merge into larger sorts

4,7
1,3
2,3
2-page runs
8,9
5,6
2
4,6
PASS 2
2,3
4,4
1,2
4-page runs
6,7
3,5
6
8,9
PASS 3
1,2
2,3
3,4
8-page runs
4,5
6,6
7,8
9
6
Two-Way External Merge Sort
Input file
6,2
2
3,4
9,4
8,7
5,6
3,1
PASS 0
  • Costs for pass
  • all pages
  • of passes
  • height of tree
  • Total cost
  • product of above

1-page runs
1,3
2
3,4
5,6
2,6
4,9
7,8
PASS 1
4,7
1,3
2,3
2-page runs
8,9
5,6
2
4,6
PASS 2
2,3
4,4
1,2
4-page runs
6,7
3,5
6
8,9
PASS 3
1,2
2,3
3,4
8-page runs
4,5
6,6
7,8
9
7
Two-Way External Merge Sort
Input file
6,2
2
3,4
9,4
8,7
5,6
3,1
  • Each pass we read write each page in file.
  • N pages in file gt 2N
  • Number of passes
  • So total cost is

PASS 0
1-page runs
1,3
2
3,4
5,6
2,6
4,9
7,8
PASS 1
4,7
1,3
2,3
2-page runs
8,9
5,6
2
4,6
PASS 2
2,3
4,4
1,2
4-page runs
6,7
3,5
6
8,9
PASS 3
1,2
2,3
3,4
8-page runs
4,5
6,6
7,8
9
8
External Merge Sort
  • What if we had more buffer pages?
  • How do we utilize them wisely ?

-? Two main ideas !
9
Phase 1 Prepare
INPUT 1
. . .
INPUT 2
. . .
INPUT B
Disk
Disk
B Main memory buffers
  • Construct as large as possible starter lists.

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

11
General External Merge Sort
  • How can we utilize more than 3 buffer pages?
  • To sort a file with N pages using B buffer pages
  • Pass 0 use B buffer pages.
    Produce
    sorted runs of B pages each.
  • Pass 1, 2, , etc. merge B-1 runs.

INPUT 1
. . .
. . .
INPUT 2
. . .
OUTPUT
INPUT B-1
Disk
Disk
B Main memory buffers
12
Cost of External Merge Sort
  • Number of passes
  • Cost 2N ( of passes)

13
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?
  • Pass 2 ???

14
Example
  • Buffer with 5 buffer pages
  • File to sort 108 pages
  • Pass 0 22 sorted runs of 5
    pages each (last run is only 3 pages)
  • Pass 1 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 ?

15
Example
  • Buffer with 5 buffer pages
  • File to sort 108 pages
  • Pass 0 22 sorted runs of 5
    pages each (last run is only 3 pages)
  • Pass 1 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 2N (4 passes)

16
Cost of External Merge Sort
  • Number of passes
  • Cost 2N ( of passes)
  • E.g., with 5 buffer pages, to sort 108 page file
  • Pass 0 22 sorted runs of 5
    pages each (last run is only 3 pages)
  • Pass 1 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

17
Number of Passes of External Sort
  • gain of utilizing all available buffers
  • importance of a high fan-in during merging

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

19
Internal Algorithm Heap Sort
  • Quicksort is a fast way to sort in memory.
  • An alternative is tournament sort (a.k.a.
    heapsort)
  • Top Read in B blocks
  • Output move smallest record to output buffer
  • Read in a new record r
  • insert r into heap
  • if r not smallest, then GOTO Output
  • else remove r from heap
  • output heap in order GOTO Top

20
Internal Sort Algorithm
2
8
10
12
3
. . .
4
5
INPUT
CURRENT SET
OUTPUT
  • 1 input, 1 output, B-2 current set
  • 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

21
Internal Sort Algorithm
2
8
10
12
3
. . .
4
5
INPUT
CURRENT SET
OUTPUT
  • Input Output? new input page is read in if
    it is 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.

22
More on 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 ...

23
Optimizing External Sorting
  • Further optimization for external sorting.
  • Blocked I/O
  • Double buffering

24
I/O for External Merge Sort
  • Thus far do 1 I/O a page at a time
  • But cost also includes real page read/write time.
  • Reading a block of pages sequentially is cheaper!
  • Suggests we should make each buffer
    (input/output) be a block of pages.
  • But this will reduce fan-out during merge passes!
  • In practice, most files still sorted in 2-3
    passes.

25
I/O for External Merge sort
  • Example
  • buffer blocks b pagesset one buffer block for
    input, one buffer block for outputmerge B-b/b
    runs in each pass
  • e.g., 10 buffer pages 9 runs at a time with
    one-page input and output buffer blocks 4 runs
    at a time with two-page input and output buffer
    block

26
Number of Passes of Optimized Sort
  • Block size 32, initial pass produces runs of
    size 2B.
  • Cost ( 32-page block R/W) (cost of 32-page
    block I/O)

27
Double Buffering Overlap CPU and I/O
  • To reduce wait time for I/O request to complete,
    can prefetch into shadow block.
  • Potentially, more passes in practice, most files
    still sorted in 2-3 passes.

INPUT 1
INPUT 1'
INPUT 2
OUTPUT
INPUT 2'
OUTPUT'
b
block size
Disk
INPUT k
Disk
INPUT k'
B main memory buffers, k-way merge
28
Sorting Records!
  • Sorting has become a blood sport!
  • Parallel sorting is the name of the game ...
  • Datamation Sort 1M records of size 100 bytes
  • Typical DBMS 15 minutes
  • World record 3.5 seconds
  • 12-CPU SGI machine, 96 disks, 2GB of RAM
  • New benchmarks proposed
  • Minute Sort How many can you sort in 1 minute?
  • Dollar Sort How many can you sort for 1.00?

29
Using B Trees for Sorting
  • Scenario Table to be sorted has B tree index on
    sorting column(s).
  • Idea Can retrieve records in order by traversing
    leaf pages.
  • Is this a good idea?
  • Cases to consider
  • B tree is clustered Good idea!
  • B tree is not clustered Could be a very bad idea!

30
Clustered B Tree Used for Sorting
  • Cost
  • root to left-most leaf, then retrieve all
    leaf pages (Alternative 1)
  • For Alternative 2, additional cost of retrieving
    data records each page fetched just once.

Index
(Directs search)
Data Entries
("Sequence set")
Data Records
  • Always better than external sorting!

31
Unclustered B Tree Used for Sorting
  • Alternative (2) for data entries 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
32
External Sorting vs. Unclustered Index
  • p of records per page
  • B1,000 and block size32 for sorting
  • p100 is the more realistic value.

33
Summary
  • External sorting is important DBMS may dedicate
    part of buffer pool for sorting!
  • External merge sort minimizes disk I/O costs
  • Pass 0 Produces sorted runs of size B ( buffer
    pages).
  • Later passes merge runs.
  • of runs merged at a time depends on B, and
    block size.
  • Larger block size means less I/O cost per page.
  • Larger block size means smaller runs merged.
  • In practice, of runs rarely more than 2 or 3.

34
Summary, cont.
  • Choice of internal sort algorithm may matter.
  • The best sorts are wildly fast
  • Despite 40 years of research, were still
    improving!
  • Clustered B tree is good for sorting
    unclustered tree is usually very bad.
Write a Comment
User Comments (0)
About PowerShow.com