SlideShare a Scribd company logo
1 of 11
Download to read offline
Sorting and
Aggregation Algorithms
2019-05-06 유동호
About Sorting Tuples
• 만약 데이터가 메모리에 모두 올릴 수 있으면 퀵소트 돌리면 된다.

• 하지만 데이터가 모두 메모리에 올릴 수 없다면…
External Merge Sort
• Sorting Phase

• 메인메모리 단위의 작은 청크 데이터를 각각 정렬하고 다시 디스크
에 작성한다.

• Merge Phase

• 정렬된 메인메모리 크기 단위의 서브파일들을 하나의 단일 파일로
병합시킨다.
2-Way External Merge Sort
• 파일은 N 페이지, DBMS 메모리 버퍼는 B 사이즈

• Pass #0

• 테이블의 매 B 페이지마다 read & sort & write

• 각 페이지에 대한 위 작업에 대한 결과를 ‘run’ 이라 정의

• Pass #1

• 재귀적으로 ‘run’ 의 쌍을 두배의 ‘run’ 으로 병합

• 위 작업은 총 3개의 버퍼 페이지를 사용하게 됨(2 inputs, 1 output)
2-Way External Merge Sort
2-Way External Merge Sort
General External MergeSort
• Pass #0

• B 버퍼 페이지를 사용한다

• N / B 개수로 B 크기의 정렬된 run 을 만든다.

• Pass #1, 2, 3, …

• B - 1 개수의 run 들을 병합시킨다.
General External MergeSort
• Example: N=108, B=5
• Pass #0: N=108 / B=5 = 하나당 5페이지 분량 22개의 run 들이 만들어진다. (마지막 run 은 3페이지만)

• Pass #1: N'=22 / B-1=4 = 하나당 20페이지 분량 6개의 run 들이 만들어진다. (마지막 run 은 8페이지만)

• Pass #2: N''=6 / B-1=4 = 각각 80페이지와 28페이지 분량 2개의 run 들이 만들어진다.

• Pass #3: 정렬된 108페이지의 단일 파일

• Number pf passes = 1 + (logB-1(N / B))

• Total I/O Cost = 2N * (# of passes)
Sorting Aggregation
Sorting Aggregation
• 만약 데이터가 정렬될 필요가 없다면?

• GROUP BY 로 Aggregation 시

• DISTINCT 로 중복 제거시

• 위 경우 해싱이 더 좋은 대안이다

• 연산 코스트가 정렬보다 더 저렴하다.
Hashing Aggregate
• DBMS 가 테이블을 스캔할 때, 일시적으로 해시 테이블을 채운다.

• 각 레코드의 해시가 이미 해시 테이블에 들어있는지 확인한다:

• DISTINCT: 중복 제거를 수행한다.

• GROUP BY: aggregation 을 진행한다.

• 만약 데이터가 메모리에 맞는 사이즈면 쉽지만 아니라면…

More Related Content

More from Dongho Yu

2019 lightning talk_6
2019 lightning talk_62019 lightning talk_6
2019 lightning talk_6Dongho Yu
 
2019 lightning talk_5
2019 lightning talk_52019 lightning talk_5
2019 lightning talk_5Dongho Yu
 
2019 lightning talk_4
2019 lightning talk_42019 lightning talk_4
2019 lightning talk_4Dongho Yu
 
2019 lightning talk_3
2019 lightning talk_32019 lightning talk_3
2019 lightning talk_3Dongho Yu
 
2019 lightning talk_2
2019 lightning talk_22019 lightning talk_2
2019 lightning talk_2Dongho Yu
 
2019 lightning talk_1
2019 lightning talk_12019 lightning talk_1
2019 lightning talk_1Dongho Yu
 
Control unit
Control unitControl unit
Control unitDongho Yu
 
Instruction cycle
Instruction cycleInstruction cycle
Instruction cycleDongho Yu
 
Computer system
Computer systemComputer system
Computer systemDongho Yu
 
Breadth first search
Breadth first searchBreadth first search
Breadth first searchDongho Yu
 
Intro to algorithms
Intro to algorithmsIntro to algorithms
Intro to algorithmsDongho Yu
 

More from Dongho Yu (14)

2019 lightning talk_6
2019 lightning talk_62019 lightning talk_6
2019 lightning talk_6
 
2019 lightning talk_5
2019 lightning talk_52019 lightning talk_5
2019 lightning talk_5
 
2019 lightning talk_4
2019 lightning talk_42019 lightning talk_4
2019 lightning talk_4
 
2019 lightning talk_3
2019 lightning talk_32019 lightning talk_3
2019 lightning talk_3
 
2019 lightning talk_2
2019 lightning talk_22019 lightning talk_2
2019 lightning talk_2
 
2019 lightning talk_1
2019 lightning talk_12019 lightning talk_1
2019 lightning talk_1
 
Cache
CacheCache
Cache
 
Main memory
Main memoryMain memory
Main memory
 
Control unit
Control unitControl unit
Control unit
 
Instruction cycle
Instruction cycleInstruction cycle
Instruction cycle
 
Cpu basic
Cpu basicCpu basic
Cpu basic
 
Computer system
Computer systemComputer system
Computer system
 
Breadth first search
Breadth first searchBreadth first search
Breadth first search
 
Intro to algorithms
Intro to algorithmsIntro to algorithms
Intro to algorithms
 

2019 lightning talk_12

  • 2. About Sorting Tuples • 만약 데이터가 메모리에 모두 올릴 수 있으면 퀵소트 돌리면 된다. • 하지만 데이터가 모두 메모리에 올릴 수 없다면…
  • 3. External Merge Sort • Sorting Phase • 메인메모리 단위의 작은 청크 데이터를 각각 정렬하고 다시 디스크 에 작성한다. • Merge Phase • 정렬된 메인메모리 크기 단위의 서브파일들을 하나의 단일 파일로 병합시킨다.
  • 4. 2-Way External Merge Sort • 파일은 N 페이지, DBMS 메모리 버퍼는 B 사이즈 • Pass #0 • 테이블의 매 B 페이지마다 read & sort & write • 각 페이지에 대한 위 작업에 대한 결과를 ‘run’ 이라 정의 • Pass #1 • 재귀적으로 ‘run’ 의 쌍을 두배의 ‘run’ 으로 병합 • 위 작업은 총 3개의 버퍼 페이지를 사용하게 됨(2 inputs, 1 output)
  • 7. General External MergeSort • Pass #0 • B 버퍼 페이지를 사용한다 • N / B 개수로 B 크기의 정렬된 run 을 만든다. • Pass #1, 2, 3, … • B - 1 개수의 run 들을 병합시킨다.
  • 8. General External MergeSort • Example: N=108, B=5 • Pass #0: N=108 / B=5 = 하나당 5페이지 분량 22개의 run 들이 만들어진다. (마지막 run 은 3페이지만) • Pass #1: N'=22 / B-1=4 = 하나당 20페이지 분량 6개의 run 들이 만들어진다. (마지막 run 은 8페이지만) • Pass #2: N''=6 / B-1=4 = 각각 80페이지와 28페이지 분량 2개의 run 들이 만들어진다. • Pass #3: 정렬된 108페이지의 단일 파일 • Number pf passes = 1 + (logB-1(N / B)) • Total I/O Cost = 2N * (# of passes)
  • 10. Sorting Aggregation • 만약 데이터가 정렬될 필요가 없다면? • GROUP BY 로 Aggregation 시 • DISTINCT 로 중복 제거시 • 위 경우 해싱이 더 좋은 대안이다 • 연산 코스트가 정렬보다 더 저렴하다.
  • 11. Hashing Aggregate • DBMS 가 테이블을 스캔할 때, 일시적으로 해시 테이블을 채운다. • 각 레코드의 해시가 이미 해시 테이블에 들어있는지 확인한다: • DISTINCT: 중복 제거를 수행한다. • GROUP BY: aggregation 을 진행한다. • 만약 데이터가 메모리에 맞는 사이즈면 쉽지만 아니라면…