Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing...

32
Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion Fractal Prefetching B+-Trees: Optimizing Both Cache and Disk Performance Shimin Chen, Phillip B. Gibbons, Todd C. Mowry, and Gary Valentin October 3, 2011 Presenter: Mike Qin [email protected]

Transcript of Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing...

Page 1: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Fractal Prefetching B+-Trees: Optimizing BothCache and Disk Performance

Shimin Chen, Phillip B. Gibbons, Todd C. Mowry, and Gary Valentin

October 3, 2011

Presenter: Mike Qin [email protected]

Page 2: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

The Paradox – Page Size

Large page size optimize the I/O, results in binary search in a huge page toCPU cache.

Binary Search is not cache friendly.compare compare compare bingo

Small page size will slow down search for disk I/O.

search

bingo

search

search

bingo

2 seeks

4 seeks

Page 3: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Idea

Optimize both disk I/O and cache utilization – put a subtree in the tree node.

Page 4: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Common Way of Optimizing Disk I/O

Multiple page node size

• Spacial localityPrefetch more data that have spacial locality.

• I/O parallelismStorage system can strip a page accross several disks.

Read ahead

• Hard to be aggressive on disk. Time = Seek Time + Transfer Time

Better Page Replacement Policy

• like ARC or LIRS

Page 5: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

I/O Optimizations in fpB+-Tree

Single disk page as a node

• Fetching an extra page will introduce an extra seek when I/O parallelismdoesn’t exists.

Read ahead for range-scans. Overlap the I/O cache miss.

1 Find the start and end range query.

2 Prefetch the page far-away from the begining page.

range start range endprefetching from this block

Tree

Page 6: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Cache Optimization Within a Page

Micro-indexing

• Flat structure.An extra array for indexing. All fits into one node.

• Works as a charm when searching.

• Slow and cache unfriendly on insertion and deletion.

Cache friendly at the page level

• Disk First ApproachTree with in a tree node (a page).

• Cache First ApproachMerge part of the tree into several pages.

Page 7: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Disk First Approach

A single node contains a complete sub-tree. It yeilds out fixed amount (N-2N)of fan-outs. When it violates the fan-out requirements, it could either split ormerge.

But wait... How about the space usage of each page?

Page 8: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Space overflow/underflow in Disk First Approach

Given the fixed amount of fan-outs of each subtree, the space usage is notdeterministic!

Overflow!

page

very sparse subnode

page

Space Wasted

very dense subnode

Overflow

Underflow

Page 9: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insert/Delete

Insert:

1 Find a node to insert in the page

2 Find a slot, if not, split the node

3 If no room for another node, reorganized the subtree.

4 If still no room, split the whole page.

Delete:

1 Find the elements in the page to delete.

2 Mark that as empty slot. (Don’t merge the node on half empty.)

3 If page fan-out smaller than minimum fan-out. Merge the page.

4 Reorganized the tree if underflow.

Bulkload:

1 Compute the level according to fan-out.

2 Organized the subtree as sparse as possible.

Page 10: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Best Fan-out ParameterPage Cache Fetch Cost T1

CPU Cache Fetch Cost Tnext

Number of cache lines of non-leaf nodes wNumber of cache lines of leaf-nodes x

Level of subtree L

Cost = (L− 1)×NonLeafCost + LeafCost

= (L− 1)× [T1 + (w − 1)Tnext] + [T1 + (x− 1)Tnext]

As fan-out gets larger, cost also gets larger. Our goal: largest fan-out with <10% larger than optimal cost.

Page 11: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Cache First Approach

Merge the fine-grained node into pages.Stratagy:

• Try to put parent and children node into one page. (Optimize for search.)

• Put sibling leaf node into one page. (Optimize for range scan.)

• Otherwise, put it in the overflow page. (Only for leaf node parents.)

Page 12: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Cache First Approach

Merge the fine-grained node into pages.Stratagy:

leaf node placement

noleaf node placement

Overflowed leaf node parent

Page 13: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion on Different Placement Stratagy

Leaf node:

1 Find a slot to insert.

2 If full, split the node.

3 If no space for a new node, split the whole page.

Leaf parent node:

1 Find a slot to insert.

2 If full, split the node.

3 If no space for new node and parent of this node also need to be split, thensplit the parent and this node. Put them in the same page.

4 Otherwise, allocate space from overflow pages.

Page 14: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion on Different Placement Stratagy (Continue)

Nonleaf Node:

1 Find a slot to insert.

2 If full, split the node.

3 If no space for new node. Reorganize the subtree within this page.

4 If still no space, split the page.

Page 15: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

insert

Page 16: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

split

split?

Page 17: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

overflow page

Page 18: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

split

?split

Page 19: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

Page 20: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

Page 21: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

split?

insert

Reorganize

nonleaf node

Page 22: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insertion Demo

split!

insert

Split the Page

nonleaf node

space efficiencyproblem

Page 23: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Environments

Page size:

• From 4KB to 32KB

• Each have selected a good fan-out with costoptimal < 110%

Buffer manager:

• Using a CLOCK page replacement policy.

Comparison:

• Disk-first approach and cache-first approach vs. microindexing.

• Performance evaluation including: search, insert, delete and range scan.

• Evaluation on the space overhead.

Page 24: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Search Performance on 100% Bulkload

Search on 100% bulkloaded initialization.

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Ô��� ×�Þ� � �Ã� ´�µ Ô��� ×�Þ� � �Ã�

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Ô��� ×�Þ� � ½�Ã� ´�µ Ô��� ×�Þ� � ¿¾Ã�

���ÙÖ� ½¼� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � �ÓÖ ½¼¼± �ÙÐ�ÐÓ��

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

nonleaf= 64B nonleaf=128B nonleaf=192B(selected)nonleaf=256B nonleaf=320B nonleaf=384B nonleaf=448B nonleaf=512B

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

128B 256B 512B 704B(selected) 1024B Best Synthesized

´�µ ��×�¹¬Ö×Ø �Ô��¹ÌÖ�� ´�µ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��

���ÙÖ� ½½� ÇÔØ�Ñ�Ð Û��Ø� ×�Ð� Ø�ÓÒ ´½�Ã� Ô���µ

� ���Ú� ×��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ ÐÓ×� ØÓ Ø�� ��×Ø �ÑÓÒ� Ø��ÒÓ�� �Ó� �׺ ���ÙÖ� ½½´�µ ×�ÓÛ× Ø�� Ô�Ö�ÓÖÑ�Ò � Ó� ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× Ù×�Ò� ÒÓÒÐ��� ÒÓ�� ×�Þ�× �ÖÓÑ ��� ´�Ò Ä¾ � �� Ð�Ò�µ ØÓ �½¾� ´� ľ � �� Ð�Ò�×µº ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�ÐØÖ�� �× Û�Ø��Ò ¾± Ó� Ø�� ��×Ø �Ü� ÙØ�ÓÒ Ø�Ñ�׺ �ÓÖ � ��¹¬Ö×Ø �Ô��¹ÌÖ��× Û� Ñ��×ÙÖ�� Ø�� Ô�Ö�ÓÖÑ�Ò � �ÓÖ ÒÓ�� ×�Þ�×Ö�Ò��Ò� �ÖÓÑ ½¾�� ØÓ ½¼¾��º ÁÒ ���ÙÖ� ½½´�µ¸ �ÓÖ ×�ÑÔÐ� �ØݸÛ� ÓÒÐÝ ×�ÓÛ ÙÖÚ�× �ÓÖ ÒÓ�� ×�Þ�× Ó� ½¾��¸ ¾���¸ �½¾�¸�¼��¸ ½¼¾��¸ �Ò� � ��×Ø Ô�Ö�ÓÖÑ�Ò � ÙÖÚ� ×ÝÒØ��×�Þ�� �ÝØ���Ò� Ø�� Ñ�Ò�ÑÙÑ× Ó� �ÐÐ ÙÖÚ�× Û�Ø� Ø�� ×�Ñ� � Ó� �Ò¹ØÖ��× �Ò Ð��� Ô���׺ ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�Ð ØÖ�� Ô�Ö�ÓÖÑ× Û�Ø��Ò�± Ó� Ø�� ��×غ ÁÒ Ø�� �ÜÔ�Ö�Ñ�ÒØ× Ø��Ø �ÓÐÐÓÛ¸ Û� Ù×� Ø��ÓÔØ�Ñ�Ð ÒÓ�� ×�Þ�× ��Ú�Ò �Ò Ì��Ð� ¾º

Î�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖº ÁÒ ���ÙÖ� ½¾¸ Û� Ú�Ö¹��� Ø�� ¿Å¹�ÒØÖÝ �ÜÔ�Ö�Ñ�ÒØ× �Ò ���ÙÖ� ½¼´ µ Û�Ø� �ÙÐ�ÐÓ���� ØÓÖ× Ö�Ò��Ò� �ÖÓÑ �¼± ØÓ ½¼¼±º �ÓÑÔ�Ö�� Û�Ø� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ô��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� � ���Ú�×Ô���¹ÙÔ× ��ØÛ��Ò ½º¿� �Ò� ½º�¼ºÌ�� ×Ø�Ô¹�ÓÛÒ �Ø �¼± �ÓÖ Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò� ��×�¹¬Ö×Ø

�Ô��¹ÌÖ��× �× �� �Ù×� Ø��Ý Ö��Ù � ÓÒ� Ô��� Ð�Ú�Ð �Ø �¼±º�ÐØ�ÓÙ�� Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ð×Ó Ö��Ù � ÓÒ� Ð�Ú�Ð��Ö�¸ Ø�� ×�Ú�Ò�× �Ö� Ó«×�Ø �Ý � Ð�Ö��Ö Ó×Ø �ÓÖ ×��Ö ��Ò� Ð���Ô���× Û�Ø� �Ò Ö��×�� �ÙÐ�ÐÓ�� �� ØÓÖ׺ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��× �ÐÐ ��Ú� Ø�� ×�Ñ� ÒÙÑ��Ö Ó� ÒÓ�� Ð�Ú�Ð× �Ò Ø��× ×�Ø Ó�

60 70 80 90 1001.5

2

2.5

3

3.5

bulkload factor when building the trees

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

���ÙÖ� ½¾� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ¹ØÓÖ× ´¿Å ��Ý׸ ½�Ã� Ô���µ

60 70 80 90 1000

10

20

30

40

50

60

70

80

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1070

10

20

30

40

50

60

70

# of entries in leaf pages (16KB page, 100% full)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� � Ó� �ÒØÖ��×

10

20

30

40

50

60

70

80

90

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

20

40

60

80

100

(3M entries in leaf pages, 70% full)ex

ecut

ion

time

(M c

ycle

s)4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´�¼± �ÙÐе

���ÙÖ� ½¿� ÁÒ×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �

�ÜÔ�Ö�Ñ�ÒØ× �Ò� Ø��Ö��ÓÖ� ×�Ñ�Ð�Ö Ô�Ö�ÓÖÑ�Ò �º

4.2.2 Insertion Performance���ÙÖ� ½¿ ×�ÓÛ× Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � �Ò �ÓÙÖ ���¹

��Ö�ÒØ ×�ØØ�Ò�׺ Ì�� �ÜÔ�Ö�Ñ�ÒØ× �ÐÐ Ñ��×ÙÖ�� Ø�� �Ü� Ù¹Ø�ÓÒ Ø�Ñ�× �ÓÖ �Ò×�ÖØ�Ò� ¾¼¼¼ Ö�Ò�ÓÑ ��Ý× ��Ø�Ö �ÙÐ�ÐÓ��׸Û��Ð� Ú�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ¸ Ø�� ÒÙÑ��Ö× Ó� �ÒØÖ��× �ÒÐ��� Ô���׸ �Ò� Ø�� Ô��� ×�Þ�º Ì�� �Ô��¹ÌÖ��× � ���Ú� ÙÔØÓ � ¿�¹�ÓÐ� ×Ô���¹ÙÔ ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Û��Ð�Ñ� ÖÓ¹�Ò��Ü�Ò� Ô�Ö�ÓÖÑ× �ÐÑÓ×Ø �× ÔÓÓÖÐÝ �× ��×�¹ÓÔØ�ÑÞ����¹ÌÖ��׺���ÙÖ� ½¿´�µ ÓÑÔ�Ö�× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � Ó� ØÖ��× �ÖÓÑ

�¼± ØÓ ½¼¼± �ÙÐÐ ÓÒØ��Ò�Ò� ¿Å ��Ý׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� �Ô��¹ÌÖ��× � ���Ú� ½� ØÓ ¾¼¹�ÓÐ�×Ô���¹ÙÔ× ��ØÛ��Ò �¼± �Ò� �¼±¸ Û��Ð� �ÓÖ ½¼¼± �ÙÐÐ ØÖ��׸Ø��Ý �Ö� ÓÚ�Ö ½º� Ø�Ñ�× ��ØØ�Öº ÁÒØ�Ö�×Ø�Ò�Ðݸ Ø�� ÙÖÚ�×��Ú� �ÜØÖ�Ñ�ÐÝ ��«�Ö�ÒØ ×��Ô�×� Ø�Ó×� Ó� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò Ö��×� �ÖÓÑ �¼± ØÓ �¼± �ÙØ �ÖÓÔ�Ø Ø�� ½¼¼± ÔÓ�Òظ Û��Ð� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× ×Ø�Ý ­�Ø�Ø ¬Ö×Ø �ÙØ �ÙÑÔ �Ö�Ñ�Ø� �ÐÐÝ �Ø Ø�� ½¼¼± ÔÓ�Òغ Ì��×��«� Ø× �Ò �� �ÜÔÐ��Ò�� �Ý Ø�� ÓÑ��Ò�Ø�ÓÒ Ó� ØÛÓ �� ØÓÖ×���Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ô��� ×ÔÐ�Ø׺ Ï��Ò ØÖ��× �Ö� �¼± ØÓ �¼±�ÙÐи �Ò×�ÖØ�ÓÒ× Ù×Ù�ÐÐÝ ¬Ò� �ÑÔØÝ ×ÐÓØ× �Ò� Ø�� Ñ��ÓÖ ÓÔ�Ö¹�Ø�ÓÒ ��Ø�Ö ×��Ö ��Ò� Û��Ö� Ø�� ��Ý ��ÐÓÒ�× �× ØÓ ÑÓÚ� Ø����Ý �Ò� ÔÓ�ÒØ�Ö �ÖÖ�Ý× �Ò ÓÖ��Ö ØÓ �Ò×�ÖØ Ø�� Ò�Û �ÒØÖݺ ÁÒ

Page 25: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Search Performance on 100% Bulkload

Search on 100% bulkloaded initialization.

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Ô��� ×�Þ� � �Ã� ´�µ Ô��� ×�Þ� � �Ã�

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Ô��� ×�Þ� � ½�Ã� ´�µ Ô��� ×�Þ� � ¿¾Ã�

���ÙÖ� ½¼� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � �ÓÖ ½¼¼± �ÙÐ�ÐÓ��

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

nonleaf= 64B nonleaf=128B nonleaf=192B(selected)nonleaf=256B nonleaf=320B nonleaf=384B nonleaf=448B nonleaf=512B

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

128B 256B 512B 704B(selected) 1024B Best Synthesized

´�µ ��×�¹¬Ö×Ø �Ô��¹ÌÖ�� ´�µ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��

���ÙÖ� ½½� ÇÔØ�Ñ�Ð Û��Ø� ×�Ð� Ø�ÓÒ ´½�Ã� Ô���µ

� ���Ú� ×��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ ÐÓ×� ØÓ Ø�� ��×Ø �ÑÓÒ� Ø��ÒÓ�� �Ó� �׺ ���ÙÖ� ½½´�µ ×�ÓÛ× Ø�� Ô�Ö�ÓÖÑ�Ò � Ó� ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× Ù×�Ò� ÒÓÒÐ��� ÒÓ�� ×�Þ�× �ÖÓÑ ��� ´�Ò Ä¾ � �� Ð�Ò�µ ØÓ �½¾� ´� ľ � �� Ð�Ò�×µº ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�ÐØÖ�� �× Û�Ø��Ò ¾± Ó� Ø�� ��×Ø �Ü� ÙØ�ÓÒ Ø�Ñ�׺ �ÓÖ � ��¹¬Ö×Ø �Ô��¹ÌÖ��× Û� Ñ��×ÙÖ�� Ø�� Ô�Ö�ÓÖÑ�Ò � �ÓÖ ÒÓ�� ×�Þ�×Ö�Ò��Ò� �ÖÓÑ ½¾�� ØÓ ½¼¾��º ÁÒ ���ÙÖ� ½½´�µ¸ �ÓÖ ×�ÑÔÐ� �ØݸÛ� ÓÒÐÝ ×�ÓÛ ÙÖÚ�× �ÓÖ ÒÓ�� ×�Þ�× Ó� ½¾��¸ ¾���¸ �½¾�¸�¼��¸ ½¼¾��¸ �Ò� � ��×Ø Ô�Ö�ÓÖÑ�Ò � ÙÖÚ� ×ÝÒØ��×�Þ�� �ÝØ���Ò� Ø�� Ñ�Ò�ÑÙÑ× Ó� �ÐÐ ÙÖÚ�× Û�Ø� Ø�� ×�Ñ� � Ó� �Ò¹ØÖ��× �Ò Ð��� Ô���׺ ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�Ð ØÖ�� Ô�Ö�ÓÖÑ× Û�Ø��Ò�± Ó� Ø�� ��×غ ÁÒ Ø�� �ÜÔ�Ö�Ñ�ÒØ× Ø��Ø �ÓÐÐÓÛ¸ Û� Ù×� Ø��ÓÔØ�Ñ�Ð ÒÓ�� ×�Þ�× ��Ú�Ò �Ò Ì��Ð� ¾º

Î�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖº ÁÒ ���ÙÖ� ½¾¸ Û� Ú�Ö¹��� Ø�� ¿Å¹�ÒØÖÝ �ÜÔ�Ö�Ñ�ÒØ× �Ò ���ÙÖ� ½¼´ µ Û�Ø� �ÙÐ�ÐÓ���� ØÓÖ× Ö�Ò��Ò� �ÖÓÑ �¼± ØÓ ½¼¼±º �ÓÑÔ�Ö�� Û�Ø� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ô��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� � ���Ú�×Ô���¹ÙÔ× ��ØÛ��Ò ½º¿� �Ò� ½º�¼ºÌ�� ×Ø�Ô¹�ÓÛÒ �Ø �¼± �ÓÖ Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò� ��×�¹¬Ö×Ø

�Ô��¹ÌÖ��× �× �� �Ù×� Ø��Ý Ö��Ù � ÓÒ� Ô��� Ð�Ú�Ð �Ø �¼±º�ÐØ�ÓÙ�� Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ð×Ó Ö��Ù � ÓÒ� Ð�Ú�Ð��Ö�¸ Ø�� ×�Ú�Ò�× �Ö� Ó«×�Ø �Ý � Ð�Ö��Ö Ó×Ø �ÓÖ ×��Ö ��Ò� Ð���Ô���× Û�Ø� �Ò Ö��×�� �ÙÐ�ÐÓ�� �� ØÓÖ׺ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��× �ÐÐ ��Ú� Ø�� ×�Ñ� ÒÙÑ��Ö Ó� ÒÓ�� Ð�Ú�Ð× �Ò Ø��× ×�Ø Ó�

60 70 80 90 1001.5

2

2.5

3

3.5

bulkload factor when building the trees

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

���ÙÖ� ½¾� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ¹ØÓÖ× ´¿Å ��Ý׸ ½�Ã� Ô���µ

60 70 80 90 1000

10

20

30

40

50

60

70

80

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1070

10

20

30

40

50

60

70

# of entries in leaf pages (16KB page, 100% full)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� � Ó� �ÒØÖ��×

10

20

30

40

50

60

70

80

90

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

20

40

60

80

100

(3M entries in leaf pages, 70% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´�¼± �ÙÐе

���ÙÖ� ½¿� ÁÒ×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �

�ÜÔ�Ö�Ñ�ÒØ× �Ò� Ø��Ö��ÓÖ� ×�Ñ�Ð�Ö Ô�Ö�ÓÖÑ�Ò �º

4.2.2 Insertion Performance���ÙÖ� ½¿ ×�ÓÛ× Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � �Ò �ÓÙÖ ���¹

��Ö�ÒØ ×�ØØ�Ò�׺ Ì�� �ÜÔ�Ö�Ñ�ÒØ× �ÐÐ Ñ��×ÙÖ�� Ø�� �Ü� Ù¹Ø�ÓÒ Ø�Ñ�× �ÓÖ �Ò×�ÖØ�Ò� ¾¼¼¼ Ö�Ò�ÓÑ ��Ý× ��Ø�Ö �ÙÐ�ÐÓ��׸Û��Ð� Ú�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ¸ Ø�� ÒÙÑ��Ö× Ó� �ÒØÖ��× �ÒÐ��� Ô���׸ �Ò� Ø�� Ô��� ×�Þ�º Ì�� �Ô��¹ÌÖ��× � ���Ú� ÙÔØÓ � ¿�¹�ÓÐ� ×Ô���¹ÙÔ ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Û��Ð�Ñ� ÖÓ¹�Ò��Ü�Ò� Ô�Ö�ÓÖÑ× �ÐÑÓ×Ø �× ÔÓÓÖÐÝ �× ��×�¹ÓÔØ�ÑÞ����¹ÌÖ��׺���ÙÖ� ½¿´�µ ÓÑÔ�Ö�× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � Ó� ØÖ��× �ÖÓÑ

�¼± ØÓ ½¼¼± �ÙÐÐ ÓÒØ��Ò�Ò� ¿Å ��Ý׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� �Ô��¹ÌÖ��× � ���Ú� ½� ØÓ ¾¼¹�ÓÐ�×Ô���¹ÙÔ× ��ØÛ��Ò �¼± �Ò� �¼±¸ Û��Ð� �ÓÖ ½¼¼± �ÙÐÐ ØÖ��׸Ø��Ý �Ö� ÓÚ�Ö ½º� Ø�Ñ�× ��ØØ�Öº ÁÒØ�Ö�×Ø�Ò�Ðݸ Ø�� ÙÖÚ�×��Ú� �ÜØÖ�Ñ�ÐÝ ��«�Ö�ÒØ ×��Ô�×� Ø�Ó×� Ó� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò Ö��×� �ÖÓÑ �¼± ØÓ �¼± �ÙØ �ÖÓÔ�Ø Ø�� ½¼¼± ÔÓ�Òظ Û��Ð� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× ×Ø�Ý ­�Ø�Ø ¬Ö×Ø �ÙØ �ÙÑÔ �Ö�Ñ�Ø� �ÐÐÝ �Ø Ø�� ½¼¼± ÔÓ�Òغ Ì��×��«� Ø× �Ò �� �ÜÔÐ��Ò�� �Ý Ø�� ÓÑ��Ò�Ø�ÓÒ Ó� ØÛÓ �� ØÓÖ×���Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ô��� ×ÔÐ�Ø׺ Ï��Ò ØÖ��× �Ö� �¼± ØÓ �¼±�ÙÐи �Ò×�ÖØ�ÓÒ× Ù×Ù�ÐÐÝ ¬Ò� �ÑÔØÝ ×ÐÓØ× �Ò� Ø�� Ñ��ÓÖ ÓÔ�Ö¹�Ø�ÓÒ ��Ø�Ö ×��Ö ��Ò� Û��Ö� Ø�� ��Ý ��ÐÓÒ�× �× ØÓ ÑÓÚ� Ø����Ý �Ò� ÔÓ�ÒØ�Ö �ÖÖ�Ý× �Ò ÓÖ��Ö ØÓ �Ò×�ÖØ Ø�� Ò�Û �ÒØÖݺ ÁÒ

Page 26: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Search Performance on Varied Bulkload

Search on a varied bulkloaded initialization.

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Ô��� ×�Þ� � �Ã� ´�µ Ô��� ×�Þ� � �Ã�

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Ô��� ×�Þ� � ½�Ã� ´�µ Ô��� ×�Þ� � ¿¾Ã�

���ÙÖ� ½¼� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � �ÓÖ ½¼¼± �ÙÐ�ÐÓ��

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

nonleaf= 64B nonleaf=128B nonleaf=192B(selected)nonleaf=256B nonleaf=320B nonleaf=384B nonleaf=448B nonleaf=512B

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

128B 256B 512B 704B(selected) 1024B Best Synthesized

´�µ ��×�¹¬Ö×Ø �Ô��¹ÌÖ�� ´�µ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��

���ÙÖ� ½½� ÇÔØ�Ñ�Ð Û��Ø� ×�Ð� Ø�ÓÒ ´½�Ã� Ô���µ

� ���Ú� ×��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ ÐÓ×� ØÓ Ø�� ��×Ø �ÑÓÒ� Ø��ÒÓ�� �Ó� �׺ ���ÙÖ� ½½´�µ ×�ÓÛ× Ø�� Ô�Ö�ÓÖÑ�Ò � Ó� ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× Ù×�Ò� ÒÓÒÐ��� ÒÓ�� ×�Þ�× �ÖÓÑ ��� ´�Ò Ä¾ � �� Ð�Ò�µ ØÓ �½¾� ´� ľ � �� Ð�Ò�×µº ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�ÐØÖ�� �× Û�Ø��Ò ¾± Ó� Ø�� ��×Ø �Ü� ÙØ�ÓÒ Ø�Ñ�׺ �ÓÖ � ��¹¬Ö×Ø �Ô��¹ÌÖ��× Û� Ñ��×ÙÖ�� Ø�� Ô�Ö�ÓÖÑ�Ò � �ÓÖ ÒÓ�� ×�Þ�×Ö�Ò��Ò� �ÖÓÑ ½¾�� ØÓ ½¼¾��º ÁÒ ���ÙÖ� ½½´�µ¸ �ÓÖ ×�ÑÔÐ� �ØݸÛ� ÓÒÐÝ ×�ÓÛ ÙÖÚ�× �ÓÖ ÒÓ�� ×�Þ�× Ó� ½¾��¸ ¾���¸ �½¾�¸�¼��¸ ½¼¾��¸ �Ò� � ��×Ø Ô�Ö�ÓÖÑ�Ò � ÙÖÚ� ×ÝÒØ��×�Þ�� �ÝØ���Ò� Ø�� Ñ�Ò�ÑÙÑ× Ó� �ÐÐ ÙÖÚ�× Û�Ø� Ø�� ×�Ñ� � Ó� �Ò¹ØÖ��× �Ò Ð��� Ô���׺ ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�Ð ØÖ�� Ô�Ö�ÓÖÑ× Û�Ø��Ò�± Ó� Ø�� ��×غ ÁÒ Ø�� �ÜÔ�Ö�Ñ�ÒØ× Ø��Ø �ÓÐÐÓÛ¸ Û� Ù×� Ø��ÓÔØ�Ñ�Ð ÒÓ�� ×�Þ�× ��Ú�Ò �Ò Ì��Ð� ¾º

Î�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖº ÁÒ ���ÙÖ� ½¾¸ Û� Ú�Ö¹��� Ø�� ¿Å¹�ÒØÖÝ �ÜÔ�Ö�Ñ�ÒØ× �Ò ���ÙÖ� ½¼´ µ Û�Ø� �ÙÐ�ÐÓ���� ØÓÖ× Ö�Ò��Ò� �ÖÓÑ �¼± ØÓ ½¼¼±º �ÓÑÔ�Ö�� Û�Ø� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ô��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� � ���Ú�×Ô���¹ÙÔ× ��ØÛ��Ò ½º¿� �Ò� ½º�¼ºÌ�� ×Ø�Ô¹�ÓÛÒ �Ø �¼± �ÓÖ Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò� ��×�¹¬Ö×Ø

�Ô��¹ÌÖ��× �× �� �Ù×� Ø��Ý Ö��Ù � ÓÒ� Ô��� Ð�Ú�Ð �Ø �¼±º�ÐØ�ÓÙ�� Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ð×Ó Ö��Ù � ÓÒ� Ð�Ú�Ð��Ö�¸ Ø�� ×�Ú�Ò�× �Ö� Ó«×�Ø �Ý � Ð�Ö��Ö Ó×Ø �ÓÖ ×��Ö ��Ò� Ð���Ô���× Û�Ø� �Ò Ö��×�� �ÙÐ�ÐÓ�� �� ØÓÖ׺ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��× �ÐÐ ��Ú� Ø�� ×�Ñ� ÒÙÑ��Ö Ó� ÒÓ�� Ð�Ú�Ð× �Ò Ø��× ×�Ø Ó�

60 70 80 90 1001.5

2

2.5

3

3.5

bulkload factor when building the trees

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

���ÙÖ� ½¾� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ¹ØÓÖ× ´¿Å ��Ý׸ ½�Ã� Ô���µ

60 70 80 90 1000

10

20

30

40

50

60

70

80

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1070

10

20

30

40

50

60

70

# of entries in leaf pages (16KB page, 100% full)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� � Ó� �ÒØÖ��×

10

20

30

40

50

60

70

80

90

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

20

40

60

80

100

(3M entries in leaf pages, 70% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´�¼± �ÙÐе

���ÙÖ� ½¿� ÁÒ×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �

�ÜÔ�Ö�Ñ�ÒØ× �Ò� Ø��Ö��ÓÖ� ×�Ñ�Ð�Ö Ô�Ö�ÓÖÑ�Ò �º

4.2.2 Insertion Performance���ÙÖ� ½¿ ×�ÓÛ× Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � �Ò �ÓÙÖ ���¹

��Ö�ÒØ ×�ØØ�Ò�׺ Ì�� �ÜÔ�Ö�Ñ�ÒØ× �ÐÐ Ñ��×ÙÖ�� Ø�� �Ü� Ù¹Ø�ÓÒ Ø�Ñ�× �ÓÖ �Ò×�ÖØ�Ò� ¾¼¼¼ Ö�Ò�ÓÑ ��Ý× ��Ø�Ö �ÙÐ�ÐÓ��׸Û��Ð� Ú�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ¸ Ø�� ÒÙÑ��Ö× Ó� �ÒØÖ��× �ÒÐ��� Ô���׸ �Ò� Ø�� Ô��� ×�Þ�º Ì�� �Ô��¹ÌÖ��× � ���Ú� ÙÔØÓ � ¿�¹�ÓÐ� ×Ô���¹ÙÔ ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Û��Ð�Ñ� ÖÓ¹�Ò��Ü�Ò� Ô�Ö�ÓÖÑ× �ÐÑÓ×Ø �× ÔÓÓÖÐÝ �× ��×�¹ÓÔØ�ÑÞ����¹ÌÖ��׺���ÙÖ� ½¿´�µ ÓÑÔ�Ö�× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � Ó� ØÖ��× �ÖÓÑ

�¼± ØÓ ½¼¼± �ÙÐÐ ÓÒØ��Ò�Ò� ¿Å ��Ý׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� �Ô��¹ÌÖ��× � ���Ú� ½� ØÓ ¾¼¹�ÓÐ�×Ô���¹ÙÔ× ��ØÛ��Ò �¼± �Ò� �¼±¸ Û��Ð� �ÓÖ ½¼¼± �ÙÐÐ ØÖ��׸Ø��Ý �Ö� ÓÚ�Ö ½º� Ø�Ñ�× ��ØØ�Öº ÁÒØ�Ö�×Ø�Ò�Ðݸ Ø�� ÙÖÚ�×��Ú� �ÜØÖ�Ñ�ÐÝ ��«�Ö�ÒØ ×��Ô�×� Ø�Ó×� Ó� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò Ö��×� �ÖÓÑ �¼± ØÓ �¼± �ÙØ �ÖÓÔ�Ø Ø�� ½¼¼± ÔÓ�Òظ Û��Ð� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× ×Ø�Ý ­�Ø�Ø ¬Ö×Ø �ÙØ �ÙÑÔ �Ö�Ñ�Ø� �ÐÐÝ �Ø Ø�� ½¼¼± ÔÓ�Òغ Ì��×��«� Ø× �Ò �� �ÜÔÐ��Ò�� �Ý Ø�� ÓÑ��Ò�Ø�ÓÒ Ó� ØÛÓ �� ØÓÖ×���Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ô��� ×ÔÐ�Ø׺ Ï��Ò ØÖ��× �Ö� �¼± ØÓ �¼±�ÙÐи �Ò×�ÖØ�ÓÒ× Ù×Ù�ÐÐÝ ¬Ò� �ÑÔØÝ ×ÐÓØ× �Ò� Ø�� Ñ��ÓÖ ÓÔ�Ö¹�Ø�ÓÒ ��Ø�Ö ×��Ö ��Ò� Û��Ö� Ø�� ��Ý ��ÐÓÒ�× �× ØÓ ÑÓÚ� Ø����Ý �Ò� ÔÓ�ÒØ�Ö �ÖÖ�Ý× �Ò ÓÖ��Ö ØÓ �Ò×�ÖØ Ø�� Ò�Û �ÒØÖݺ ÁÒ

Page 27: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insert Performance

Insert performance under a) different bulkload factors b) # of entries.

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Ô��� ×�Þ� � �Ã� ´�µ Ô��� ×�Þ� � �Ã�

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Ô��� ×�Þ� � ½�Ã� ´�µ Ô��� ×�Þ� � ¿¾Ã�

���ÙÖ� ½¼� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � �ÓÖ ½¼¼± �ÙÐ�ÐÓ��

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

nonleaf= 64B nonleaf=128B nonleaf=192B(selected)nonleaf=256B nonleaf=320B nonleaf=384B nonleaf=448B nonleaf=512B

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

128B 256B 512B 704B(selected) 1024B Best Synthesized

´�µ ��×�¹¬Ö×Ø �Ô��¹ÌÖ�� ´�µ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��

���ÙÖ� ½½� ÇÔØ�Ñ�Ð Û��Ø� ×�Ð� Ø�ÓÒ ´½�Ã� Ô���µ

� ���Ú� ×��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ ÐÓ×� ØÓ Ø�� ��×Ø �ÑÓÒ� Ø��ÒÓ�� �Ó� �׺ ���ÙÖ� ½½´�µ ×�ÓÛ× Ø�� Ô�Ö�ÓÖÑ�Ò � Ó� ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× Ù×�Ò� ÒÓÒÐ��� ÒÓ�� ×�Þ�× �ÖÓÑ ��� ´�Ò Ä¾ � �� Ð�Ò�µ ØÓ �½¾� ´� ľ � �� Ð�Ò�×µº ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�ÐØÖ�� �× Û�Ø��Ò ¾± Ó� Ø�� ��×Ø �Ü� ÙØ�ÓÒ Ø�Ñ�׺ �ÓÖ � ��¹¬Ö×Ø �Ô��¹ÌÖ��× Û� Ñ��×ÙÖ�� Ø�� Ô�Ö�ÓÖÑ�Ò � �ÓÖ ÒÓ�� ×�Þ�×Ö�Ò��Ò� �ÖÓÑ ½¾�� ØÓ ½¼¾��º ÁÒ ���ÙÖ� ½½´�µ¸ �ÓÖ ×�ÑÔÐ� �ØݸÛ� ÓÒÐÝ ×�ÓÛ ÙÖÚ�× �ÓÖ ÒÓ�� ×�Þ�× Ó� ½¾��¸ ¾���¸ �½¾�¸�¼��¸ ½¼¾��¸ �Ò� � ��×Ø Ô�Ö�ÓÖÑ�Ò � ÙÖÚ� ×ÝÒØ��×�Þ�� �ÝØ���Ò� Ø�� Ñ�Ò�ÑÙÑ× Ó� �ÐÐ ÙÖÚ�× Û�Ø� Ø�� ×�Ñ� � Ó� �Ò¹ØÖ��× �Ò Ð��� Ô���׺ ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�Ð ØÖ�� Ô�Ö�ÓÖÑ× Û�Ø��Ò�± Ó� Ø�� ��×غ ÁÒ Ø�� �ÜÔ�Ö�Ñ�ÒØ× Ø��Ø �ÓÐÐÓÛ¸ Û� Ù×� Ø��ÓÔØ�Ñ�Ð ÒÓ�� ×�Þ�× ��Ú�Ò �Ò Ì��Ð� ¾º

Î�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖº ÁÒ ���ÙÖ� ½¾¸ Û� Ú�Ö¹��� Ø�� ¿Å¹�ÒØÖÝ �ÜÔ�Ö�Ñ�ÒØ× �Ò ���ÙÖ� ½¼´ µ Û�Ø� �ÙÐ�ÐÓ���� ØÓÖ× Ö�Ò��Ò� �ÖÓÑ �¼± ØÓ ½¼¼±º �ÓÑÔ�Ö�� Û�Ø� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ô��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� � ���Ú�×Ô���¹ÙÔ× ��ØÛ��Ò ½º¿� �Ò� ½º�¼ºÌ�� ×Ø�Ô¹�ÓÛÒ �Ø �¼± �ÓÖ Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò� ��×�¹¬Ö×Ø

�Ô��¹ÌÖ��× �× �� �Ù×� Ø��Ý Ö��Ù � ÓÒ� Ô��� Ð�Ú�Ð �Ø �¼±º�ÐØ�ÓÙ�� Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ð×Ó Ö��Ù � ÓÒ� Ð�Ú�Ð��Ö�¸ Ø�� ×�Ú�Ò�× �Ö� Ó«×�Ø �Ý � Ð�Ö��Ö Ó×Ø �ÓÖ ×��Ö ��Ò� Ð���Ô���× Û�Ø� �Ò Ö��×�� �ÙÐ�ÐÓ�� �� ØÓÖ׺ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��× �ÐÐ ��Ú� Ø�� ×�Ñ� ÒÙÑ��Ö Ó� ÒÓ�� Ð�Ú�Ð× �Ò Ø��× ×�Ø Ó�

60 70 80 90 1001.5

2

2.5

3

3.5

bulkload factor when building the trees

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

���ÙÖ� ½¾� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ¹ØÓÖ× ´¿Å ��Ý׸ ½�Ã� Ô���µ

60 70 80 90 1000

10

20

30

40

50

60

70

80

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1070

10

20

30

40

50

60

70

# of entries in leaf pages (16KB page, 100% full)ex

ecut

ion

time

(M c

ycle

s)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� � Ó� �ÒØÖ��×

10

20

30

40

50

60

70

80

90

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

20

40

60

80

100

(3M entries in leaf pages, 70% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´�¼± �ÙÐе

���ÙÖ� ½¿� ÁÒ×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �

�ÜÔ�Ö�Ñ�ÒØ× �Ò� Ø��Ö��ÓÖ� ×�Ñ�Ð�Ö Ô�Ö�ÓÖÑ�Ò �º

4.2.2 Insertion Performance���ÙÖ� ½¿ ×�ÓÛ× Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � �Ò �ÓÙÖ ���¹

��Ö�ÒØ ×�ØØ�Ò�׺ Ì�� �ÜÔ�Ö�Ñ�ÒØ× �ÐÐ Ñ��×ÙÖ�� Ø�� �Ü� Ù¹Ø�ÓÒ Ø�Ñ�× �ÓÖ �Ò×�ÖØ�Ò� ¾¼¼¼ Ö�Ò�ÓÑ ��Ý× ��Ø�Ö �ÙÐ�ÐÓ��׸Û��Ð� Ú�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ¸ Ø�� ÒÙÑ��Ö× Ó� �ÒØÖ��× �ÒÐ��� Ô���׸ �Ò� Ø�� Ô��� ×�Þ�º Ì�� �Ô��¹ÌÖ��× � ���Ú� ÙÔØÓ � ¿�¹�ÓÐ� ×Ô���¹ÙÔ ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Û��Ð�Ñ� ÖÓ¹�Ò��Ü�Ò� Ô�Ö�ÓÖÑ× �ÐÑÓ×Ø �× ÔÓÓÖÐÝ �× ��×�¹ÓÔØ�ÑÞ����¹ÌÖ��׺���ÙÖ� ½¿´�µ ÓÑÔ�Ö�× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � Ó� ØÖ��× �ÖÓÑ

�¼± ØÓ ½¼¼± �ÙÐÐ ÓÒØ��Ò�Ò� ¿Å ��Ý׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� �Ô��¹ÌÖ��× � ���Ú� ½� ØÓ ¾¼¹�ÓÐ�×Ô���¹ÙÔ× ��ØÛ��Ò �¼± �Ò� �¼±¸ Û��Ð� �ÓÖ ½¼¼± �ÙÐÐ ØÖ��׸Ø��Ý �Ö� ÓÚ�Ö ½º� Ø�Ñ�× ��ØØ�Öº ÁÒØ�Ö�×Ø�Ò�Ðݸ Ø�� ÙÖÚ�×��Ú� �ÜØÖ�Ñ�ÐÝ ��«�Ö�ÒØ ×��Ô�×� Ø�Ó×� Ó� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò Ö��×� �ÖÓÑ �¼± ØÓ �¼± �ÙØ �ÖÓÔ�Ø Ø�� ½¼¼± ÔÓ�Òظ Û��Ð� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× ×Ø�Ý ­�Ø�Ø ¬Ö×Ø �ÙØ �ÙÑÔ �Ö�Ñ�Ø� �ÐÐÝ �Ø Ø�� ½¼¼± ÔÓ�Òغ Ì��×��«� Ø× �Ò �� �ÜÔÐ��Ò�� �Ý Ø�� ÓÑ��Ò�Ø�ÓÒ Ó� ØÛÓ �� ØÓÖ×���Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ô��� ×ÔÐ�Ø׺ Ï��Ò ØÖ��× �Ö� �¼± ØÓ �¼±�ÙÐи �Ò×�ÖØ�ÓÒ× Ù×Ù�ÐÐÝ ¬Ò� �ÑÔØÝ ×ÐÓØ× �Ò� Ø�� Ñ��ÓÖ ÓÔ�Ö¹�Ø�ÓÒ ��Ø�Ö ×��Ö ��Ò� Û��Ö� Ø�� ��Ý ��ÐÓÒ�× �× ØÓ ÑÓÚ� Ø����Ý �Ò� ÔÓ�ÒØ�Ö �ÖÖ�Ý× �Ò ÓÖ��Ö ØÓ �Ò×�ÖØ Ø�� Ò�Û �ÒØÖݺ ÁÒ

Page 28: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Insert Performance

Insert performance under different page size. c) 100% full d) 70% full

105 106 1071

1.5

2

2.5

3

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

# of entries in leaf pagesex

ecut

ion

time

(M c

ycle

s)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Ô��� ×�Þ� � �Ã� ´�µ Ô��� ×�Þ� � �Ã�

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Ô��� ×�Þ� � ½�Ã� ´�µ Ô��� ×�Þ� � ¿¾Ã�

���ÙÖ� ½¼� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � �ÓÖ ½¼¼± �ÙÐ�ÐÓ��

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

nonleaf= 64B nonleaf=128B nonleaf=192B(selected)nonleaf=256B nonleaf=320B nonleaf=384B nonleaf=448B nonleaf=512B

105 106 1071

1.5

2

2.5

3

3.5

# of entries in leaf pages

exec

utio

n tim

e (M

cyc

les)

128B 256B 512B 704B(selected) 1024B Best Synthesized

´�µ ��×�¹¬Ö×Ø �Ô��¹ÌÖ�� ´�µ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��

���ÙÖ� ½½� ÇÔØ�Ñ�Ð Û��Ø� ×�Ð� Ø�ÓÒ ´½�Ã� Ô���µ

� ���Ú� ×��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ ÐÓ×� ØÓ Ø�� ��×Ø �ÑÓÒ� Ø��ÒÓ�� �Ó� �׺ ���ÙÖ� ½½´�µ ×�ÓÛ× Ø�� Ô�Ö�ÓÖÑ�Ò � Ó� ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× Ù×�Ò� ÒÓÒÐ��� ÒÓ�� ×�Þ�× �ÖÓÑ ��� ´�Ò Ä¾ � �� Ð�Ò�µ ØÓ �½¾� ´� ľ � �� Ð�Ò�×µº ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�ÐØÖ�� �× Û�Ø��Ò ¾± Ó� Ø�� ��×Ø �Ü� ÙØ�ÓÒ Ø�Ñ�׺ �ÓÖ � ��¹¬Ö×Ø �Ô��¹ÌÖ��× Û� Ñ��×ÙÖ�� Ø�� Ô�Ö�ÓÖÑ�Ò � �ÓÖ ÒÓ�� ×�Þ�×Ö�Ò��Ò� �ÖÓÑ ½¾�� ØÓ ½¼¾��º ÁÒ ���ÙÖ� ½½´�µ¸ �ÓÖ ×�ÑÔÐ� �ØݸÛ� ÓÒÐÝ ×�ÓÛ ÙÖÚ�× �ÓÖ ÒÓ�� ×�Þ�× Ó� ½¾��¸ ¾���¸ �½¾�¸�¼��¸ ½¼¾��¸ �Ò� � ��×Ø Ô�Ö�ÓÖÑ�Ò � ÙÖÚ� ×ÝÒØ��×�Þ�� �ÝØ���Ò� Ø�� Ñ�Ò�ÑÙÑ× Ó� �ÐÐ ÙÖÚ�× Û�Ø� Ø�� ×�Ñ� � Ó� �Ò¹ØÖ��× �Ò Ð��� Ô���׺ ÇÙÖ ×�Ð� Ø�� ÓÔØ�Ñ�Ð ØÖ�� Ô�Ö�ÓÖÑ× Û�Ø��Ò�± Ó� Ø�� ��×غ ÁÒ Ø�� �ÜÔ�Ö�Ñ�ÒØ× Ø��Ø �ÓÐÐÓÛ¸ Û� Ù×� Ø��ÓÔØ�Ñ�Ð ÒÓ�� ×�Þ�× ��Ú�Ò �Ò Ì��Ð� ¾º

Î�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖº ÁÒ ���ÙÖ� ½¾¸ Û� Ú�Ö¹��� Ø�� ¿Å¹�ÒØÖÝ �ÜÔ�Ö�Ñ�ÒØ× �Ò ���ÙÖ� ½¼´ µ Û�Ø� �ÙÐ�ÐÓ���� ØÓÖ× Ö�Ò��Ò� �ÖÓÑ �¼± ØÓ ½¼¼±º �ÓÑÔ�Ö�� Û�Ø� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ô��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� � ���Ú�×Ô���¹ÙÔ× ��ØÛ��Ò ½º¿� �Ò� ½º�¼ºÌ�� ×Ø�Ô¹�ÓÛÒ �Ø �¼± �ÓÖ Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò� ��×�¹¬Ö×Ø

�Ô��¹ÌÖ��× �× �� �Ù×� Ø��Ý Ö��Ù � ÓÒ� Ô��� Ð�Ú�Ð �Ø �¼±º�ÐØ�ÓÙ�� Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ð×Ó Ö��Ù � ÓÒ� Ð�Ú�Ð��Ö�¸ Ø�� ×�Ú�Ò�× �Ö� Ó«×�Ø �Ý � Ð�Ö��Ö Ó×Ø �ÓÖ ×��Ö ��Ò� Ð���Ô���× Û�Ø� �Ò Ö��×�� �ÙÐ�ÐÓ�� �� ØÓÖ׺ �� ��¹¬Ö×Ø �Ô��¹ÌÖ��× �ÐÐ ��Ú� Ø�� ×�Ñ� ÒÙÑ��Ö Ó� ÒÓ�� Ð�Ú�Ð× �Ò Ø��× ×�Ø Ó�

60 70 80 90 1001.5

2

2.5

3

3.5

bulkload factor when building the trees

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

���ÙÖ� ½¾� Ë��Ö � Ô�Ö�ÓÖÑ�Ò � Ú�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ¹ØÓÖ× ´¿Å ��Ý׸ ½�Ã� Ô���µ

60 70 80 90 1000

10

20

30

40

50

60

70

80

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

105 106 1070

10

20

30

40

50

60

70

# of entries in leaf pages (16KB page, 100% full)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� � Ó� �ÒØÖ��×

10

20

30

40

50

60

70

80

90

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

20

40

60

80

100

(3M entries in leaf pages, 70% full)ex

ecut

ion

time

(M c

ycle

s)4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´ µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´�¼± �ÙÐе

���ÙÖ� ½¿� ÁÒ×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �

�ÜÔ�Ö�Ñ�ÒØ× �Ò� Ø��Ö��ÓÖ� ×�Ñ�Ð�Ö Ô�Ö�ÓÖÑ�Ò �º

4.2.2 Insertion Performance���ÙÖ� ½¿ ×�ÓÛ× Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � �Ò �ÓÙÖ ���¹

��Ö�ÒØ ×�ØØ�Ò�׺ Ì�� �ÜÔ�Ö�Ñ�ÒØ× �ÐÐ Ñ��×ÙÖ�� Ø�� �Ü� Ù¹Ø�ÓÒ Ø�Ñ�× �ÓÖ �Ò×�ÖØ�Ò� ¾¼¼¼ Ö�Ò�ÓÑ ��Ý× ��Ø�Ö �ÙÐ�ÐÓ��׸Û��Ð� Ú�ÖÝ�Ò� Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ¸ Ø�� ÒÙÑ��Ö× Ó� �ÒØÖ��× �ÒÐ��� Ô���׸ �Ò� Ø�� Ô��� ×�Þ�º Ì�� �Ô��¹ÌÖ��× � ���Ú� ÙÔØÓ � ¿�¹�ÓÐ� ×Ô���¹ÙÔ ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Û��Ð�Ñ� ÖÓ¹�Ò��Ü�Ò� Ô�Ö�ÓÖÑ× �ÐÑÓ×Ø �× ÔÓÓÖÐÝ �× ��×�¹ÓÔØ�ÑÞ����¹ÌÖ��׺���ÙÖ� ½¿´�µ ÓÑÔ�Ö�× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � Ó� ØÖ��× �ÖÓÑ

�¼± ØÓ ½¼¼± �ÙÐÐ ÓÒØ��Ò�Ò� ¿Å ��Ý׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� �Ô��¹ÌÖ��× � ���Ú� ½� ØÓ ¾¼¹�ÓÐ�×Ô���¹ÙÔ× ��ØÛ��Ò �¼± �Ò� �¼±¸ Û��Ð� �ÓÖ ½¼¼± �ÙÐÐ ØÖ��׸Ø��Ý �Ö� ÓÚ�Ö ½º� Ø�Ñ�× ��ØØ�Öº ÁÒØ�Ö�×Ø�Ò�Ðݸ Ø�� ÙÖÚ�×��Ú� �ÜØÖ�Ñ�ÐÝ ��«�Ö�ÒØ ×��Ô�×� Ø�Ó×� Ó� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �Ò Ö��×� �ÖÓÑ �¼± ØÓ �¼± �ÙØ �ÖÓÔ�Ø Ø�� ½¼¼± ÔÓ�Òظ Û��Ð� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× ×Ø�Ý ­�Ø�Ø ¬Ö×Ø �ÙØ �ÙÑÔ �Ö�Ñ�Ø� �ÐÐÝ �Ø Ø�� ½¼¼± ÔÓ�Òغ Ì��×��«� Ø× �Ò �� �ÜÔÐ��Ò�� �Ý Ø�� ÓÑ��Ò�Ø�ÓÒ Ó� ØÛÓ �� ØÓÖ×���Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ô��� ×ÔÐ�Ø׺ Ï��Ò ØÖ��× �Ö� �¼± ØÓ �¼±�ÙÐи �Ò×�ÖØ�ÓÒ× Ù×Ù�ÐÐÝ ¬Ò� �ÑÔØÝ ×ÐÓØ× �Ò� Ø�� Ñ��ÓÖ ÓÔ�Ö¹�Ø�ÓÒ ��Ø�Ö ×��Ö ��Ò� Û��Ö� Ø�� ��Ý ��ÐÓÒ�× �× ØÓ ÑÓÚ� Ø����Ý �Ò� ÔÓ�ÒØ�Ö �ÖÖ�Ý× �Ò ÓÖ��Ö ØÓ �Ò×�ÖØ Ø�� Ò�Û �ÒØÖݺ ÁÒ

Page 29: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Delete Performance

Delete performance under different a) bulkload factors b) page sizes.

60 70 80 90 1000

5

10

15

20

25

30

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе

���ÙÖ� ½�� ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �

��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø��× ��Ø� ÑÓÚ�Ñ�ÒØ �× �Ý ��Ö Ø���ÓÑ�Ò�ÒØ Ó×غ �× Ø�� Ó ÙÔ��� ÔÓÖØ�ÓÒ× Ó� Ø�� �ÖÖ�Ý× �ÖÓÛ�ÖÓÑ �¼± ØÓ �¼±¸ Ø��× Ó×Ø �Ò Ö��×�׸ Ö�×ÙÐØ�Ò� �Ò ×ÐÓÛ�Ö�Ò×�ÖØ�ÓÒ Ø�Ñ�׺ Å� ÖÓ¹�Ò��Ü�Ò� ���Ô× Ø�� ×�Ñ� Ð�Ö�� �Ö¹Ö�Ý ×ØÖÙ ØÙÖ� ÙÒØÓÙ ��� �Ò� Ø��Ö��ÓÖ� ×Ù«�Ö× �ÖÓÑ Ø�� ×�Ñ��«� غ ÀÓÛ�Ú�Ö¸ �Ò �Ô��¹ÌÖ��׸ Û� Ö��Ù �� Ø�� ��Ø� ÑÓÚ�¹Ñ�ÒØ Ó×Ø �Ý Ù×�Ò� ×Ñ�ÐÐ�Ö � ��¹ÓÔØ�Ñ�Þ�� ÒÓ��׸ Ö�×ÙÐØ�Ò��Ò ½� ØÓ ¾¼¹�ÓÐ� ×Ô���¹ÙÔ׺ ��Ø� ÑÓÚ�Ñ�ÒØ ��× �� ÓÑ�ÑÙ � Ð�×× Ó×ØÐÝ Ø��Ò ×��Ö �¸ Ð����Ò� ØÓ Ø�� ­�Ø ÙÖÚ�× ÙÔØ�ÖÓÙ�� �¼± �ÙÐк Ï��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐи �Ò×�ÖØ�ÓÒ× �Ù×� �Ö�ÕÙ�ÒØ Ô��� ×ÔÐ�Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�� Ó×Ø Ó� � Ô���×ÔÐ�Ø �× ��Ö ÑÓÖ� Ø��Ò Ø�� ÔÖ�Ú�ÓÙ× ��Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Ö�¹×ÙÐØ�Ò� �Ò Ø�� Ð�Ö�� �ÙÑÔ ×��Ò �Ò Ø�� ÙÖÚ�׺ ÁÒ ��¹ÌÖ��×�Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ �ÓÛ�Ú�Ö¸ Ø�� Ô��� ×ÔÐ�Ø Ó×Ø �× ÓÑÔ�¹Ö��Ð� ØÓ ÓÔÝ�Ò� ��Ð� Ó� � Ô���¸ Û�� � �× Ø�� �Ú�Ö��� ��Ø�ÑÓÚ�Ñ�ÒØ Ó×Ø �ÓÖ �Ò×�ÖØ�Ò� �ÒØÓ �Ò �ÐÑÓ×Ø �ÙÐÐ Ô���º �ÙØÐ�Ø�Ö �Ò×�ÖØ�ÓÒ× Ñ�Ý ��Ø ��Ð� �ÑÔØÝ Ô���× ´�Ù×Ø ×ÔÐ�ص �Ò���Ò � �Ò ÙÖ Ð�×× ��Ø� ÑÓÚ�Ñ�Òظ Ö�×ÙÐØ�Ò� �Ò ��×Ø�Ö �Ò×�ÖØ�ÓÒØ�Ñ�× �Ø Ø�� ½¼¼± ÔÓ�Òغ

���ÙÖ� ½¿´�µ ×�ÓÛ× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � ÓÒ �ÙÐÐ ØÖ��×Ó� ��«�Ö�ÒØ ×�Þ�׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸�Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× �ÖÓÑ �º¾� ØÓ ½º�¾ Û��Ò Ø��ÒÙÑ��Ö Ó� �ÒØÖ��× �Ò Ð��� Ô���× �× �Ò Ö��×�� �ÖÓÑ ½¼¼Ã ØÓ½¼Åº Ì��× �� Ö��×� �Ò ×Ô���¹ÙÔ �× �Ù×�� �Ý Ø�� �Ò Ö��×¹�Ò� ÒÙÑ��Ö Ó� Ô��� ×ÔÐ�Ø× ´�ÖÓÑ �� ØÓ ½�¿½ Ð��� Ô��� ×ÔÐ�Ø×�ÓÖ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ò� ×�Ñ�Ð�Ö ØÖ�Ò�× �ÓÖ ÓØ��Ö�Ò��Ü�×µº �× �Ö�Ù�� ��ÓÚ�¸ �Ò Ö��×�� Ô��� ×ÔÐ�Ø× ��Ú� �ÑÙ � �Ö��Ø�Ö Ô�Ö�ÓÖÑ�Ò � �ÑÔ� Ø ÓÒ �Ô��¹ÌÖ��× Ø��Ò ÓÒ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ Ð����Ò� ØÓ Ø��×Ô���¹ÙÔ �� Ö��×�º

���ÙÖ�× ½¿´ µ �Ò� ´�µ ÓÑÔ�Ö� Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �Ú�ÖÝ�Ò� Ô��� ×�Þ�× Û��Ò ØÖ��× �Ö� ½¼¼± �Ò� �¼± �ÙÐк �×Ø�� Ô��� ×�Þ� �ÖÓÛ׸ Ø�� �Ü� ÙØ�ÓÒ Ø�Ñ�× Ó� ��×�¹ÓÔØ�Ñ�Þ����¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �ÜÔÐÓ�� �� �Ù×� Ó� Ø�� Óѹ��Ò�� �«� Ø× Ó� Ð�Ö��Ö ��Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ð�Ö��Ö Ô��� ×ÔÐ�Ø Ó×Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�ÓÙ�� Ô��� ×ÔÐ�Ø Ó×Ø× �Ð×Ó �Ò Ö��×�¸×��Ö � �Ò� ��Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× ÓÒÐÝ ��Ò�� ×Ð���ØÐݸ ��¹ �Ù×� Û�Ø� Ð�Ö��Ö Ô��� ×�Þ�× ÓÑ�× Ø�� ��Ú�ÒØ���× Ó� Ð�Ö��ÖÓÔØ�Ñ�Ð ÒÓ�� Û��Ø�׺ Ì��Ö��ÓÖ� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× �Ò¹ Ö��×� �Ò ���ÙÖ� ½¿´ µ �ÙØ �Ö� �ÐÑÓ×Ø ­�Ø �Ò ´�µº �ÐØÓ��Ø��Ö�Ò ���ÙÖ� ½¿´ µ �Ò� ´�µ¸ �Ô��¹ÌÖ��× � ���Ú� ½º½�ß¾º�¼ �Ò��º��ß¿�º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ö�¹×Ô� Ø�Ú�Ðݺ

�ÓÑÔ�Ö�Ò� Ø�� ØÛÓ �Ô��¹ÌÖ��׸ Û� ×�� Ø��Ý ��Ú� ×�Ñ�¹Ð�Ö �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �º ËÓÑ�Ø�Ñ�× � ��¹¬Ö×Ø �Ô��¹ÌÖ��×Ô�Ö�ÓÖÑ ÛÓÖ×� Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× ÔÖ�Ñ�Ö�ÐÝ�� �Ù×� Ó� Ø�� ÑÓÖ� ÓÑÔÐ� �Ø�� ÒÓ��»Ô��� ×ÔÐ�Ø ÓÔ�Ö�Ø�ÓÒ×�Ò � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ �× ��× Ù××�� �Ò Ë� Ø�ÓÒ ¿º¾º

4.2.3 Deletion Performance��Ð�Ø�ÓÒ× �Ö� �ÑÔÐ�Ñ�ÒØ�� �× Ð�ÞÝ ��Ð�Ø�ÓÒ× �Ò �ÐÐ Ø�� �Ò¹

0

200

400

600

800

1000

1200

sim

ulat

ion

time

(M c

ycle

s)

Disk−optimized B+tree

Disk−first fpB+tree

Cache−first fpB+tree

���ÙÖ� ½�� Ê�Ò�� × �Ò Ô�Ö�ÓÖÑ�Ò � ´½�Ã� Ô���¸× �ÒÒ�Ò� ½Å ��Ý×µ

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)

4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

´�µ ��Ø�Ö �ÙÐ�ÐÓ���Ò� ØÖ��× ½¼¼± �ÙÐÐ ´�µ Å�ØÙÖ� ØÖ��×

���ÙÖ� ½�� ËÔ� � ÓÚ�Ö����

��Ü�׺ � ×��Ö � �× �ÓÐÐÓÛ�� �Ý � ��Ø� ÑÓÚ�Ñ�ÒØ ÓÔ�Ö�Ø�ÓÒ ØÓÖ�ÑÓÚ� Ø�� ��Ð�Ø�� �ÒØÖݸ �ÙØ Û� �Ó ÒÓØ Ñ�Ö�� ÙÒ��Ö­ÓÛ��Ô���× ÓÖ ÒÓ��׺ ���ÙÖ� ½� �Ú�ÐÙ�Ø�× ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �´�ÓÖ ¾¼¼¼ Ö�Ò�ÓÑ ��Ð�Ø�ÓÒ×µ �Ò ØÛÓ ×�ØØ�Ò�×� ´�µ Ú�ÖÝ�Ò� Ø���ÙÐ�ÐÓ�� �� ØÓÖ Û��Ò Ø�� Ô��� ×�Þ� �× ½�Ã�¸ �Ò� ´�µ Ú�ÖÝ�Ò�Ø�� Ô��� ×�Þ�× Û��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐк Ì�� �ÓÑ�Ò�ÒØ Ó×Ø �Ò ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �× Ø����Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Û�� � �Ò Ö��×�× �× Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ�Ò Ö��×�× �Ò� Ø�� Ô��� ×�Þ� �ÖÓÛ׺ ÀÓÛ�Ú�Ö¸ Ø�� ×��Ö � �Ò���Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× Ó� �Ô��¹ÌÖ��× ÓÒÐÝ ��Ò�� ×Ð���ØÐݺ ËÓØ�� �Ô��¹ÌÖ��× � ���Ú� ¿º¾ß¾¼º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺

4.2.4 Range Scan Performance���ÙÖ� ½� ÓÑÔ�Ö�× Ø�� Ö�Ò�� × �Ò � �� Ô�Ö�ÓÖÑ�Ò � Ó�

�Ô��¹ÌÖ��× �Ò� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺ Ì�� ØÖ��× �Ö��ÙÐ�ÐÓ���� Û�Ø� ¿Å ��Ý׸ Ù×�Ò� � ½¼¼± �ÙÐ�ÐÓ�� �� ØÓÖºÏ� ��Ò�Ö�Ø� ½¼¼ Ö�Ò�ÓÑ ×Ø�ÖØ ��Ý׸ �ÓÖ �� � ÓÑÔÙØ�Ò� �Ò�Ò� ��Ý ×Ù � Ø��Ø Ø�� Ö�Ò�� ×Ô�Ò× ÔÖ� �×�ÐÝ ½Å ØÙÔÐ� Á�׸�Ò� Ø��Ò Ô�Ö�ÓÖÑ Ø��×� ½¼¼ Ö�Ò�� × �Ò× ÓÒ� ��Ø�Ö �ÒÓØ��Öº�ÓÑÔ�Ö�� ØÓ Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� ��×�¹¬Ö×Ø �Ò� � ��¹¬Ö×Ø �Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× Ó� �º¾ �Ò� ¿º�¸ Ö�¹×Ô� Ø�Ú�Ðݺ

4.3 I/O Performance and Space OverheadËÔ� � ÇÚ�Ö����º ���ÙÖ� ½� ×�ÓÛ× Ø�� ×Ô� � ÓÚ�Ö�����

Ó� Ø�� �Ô��¹ÌÖ��× ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �ÓÖ� Ö�Ò�� Ó� Ô��� ×�Þ�׸ ��Ô� Ø�Ò� ØÛÓ ´�ÜØÖ�Ñ�е × �Ò�Ö�Ó×�´�µ �ÑÑ����Ø�ÐÝ ��Ø�Ö �ÙÐ�ÐÓ���Ò� Ø�� ØÖ��× ½¼¼± �ÙÐи �Ò�´�µ ��Ø�Ö �Ò×�ÖØ�Ò� �Å ��Ý× �ÒØÓ ØÖ��× �ÙÐ�ÐÓ���� Û�Ø� ½Å��Ý׺ Ï� ×�� Ø��Ø �Ò �� � Ó� Ø��×� × �Ò�Ö�Ó׸ ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× �Ò ÙÖ Ð�×× Ø��Ò � �± ÓÚ�Ö����º ÁÒ � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ Ø�� ×Ô� � ÓÚ�Ö���� �× Ð�×× Ø��Ò �± ÙÒ��Ö × �Ò�Ö�Ó´�µ¸ �Ú�Ò ��ØØ�Ö Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× �� �Ù×�

�ËÔ� � ÇÚ�Ö���� �� Ó� Ô���× �Ò Ø�� �Ò��Ü

� Ó� Ô���× �Ò � ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��� ½

Page 30: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Range Scan Performance

60 70 80 90 1000

5

10

15

20

25

30

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе

���ÙÖ� ½�� ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �

��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø��× ��Ø� ÑÓÚ�Ñ�ÒØ �× �Ý ��Ö Ø���ÓÑ�Ò�ÒØ Ó×غ �× Ø�� Ó ÙÔ��� ÔÓÖØ�ÓÒ× Ó� Ø�� �ÖÖ�Ý× �ÖÓÛ�ÖÓÑ �¼± ØÓ �¼±¸ Ø��× Ó×Ø �Ò Ö��×�׸ Ö�×ÙÐØ�Ò� �Ò ×ÐÓÛ�Ö�Ò×�ÖØ�ÓÒ Ø�Ñ�׺ Å� ÖÓ¹�Ò��Ü�Ò� ���Ô× Ø�� ×�Ñ� Ð�Ö�� �Ö¹Ö�Ý ×ØÖÙ ØÙÖ� ÙÒØÓÙ ��� �Ò� Ø��Ö��ÓÖ� ×Ù«�Ö× �ÖÓÑ Ø�� ×�Ñ��«� غ ÀÓÛ�Ú�Ö¸ �Ò �Ô��¹ÌÖ��׸ Û� Ö��Ù �� Ø�� ��Ø� ÑÓÚ�¹Ñ�ÒØ Ó×Ø �Ý Ù×�Ò� ×Ñ�ÐÐ�Ö � ��¹ÓÔØ�Ñ�Þ�� ÒÓ��׸ Ö�×ÙÐØ�Ò��Ò ½� ØÓ ¾¼¹�ÓÐ� ×Ô���¹ÙÔ׺ ��Ø� ÑÓÚ�Ñ�ÒØ ��× �� ÓÑ�ÑÙ � Ð�×× Ó×ØÐÝ Ø��Ò ×��Ö �¸ Ð����Ò� ØÓ Ø�� ­�Ø ÙÖÚ�× ÙÔØ�ÖÓÙ�� �¼± �ÙÐк Ï��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐи �Ò×�ÖØ�ÓÒ× �Ù×� �Ö�ÕÙ�ÒØ Ô��� ×ÔÐ�Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�� Ó×Ø Ó� � Ô���×ÔÐ�Ø �× ��Ö ÑÓÖ� Ø��Ò Ø�� ÔÖ�Ú�ÓÙ× ��Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Ö�¹×ÙÐØ�Ò� �Ò Ø�� Ð�Ö�� �ÙÑÔ ×��Ò �Ò Ø�� ÙÖÚ�׺ ÁÒ ��¹ÌÖ��×�Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ �ÓÛ�Ú�Ö¸ Ø�� Ô��� ×ÔÐ�Ø Ó×Ø �× ÓÑÔ�¹Ö��Ð� ØÓ ÓÔÝ�Ò� ��Ð� Ó� � Ô���¸ Û�� � �× Ø�� �Ú�Ö��� ��Ø�ÑÓÚ�Ñ�ÒØ Ó×Ø �ÓÖ �Ò×�ÖØ�Ò� �ÒØÓ �Ò �ÐÑÓ×Ø �ÙÐÐ Ô���º �ÙØÐ�Ø�Ö �Ò×�ÖØ�ÓÒ× Ñ�Ý ��Ø ��Ð� �ÑÔØÝ Ô���× ´�Ù×Ø ×ÔÐ�ص �Ò���Ò � �Ò ÙÖ Ð�×× ��Ø� ÑÓÚ�Ñ�Òظ Ö�×ÙÐØ�Ò� �Ò ��×Ø�Ö �Ò×�ÖØ�ÓÒØ�Ñ�× �Ø Ø�� ½¼¼± ÔÓ�Òغ

���ÙÖ� ½¿´�µ ×�ÓÛ× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � ÓÒ �ÙÐÐ ØÖ��×Ó� ��«�Ö�ÒØ ×�Þ�׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸�Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× �ÖÓÑ �º¾� ØÓ ½º�¾ Û��Ò Ø��ÒÙÑ��Ö Ó� �ÒØÖ��× �Ò Ð��� Ô���× �× �Ò Ö��×�� �ÖÓÑ ½¼¼Ã ØÓ½¼Åº Ì��× �� Ö��×� �Ò ×Ô���¹ÙÔ �× �Ù×�� �Ý Ø�� �Ò Ö��×¹�Ò� ÒÙÑ��Ö Ó� Ô��� ×ÔÐ�Ø× ´�ÖÓÑ �� ØÓ ½�¿½ Ð��� Ô��� ×ÔÐ�Ø×�ÓÖ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ò� ×�Ñ�Ð�Ö ØÖ�Ò�× �ÓÖ ÓØ��Ö�Ò��Ü�×µº �× �Ö�Ù�� ��ÓÚ�¸ �Ò Ö��×�� Ô��� ×ÔÐ�Ø× ��Ú� �ÑÙ � �Ö��Ø�Ö Ô�Ö�ÓÖÑ�Ò � �ÑÔ� Ø ÓÒ �Ô��¹ÌÖ��× Ø��Ò ÓÒ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ Ð����Ò� ØÓ Ø��×Ô���¹ÙÔ �� Ö��×�º

���ÙÖ�× ½¿´ µ �Ò� ´�µ ÓÑÔ�Ö� Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �Ú�ÖÝ�Ò� Ô��� ×�Þ�× Û��Ò ØÖ��× �Ö� ½¼¼± �Ò� �¼± �ÙÐк �×Ø�� Ô��� ×�Þ� �ÖÓÛ׸ Ø�� �Ü� ÙØ�ÓÒ Ø�Ñ�× Ó� ��×�¹ÓÔØ�Ñ�Þ����¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �ÜÔÐÓ�� �� �Ù×� Ó� Ø�� Óѹ��Ò�� �«� Ø× Ó� Ð�Ö��Ö ��Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ð�Ö��Ö Ô��� ×ÔÐ�Ø Ó×Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�ÓÙ�� Ô��� ×ÔÐ�Ø Ó×Ø× �Ð×Ó �Ò Ö��×�¸×��Ö � �Ò� ��Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× ÓÒÐÝ ��Ò�� ×Ð���ØÐݸ ��¹ �Ù×� Û�Ø� Ð�Ö��Ö Ô��� ×�Þ�× ÓÑ�× Ø�� ��Ú�ÒØ���× Ó� Ð�Ö��ÖÓÔØ�Ñ�Ð ÒÓ�� Û��Ø�׺ Ì��Ö��ÓÖ� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× �Ò¹ Ö��×� �Ò ���ÙÖ� ½¿´ µ �ÙØ �Ö� �ÐÑÓ×Ø ­�Ø �Ò ´�µº �ÐØÓ��Ø��Ö�Ò ���ÙÖ� ½¿´ µ �Ò� ´�µ¸ �Ô��¹ÌÖ��× � ���Ú� ½º½�ß¾º�¼ �Ò��º��ß¿�º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ö�¹×Ô� Ø�Ú�Ðݺ

�ÓÑÔ�Ö�Ò� Ø�� ØÛÓ �Ô��¹ÌÖ��׸ Û� ×�� Ø��Ý ��Ú� ×�Ñ�¹Ð�Ö �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �º ËÓÑ�Ø�Ñ�× � ��¹¬Ö×Ø �Ô��¹ÌÖ��×Ô�Ö�ÓÖÑ ÛÓÖ×� Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× ÔÖ�Ñ�Ö�ÐÝ�� �Ù×� Ó� Ø�� ÑÓÖ� ÓÑÔÐ� �Ø�� ÒÓ��»Ô��� ×ÔÐ�Ø ÓÔ�Ö�Ø�ÓÒ×�Ò � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ �× ��× Ù××�� �Ò Ë� Ø�ÓÒ ¿º¾º

4.2.3 Deletion Performance��Ð�Ø�ÓÒ× �Ö� �ÑÔÐ�Ñ�ÒØ�� �× Ð�ÞÝ ��Ð�Ø�ÓÒ× �Ò �ÐÐ Ø�� �Ò¹

0

200

400

600

800

1000

1200

sim

ulat

ion

time

(M c

ycle

s)

Disk−optimized B+tree

Disk−first fpB+tree

Cache−first fpB+tree

���ÙÖ� ½�� Ê�Ò�� × �Ò Ô�Ö�ÓÖÑ�Ò � ´½�Ã� Ô���¸× �ÒÒ�Ò� ½Å ��Ý×µ

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)

4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)

4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

´�µ ��Ø�Ö �ÙÐ�ÐÓ���Ò� ØÖ��× ½¼¼± �ÙÐÐ ´�µ Å�ØÙÖ� ØÖ��×

���ÙÖ� ½�� ËÔ� � ÓÚ�Ö����

��Ü�׺ � ×��Ö � �× �ÓÐÐÓÛ�� �Ý � ��Ø� ÑÓÚ�Ñ�ÒØ ÓÔ�Ö�Ø�ÓÒ ØÓÖ�ÑÓÚ� Ø�� ��Ð�Ø�� �ÒØÖݸ �ÙØ Û� �Ó ÒÓØ Ñ�Ö�� ÙÒ��Ö­ÓÛ��Ô���× ÓÖ ÒÓ��׺ ���ÙÖ� ½� �Ú�ÐÙ�Ø�× ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �´�ÓÖ ¾¼¼¼ Ö�Ò�ÓÑ ��Ð�Ø�ÓÒ×µ �Ò ØÛÓ ×�ØØ�Ò�×� ´�µ Ú�ÖÝ�Ò� Ø���ÙÐ�ÐÓ�� �� ØÓÖ Û��Ò Ø�� Ô��� ×�Þ� �× ½�Ã�¸ �Ò� ´�µ Ú�ÖÝ�Ò�Ø�� Ô��� ×�Þ�× Û��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐк Ì�� �ÓÑ�Ò�ÒØ Ó×Ø �Ò ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �× Ø����Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Û�� � �Ò Ö��×�× �× Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ�Ò Ö��×�× �Ò� Ø�� Ô��� ×�Þ� �ÖÓÛ׺ ÀÓÛ�Ú�Ö¸ Ø�� ×��Ö � �Ò���Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× Ó� �Ô��¹ÌÖ��× ÓÒÐÝ ��Ò�� ×Ð���ØÐݺ ËÓØ�� �Ô��¹ÌÖ��× � ���Ú� ¿º¾ß¾¼º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺

4.2.4 Range Scan Performance���ÙÖ� ½� ÓÑÔ�Ö�× Ø�� Ö�Ò�� × �Ò � �� Ô�Ö�ÓÖÑ�Ò � Ó�

�Ô��¹ÌÖ��× �Ò� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺ Ì�� ØÖ��× �Ö��ÙÐ�ÐÓ���� Û�Ø� ¿Å ��Ý׸ Ù×�Ò� � ½¼¼± �ÙÐ�ÐÓ�� �� ØÓÖºÏ� ��Ò�Ö�Ø� ½¼¼ Ö�Ò�ÓÑ ×Ø�ÖØ ��Ý׸ �ÓÖ �� � ÓÑÔÙØ�Ò� �Ò�Ò� ��Ý ×Ù � Ø��Ø Ø�� Ö�Ò�� ×Ô�Ò× ÔÖ� �×�ÐÝ ½Å ØÙÔÐ� Á�׸�Ò� Ø��Ò Ô�Ö�ÓÖÑ Ø��×� ½¼¼ Ö�Ò�� × �Ò× ÓÒ� ��Ø�Ö �ÒÓØ��Öº�ÓÑÔ�Ö�� ØÓ Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� ��×�¹¬Ö×Ø �Ò� � ��¹¬Ö×Ø �Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× Ó� �º¾ �Ò� ¿º�¸ Ö�¹×Ô� Ø�Ú�Ðݺ

4.3 I/O Performance and Space OverheadËÔ� � ÇÚ�Ö����º ���ÙÖ� ½� ×�ÓÛ× Ø�� ×Ô� � ÓÚ�Ö�����

Ó� Ø�� �Ô��¹ÌÖ��× ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �ÓÖ� Ö�Ò�� Ó� Ô��� ×�Þ�׸ ��Ô� Ø�Ò� ØÛÓ ´�ÜØÖ�Ñ�е × �Ò�Ö�Ó×�´�µ �ÑÑ����Ø�ÐÝ ��Ø�Ö �ÙÐ�ÐÓ���Ò� Ø�� ØÖ��× ½¼¼± �ÙÐи �Ò�´�µ ��Ø�Ö �Ò×�ÖØ�Ò� �Å ��Ý× �ÒØÓ ØÖ��× �ÙÐ�ÐÓ���� Û�Ø� ½Å��Ý׺ Ï� ×�� Ø��Ø �Ò �� � Ó� Ø��×� × �Ò�Ö�Ó׸ ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× �Ò ÙÖ Ð�×× Ø��Ò � �± ÓÚ�Ö����º ÁÒ � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ Ø�� ×Ô� � ÓÚ�Ö���� �× Ð�×× Ø��Ò �± ÙÒ��Ö × �Ò�Ö�Ó´�µ¸ �Ú�Ò ��ØØ�Ö Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× �� �Ù×�

�ËÔ� � ÇÚ�Ö���� �� Ó� Ô���× �Ò Ø�� �Ò��Ü

� Ó� Ô���× �Ò � ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��� ½

Page 31: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Space Overhead

a) Bulkload 10M keys. b) Insert 9M keys and bulkload 1M keys.

60 70 80 90 1000

5

10

15

20

25

30

bulkload factor (16KB page)

exec

utio

n tim

e (M

cyc

les)

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

(3M entries in leaf pages, 100% full)

exec

utio

n tim

e (M

cyc

les)

4KB 8KB 16KB 32KB

Disk−optimized B+treeMicro−indexing Disk−first fpB+tree Cache−first fpB+tree

´�µ Î�ÖÝ�Ò� �ÙÐ�ÐÓ�� �� ØÓÖ× ´�µ Î�ÖÝ�Ò� Ô��� ×�Þ�× ´½¼¼± �ÙÐе

���ÙÖ� ½�� ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �

��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø��× ��Ø� ÑÓÚ�Ñ�ÒØ �× �Ý ��Ö Ø���ÓÑ�Ò�ÒØ Ó×غ �× Ø�� Ó ÙÔ��� ÔÓÖØ�ÓÒ× Ó� Ø�� �ÖÖ�Ý× �ÖÓÛ�ÖÓÑ �¼± ØÓ �¼±¸ Ø��× Ó×Ø �Ò Ö��×�׸ Ö�×ÙÐØ�Ò� �Ò ×ÐÓÛ�Ö�Ò×�ÖØ�ÓÒ Ø�Ñ�׺ Å� ÖÓ¹�Ò��Ü�Ò� ���Ô× Ø�� ×�Ñ� Ð�Ö�� �Ö¹Ö�Ý ×ØÖÙ ØÙÖ� ÙÒØÓÙ ��� �Ò� Ø��Ö��ÓÖ� ×Ù«�Ö× �ÖÓÑ Ø�� ×�Ñ��«� غ ÀÓÛ�Ú�Ö¸ �Ò �Ô��¹ÌÖ��׸ Û� Ö��Ù �� Ø�� ��Ø� ÑÓÚ�¹Ñ�ÒØ Ó×Ø �Ý Ù×�Ò� ×Ñ�ÐÐ�Ö � ��¹ÓÔØ�Ñ�Þ�� ÒÓ��׸ Ö�×ÙÐØ�Ò��Ò ½� ØÓ ¾¼¹�ÓÐ� ×Ô���¹ÙÔ׺ ��Ø� ÑÓÚ�Ñ�ÒØ ��× �� ÓÑ�ÑÙ � Ð�×× Ó×ØÐÝ Ø��Ò ×��Ö �¸ Ð����Ò� ØÓ Ø�� ­�Ø ÙÖÚ�× ÙÔØ�ÖÓÙ�� �¼± �ÙÐк Ï��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐи �Ò×�ÖØ�ÓÒ× �Ù×� �Ö�ÕÙ�ÒØ Ô��� ×ÔÐ�Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�� Ó×Ø Ó� � Ô���×ÔÐ�Ø �× ��Ö ÑÓÖ� Ø��Ò Ø�� ÔÖ�Ú�ÓÙ× ��Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Ö�¹×ÙÐØ�Ò� �Ò Ø�� Ð�Ö�� �ÙÑÔ ×��Ò �Ò Ø�� ÙÖÚ�׺ ÁÒ ��¹ÌÖ��×�Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ �ÓÛ�Ú�Ö¸ Ø�� Ô��� ×ÔÐ�Ø Ó×Ø �× ÓÑÔ�¹Ö��Ð� ØÓ ÓÔÝ�Ò� ��Ð� Ó� � Ô���¸ Û�� � �× Ø�� �Ú�Ö��� ��Ø�ÑÓÚ�Ñ�ÒØ Ó×Ø �ÓÖ �Ò×�ÖØ�Ò� �ÒØÓ �Ò �ÐÑÓ×Ø �ÙÐÐ Ô���º �ÙØÐ�Ø�Ö �Ò×�ÖØ�ÓÒ× Ñ�Ý ��Ø ��Ð� �ÑÔØÝ Ô���× ´�Ù×Ø ×ÔÐ�ص �Ò���Ò � �Ò ÙÖ Ð�×× ��Ø� ÑÓÚ�Ñ�Òظ Ö�×ÙÐØ�Ò� �Ò ��×Ø�Ö �Ò×�ÖØ�ÓÒØ�Ñ�× �Ø Ø�� ½¼¼± ÔÓ�Òغ

���ÙÖ� ½¿´�µ ×�ÓÛ× �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò � ÓÒ �ÙÐÐ ØÖ��×Ó� ��«�Ö�ÒØ ×�Þ�׺ �ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸�Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× �ÖÓÑ �º¾� ØÓ ½º�¾ Û��Ò Ø��ÒÙÑ��Ö Ó� �ÒØÖ��× �Ò Ð��� Ô���× �× �Ò Ö��×�� �ÖÓÑ ½¼¼Ã ØÓ½¼Åº Ì��× �� Ö��×� �Ò ×Ô���¹ÙÔ �× �Ù×�� �Ý Ø�� �Ò Ö��×¹�Ò� ÒÙÑ��Ö Ó� Ô��� ×ÔÐ�Ø× ´�ÖÓÑ �� ØÓ ½�¿½ Ð��� Ô��� ×ÔÐ�Ø×�ÓÖ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ �Ò� ×�Ñ�Ð�Ö ØÖ�Ò�× �ÓÖ ÓØ��Ö�Ò��Ü�×µº �× �Ö�Ù�� ��ÓÚ�¸ �Ò Ö��×�� Ô��� ×ÔÐ�Ø× ��Ú� �ÑÙ � �Ö��Ø�Ö Ô�Ö�ÓÖÑ�Ò � �ÑÔ� Ø ÓÒ �Ô��¹ÌÖ��× Ø��Ò ÓÒ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò�¸ Ð����Ò� ØÓ Ø��×Ô���¹ÙÔ �� Ö��×�º

���ÙÖ�× ½¿´ µ �Ò� ´�µ ÓÑÔ�Ö� Ø�� �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �Ú�ÖÝ�Ò� Ô��� ×�Þ�× Û��Ò ØÖ��× �Ö� ½¼¼± �Ò� �¼± �ÙÐк �×Ø�� Ô��� ×�Þ� �ÖÓÛ׸ Ø�� �Ü� ÙØ�ÓÒ Ø�Ñ�× Ó� ��×�¹ÓÔØ�Ñ�Þ����¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �ÜÔÐÓ�� �� �Ù×� Ó� Ø�� Óѹ��Ò�� �«� Ø× Ó� Ð�Ö��Ö ��Ø� ÑÓÚ�Ñ�ÒØ �Ò� Ð�Ö��Ö Ô��� ×ÔÐ�Ø Ó×Ø׺ ÁÒ �Ô��¹ÌÖ��׸ Ø�ÓÙ�� Ô��� ×ÔÐ�Ø Ó×Ø× �Ð×Ó �Ò Ö��×�¸×��Ö � �Ò� ��Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× ÓÒÐÝ ��Ò�� ×Ð���ØÐݸ ��¹ �Ù×� Û�Ø� Ð�Ö��Ö Ô��� ×�Þ�× ÓÑ�× Ø�� ��Ú�ÒØ���× Ó� Ð�Ö��ÖÓÔØ�Ñ�Ð ÒÓ�� Û��Ø�׺ Ì��Ö��ÓÖ� Ø�� ÙÖÚ�× Ó� �Ô��¹ÌÖ��× �Ò¹ Ö��×� �Ò ���ÙÖ� ½¿´ µ �ÙØ �Ö� �ÐÑÓ×Ø ­�Ø �Ò ´�µº �ÐØÓ��Ø��Ö�Ò ���ÙÖ� ½¿´ µ �Ò� ´�µ¸ �Ô��¹ÌÖ��× � ���Ú� ½º½�ß¾º�¼ �Ò��º��ß¿�º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ö�¹×Ô� Ø�Ú�Ðݺ

�ÓÑÔ�Ö�Ò� Ø�� ØÛÓ �Ô��¹ÌÖ��׸ Û� ×�� Ø��Ý ��Ú� ×�Ñ�¹Ð�Ö �Ò×�ÖØ�ÓÒ Ô�Ö�ÓÖÑ�Ò �º ËÓÑ�Ø�Ñ�× � ��¹¬Ö×Ø �Ô��¹ÌÖ��×Ô�Ö�ÓÖÑ ÛÓÖ×� Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× ÔÖ�Ñ�Ö�ÐÝ�� �Ù×� Ó� Ø�� ÑÓÖ� ÓÑÔÐ� �Ø�� ÒÓ��»Ô��� ×ÔÐ�Ø ÓÔ�Ö�Ø�ÓÒ×�Ò � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ �× ��× Ù××�� �Ò Ë� Ø�ÓÒ ¿º¾º

4.2.3 Deletion Performance��Ð�Ø�ÓÒ× �Ö� �ÑÔÐ�Ñ�ÒØ�� �× Ð�ÞÝ ��Ð�Ø�ÓÒ× �Ò �ÐÐ Ø�� �Ò¹

0

200

400

600

800

1000

1200

sim

ulat

ion

time

(M c

ycle

s)

Disk−optimized B+tree

Disk−first fpB+tree

Cache−first fpB+tree

���ÙÖ� ½�� Ê�Ò�� × �Ò Ô�Ö�ÓÖÑ�Ò � ´½�Ã� Ô���¸× �ÒÒ�Ò� ½Å ��Ý×µ

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)

4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

0

10

20

30

40

50

page size

spac

e ov

erhe

ad (p

erce

ntag

e)

4KB 8KB 16KB 32KB

Disk−first fpB+tree Cache−first fpB+tree

´�µ ��Ø�Ö �ÙÐ�ÐÓ���Ò� ØÖ��× ½¼¼± �ÙÐÐ ´�µ Å�ØÙÖ� ØÖ��×

���ÙÖ� ½�� ËÔ� � ÓÚ�Ö����

��Ü�׺ � ×��Ö � �× �ÓÐÐÓÛ�� �Ý � ��Ø� ÑÓÚ�Ñ�ÒØ ÓÔ�Ö�Ø�ÓÒ ØÓÖ�ÑÓÚ� Ø�� ��Ð�Ø�� �ÒØÖݸ �ÙØ Û� �Ó ÒÓØ Ñ�Ö�� ÙÒ��Ö­ÓÛ��Ô���× ÓÖ ÒÓ��׺ ���ÙÖ� ½� �Ú�ÐÙ�Ø�× ��Ð�Ø�ÓÒ Ô�Ö�ÓÖÑ�Ò �´�ÓÖ ¾¼¼¼ Ö�Ò�ÓÑ ��Ð�Ø�ÓÒ×µ �Ò ØÛÓ ×�ØØ�Ò�×� ´�µ Ú�ÖÝ�Ò� Ø���ÙÐ�ÐÓ�� �� ØÓÖ Û��Ò Ø�� Ô��� ×�Þ� �× ½�Ã�¸ �Ò� ´�µ Ú�ÖÝ�Ò�Ø�� Ô��� ×�Þ�× Û��Ò Ø�� ØÖ��× �Ö� ½¼¼± �ÙÐк Ì�� �ÓÑ�Ò�ÒØ Ó×Ø �Ò ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �Ò� Ñ� ÖÓ¹�Ò��Ü�Ò� �× Ø����Ø� ÑÓÚ�Ñ�ÒØ Ó×ظ Û�� � �Ò Ö��×�× �× Ø�� �ÙÐ�ÐÓ�� �� ØÓÖ�Ò Ö��×�× �Ò� Ø�� Ô��� ×�Þ� �ÖÓÛ׺ ÀÓÛ�Ú�Ö¸ Ø�� ×��Ö � �Ò���Ø� ÑÓÚ�Ñ�ÒØ Ó×Ø× Ó� �Ô��¹ÌÖ��× ÓÒÐÝ ��Ò�� ×Ð���ØÐݺ ËÓØ�� �Ô��¹ÌÖ��× � ���Ú� ¿º¾ß¾¼º� �ÓÐ� ×Ô���¹ÙÔ× ÓÚ�Ö ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺

4.2.4 Range Scan Performance���ÙÖ� ½� ÓÑÔ�Ö�× Ø�� Ö�Ò�� × �Ò � �� Ô�Ö�ÓÖÑ�Ò � Ó�

�Ô��¹ÌÖ��× �Ò� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׺ Ì�� ØÖ��× �Ö��ÙÐ�ÐÓ���� Û�Ø� ¿Å ��Ý׸ Ù×�Ò� � ½¼¼± �ÙÐ�ÐÓ�� �� ØÓÖºÏ� ��Ò�Ö�Ø� ½¼¼ Ö�Ò�ÓÑ ×Ø�ÖØ ��Ý׸ �ÓÖ �� � ÓÑÔÙØ�Ò� �Ò�Ò� ��Ý ×Ù � Ø��Ø Ø�� Ö�Ò�� ×Ô�Ò× ÔÖ� �×�ÐÝ ½Å ØÙÔÐ� Á�׸�Ò� Ø��Ò Ô�Ö�ÓÖÑ Ø��×� ½¼¼ Ö�Ò�� × �Ò× ÓÒ� ��Ø�Ö �ÒÓØ��Öº�ÓÑÔ�Ö�� ØÓ Ø�� ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��׸ Ø�� ��×�¹¬Ö×Ø �Ò� � ��¹¬Ö×Ø �Ô��¹ÌÖ��× � ���Ú� ×Ô���¹ÙÔ× Ó� �º¾ �Ò� ¿º�¸ Ö�¹×Ô� Ø�Ú�Ðݺ

4.3 I/O Performance and Space OverheadËÔ� � ÇÚ�Ö����º ���ÙÖ� ½� ×�ÓÛ× Ø�� ×Ô� � ÓÚ�Ö�����

Ó� Ø�� �Ô��¹ÌÖ��× ÓÑÔ�Ö�� ØÓ ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��× �ÓÖ� Ö�Ò�� Ó� Ô��� ×�Þ�׸ ��Ô� Ø�Ò� ØÛÓ ´�ÜØÖ�Ñ�е × �Ò�Ö�Ó×�´�µ �ÑÑ����Ø�ÐÝ ��Ø�Ö �ÙÐ�ÐÓ���Ò� Ø�� ØÖ��× ½¼¼± �ÙÐи �Ò�´�µ ��Ø�Ö �Ò×�ÖØ�Ò� �Å ��Ý× �ÒØÓ ØÖ��× �ÙÐ�ÐÓ���� Û�Ø� ½Å��Ý׺ Ï� ×�� Ø��Ø �Ò �� � Ó� Ø��×� × �Ò�Ö�Ó׸ ��×�¹¬Ö×Ø �Ô��¹ÌÖ��× �Ò ÙÖ Ð�×× Ø��Ò � �± ÓÚ�Ö����º ÁÒ � ��¹¬Ö×Ø �Ô��¹ÌÖ��׸ Ø�� ×Ô� � ÓÚ�Ö���� �× Ð�×× Ø��Ò �± ÙÒ��Ö × �Ò�Ö�Ó´�µ¸ �Ú�Ò ��ØØ�Ö Ø��Ò ��×�¹¬Ö×Ø �Ô��¹ÌÖ��׺ Ì��× �× �� �Ù×�

�ËÔ� � ÇÚ�Ö���� �� Ó� Ô���× �Ò Ø�� �Ò��Ü

� Ó� Ô���× �Ò � ��×�¹ÓÔØ�Ñ�Þ�� ��¹ÌÖ��� ½

Page 32: Fractal Prefetching B+-Trees: Optimizing Both …IntroductionOptimizing I/O Performance Optimizing Cache PerformanceEvaluationDiscussion Fractal Prefetching B+-Trees: Optimizing Both

Introduction Optimizing I/O Performance Optimizing Cache Performance Evaluation Discussion

Discussions

• Too hard to implement (compare to micro-indexing). Insertion is expensiveanyway.

• Concurrency problem. Lock at node level or page level? Fine grain or coarsegrain?

• Logging issue? How to guarantee consistency of this data structure.

• Missing real word benchmark for search/insert/delete.