Lecture 9

advertisement
Sorting
1
Motivation
Sells( bar,
Joe’s
Joe’s
Sue’s
Sue’s
beer,
Bud
Miller
Bud
Coors
price )
2.50
2.75
2.50
3.00
Bars( bar, addr
)
Joe’s Maple St.
Sue’s River Rd.
Query: Find all locations that sell beer for less than 2.75.
Select Bars.addr
From Sells, Bars
Where (Sells.bar = Bars.bar) and (Sells.price < 2.75)
2
Motivation
A straightforward
join is nested loop
Another possible
join is to sort
then merge
the tables
PROJECTBars.addr
SELECTSells.price < 2.75
JOIN
Sells.bar = Bars.bar
Which one is faster?
Need a cost model
Sells
Bars
3
Illustrating the Two Different Join Algs
147382
(4,4), (3,3), (2,2)
26934
123478
23469
4
The I/O Model of Computation
• In main memory algorithms
– we care about CPU time
• In databases time is dominated by I/O cost
• Assumption: cost is given only by I/O
• Consequence:
– need to redesign certain algorithms
– compute cost using I/O read/writes
• Will illustrate here with sorting
5
Sorting
• Illustrates the difference in algorithm design
when your data is not in main memory:
– Problem: sort 1Gb of data with 1Mb of RAM.
• Arises in many places in database systems:
–
–
–
–
–
Data requested in sorted order (ORDER BY)
Needed for grouping operations
First step in sort-merge join algorithm
Duplicate removal
Bulk loading of B+-tree indexes.
6
2-Way Merge-sort:
Requires 3 Buffers
• Pass 1: Read a page, sort it, write it.
– only one buffer page is used
• Pass 2, 3, …, etc.:
– three buffer pages used.
INPUT 1
OUTPUT
INPUT 2
Disk
Main memory
buffers
Disk
7
Two-Way External Merge Sort
• Each pass we read + write
each page in file.
• N pages in the file => the
number of passes
  log 2 N   1
6,2
9,4
8,7
5,6
3,1
2
3,4
2,6
4,9
7,8
5,6
1,3
2
4,7
8,9
2,3
4,6
1,3
5,6
Input file
PASS 0
1-page runs
PASS 1
2
2-page runs
PASS 2
2,3
• So total cost is:

3,4

2 N log 2 N   1
• Improvement: start with
larger runs
• Sort 1GB with 1MB memory
in 10 passes
4,4
6,7
8,9
1,2
3,5
6
4-page runs
PASS 3
1,2
2,3
3,4
8-page runs
4,5
6,6
7,8
9
8
3 4
6 2
9 4
8 7
5 6
3 1
2
Input file
PASS 0
3 44
2 6
4 9
7 8
5 6
1 3
2
1-page runs
PASS 1
2-page runs
PASS 2
Two-Way External Merge Sort
9
2 3
4 7
1 3
4 6
8 9
5 6
2-page runs
2
PASS 2
2 3
4 4
1 2
6 7
3 5
8 9
6
4-page runs
PASS 3
8-page runs
10
Can We Do Better ?
• We have more main memory
• Should use it to improve performance
11
Cost Model for Our Analysis
•
•
•
•
B: Block size
M: Size of main memory
N: Number of records in the file
R: Size of one record
12
External Merge-Sort
• Phase one: load M bytes in memory, sort
– Result: runs of length M/R records
...
Disk
M/R records
M bytes of main memory
...
Disk
13
Phase Two
• Merge M/B – 1 runs into a new run
• Result: runs have now M/R (M/B – 1) records
Input 1
...
Input 2
....
Output
...
Input M/B
Disk
M bytes of main memory
Disk
14
Phase Three
• Merge M/B – 1 runs into a new run
• Result: runs have now M/R (M/B – 1)2 records
Input 1
...
Input 2
....
Output
...
Input M/B
Disk
M bytes of main memory
Disk
15
Cost of External Merge Sort
• Number of passes:
• Think differently
1  log M / B 1 NR / M 
– Given B = 4KB, M = 64MB, R = 0.1KB
– Pass 1: runs of length M/R = 640000
• Have now sorted runs of 640000 records
– Pass 2: runs increase by a factor of M/B – 1 = 16000
• Have now sorted runs of 10,240,000,000 = 1010 records
– Pass 3: runs increase by a factor of M/B – 1 = 16000
• Have now sorted runs of 1014 records
• Nobody has so much data !
• Can sort everything in 2 or 3 passes !
16
Extra Materials on Sorting
Read only after we have covered B+
tree, and only if you want to know
more about sorting
Chapter 13
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
17
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 (Why?)
 Sort-merge join algorithm involves sorting.
 Problem: sort 1Gb of data with 1Mb of RAM.


why not virtual memory?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
18
2-Way Sort: Requires 3 Buffers

Pass 1: Read a page, sort it, write it.


only one buffer page is used
Pass 2, 3, …, etc.:

three buffer pages used.
INPUT 1
OUTPUT
INPUT 2
Disk
Main memory buffers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Disk
19
Two-Way External Merge Sort


Each pass we read + write
each page in file.
N pages in the file => the
number of passes
  log2 N   1

So toal cost is:

6,2
9,4
8,7
5,6
3,1
2
3,4
2,6
4,9
7,8
5,6
1,3
2
4,7
8,9
2,3
4,6
1,3
5,6
Input file
PASS 0
1-page runs
PASS 1
2
2-page runs
PASS 2
2,3

2 N log 2 N   1

3,4
4,4
6,7
8,9
Idea: Divide and conquer:
sort subfiles and merge
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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
20
General External Merge Sort
 More than 3 buffer pages. How can we utilize them?
 To sort a file with N pages using B buffer pages:


Pass 0: use B buffer pages. Produce  N / B sorted runs of B
pages each.
Pass 2, …, etc.: merge B-1 runs.
INPUT 1
...
INPUT 2
...
OUTPUT
...
INPUT B-1
Disk
B Main memory buffers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Disk
21
Cost of External Merge Sort
Number of passes: 1   log B 1  N / B  
 Cost = 2N * (# of passes)
 E.g., with 5 buffer pages, to sort 108 page file:





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
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
22
Number of Passes of External Sort
N
B=3 B=5
100
7
4
1,000
10
5
10,000
13
7
100,000
17
9
1,000,000
20
10
10,000,000
23
12
100,000,000
26
14
1,000,000,000 30
15
B=9
3
4
5
6
7
8
9
10
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
B=17 B=129 B=257
2
1
1
3
2
2
4
2
2
5
3
3
5
3
3
6
4
3
7
4
4
8
5
4
23
Internal Sort Algorithm
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
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
24
More on Heapsort

Fact: average length of a run in heapsort is 2B


Worst-Case:



What is min length of a run?
How does this arise?
Best-Case:



The “snowplow” analogy
B
What is max length of a run?
How does this arise?
Quicksort is faster, but ...
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
25
I/O for External Merge Sort
… longer runs often means fewer passes!
 Actually, do I/O a page at a time
 In fact, read a block of pages sequentially!
 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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
26
Number of Passes of Optimized Sort
N
100
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
B=1,000
1
1
2
3
3
4
5
5
B=5,000
1
1
2
2
2
3
3
4
B=10,000
1
1
1
2
2
3
3
3
 Block size = 32, initial pass produces runs of size 2B.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
27
Double Buffering

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
INPUT 2'
OUTPUT
OUTPUT'
b
Disk
INPUT k
block size
Disk
INPUT k'
B main memory buffers, k-way merge
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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
B+ tree is not clustered
Good idea!
Could be a very bad idea!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
30
Clustered B+ Tree Used for Sorting


Cost: root to the leftmost leaf, then retrieve
all leaf pages
(Alternative 1)
If Alternative 2 is used?
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!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
32
External Sorting vs. Unclustered Index
N
100
1,000
10,000
100,000
1,000,000
10,000,000
Sorting
p=1
p=10
p=100
200
2,000
40,000
600,000
8,000,000
80,000,000
100
1,000
10,000
100,000
1,000,000
10,000,000
1,000
10,000
100,000
1,000,000
10,000,000
100,000,000
10,000
100,000
1,000,000
10,000,000
100,000,000
1,000,000,000
 p: # of records per page
 B=1,000 and block size=32 for sorting
 p=100 is the more realistic value.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
33
Summary
External sorting is important; DBMS may dedicate
part of buffer pool for sorting!
 External merge sort minimizes disk I/O cost:






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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
34
Summary, cont.

Choice of internal sort algorithm may matter:



The best sorts are wildly fast:


Quicksort: Quick!
Heap/tournament sort: slower (2x), longer runs
Despite 40+ years of research, we’re still
improving!
Clustered B+ tree is good for sorting;
unclustered tree is usually very bad.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
35
Download