28
Efficient Bulk Deletes in Relational Databases A. Gärtner 1 A. Kemper 1 D. Kossmann 2 B. Zeller 1 1 Universität Passau 94030 Passau, Germany <lastname>@db.fmi.uni- passau.de 2 Technische Universität München 81667 München, Germany [email protected]

Efficient Bulk Deletes in Relational Databases

  • Upload
    aleda

  • View
    44

  • Download
    5

Embed Size (px)

DESCRIPTION

Efficient Bulk Deletes in Relational Databases. A. Gärtner 1 A. Kemper 1 D. Kossmann 2 B. Zeller 1. 1 Universität Passau 94030 Passau, Germany @db.fmi.uni-passau.de. 2 Technische Universität München 81667 München, Germany [email protected]. Outline. Motivation - PowerPoint PPT Presentation

Citation preview

Page 1: Efficient Bulk Deletes in Relational Databases

Efficient Bulk Deletes in Relational

Databases

A. Gärtner1 A. Kemper1 D. Kossmann2 B. Zeller1

1 Universität Passau

94030 Passau, Germany

<lastname>@db.fmi.uni-passau.de

2 Technische Universität München

81667 München, Germany

[email protected]

Page 2: Efficient Bulk Deletes in Relational Databases

2

Outline

• Motivation

• Related work

• Idea: traditional horizonzal vs. new vertical approach

• Implementation

• Concurrency control and reorganisation

• Benchmark results

• Conclusion and future work

Page 3: Efficient Bulk Deletes in Relational Databases

3

Motivation

• bulk deletes used in:• SAP R/3 Archiving • data warehouses window technique

• today: 500 MB, 3 indices, 15% deleted 2 h 50 min

• partitioning drop partition, but :

• orthogonal deletes:

• data is partitioned according to orderdate

• data is deleted according to the orderstatus flag

• semantic restrictions

• „delete all orders with orderdate < 1995 but only if the order is fully processed“

Page 4: Efficient Bulk Deletes in Relational Databases

4

Index Structure

• B+-Trees used for indexing

• Leaf pages linked together

• Entries in leaves are sorted according to indexed values

• Record identified by unique Row Identifier (RID)

• RID contains physical address

FileNr BlockNr SlotNr

RID: 001 005 017

root

inner nodes

leaves

Page 5: Efficient Bulk Deletes in Relational Databases

5

Related Work

• deletion in B+-Trees - J.Jannink. Implementing deletion in B+-Trees. ACM SIGMOD 1994 - T.Johnson and D.Sasha. Utilization of B-Trees with inserts, deletes and modifies. ACM SIGMOD 1989.

• bulk loading - J.v.d.Bercken, B.Seeger, and P.Widmayer. A generic approach to bulk loading multidimensional index structures. VLDB 1997- J.Wiener and J.Naughton. OODB bulk loading revisited: The partitioned list approach. VLDB 1995.

Page 6: Efficient Bulk Deletes in Relational Databases

6

Related Work

• Concurrent transactions - C.Zou and B.Salzberg. On-line reorganisation of sparsely- populated B+- Trees. ACM SIGMOD 1996. - C.Mohan and F.Levine. ARIES/IM: An efficient and high concurrency index management method using write-ahead logging. ACM SIGMOD 1992

• Pointer join processing - E.Shekita and M.Cary. A performance evaluation of pointer based joins. ACM SIGMOD 1990. - R.Braumandl, J.Claussen, A.Kemper, and D.Kossmann. Functional join processing. VLDB 1998.

Page 7: Efficient Bulk Deletes in Relational Databases

7

disk pages

Traditional Horizontal Approach(Record-at-a-time approach)

RID A B

0107 4711 700

Index on A Index on B

Table R

=> Random I/O on index leaf pages and table pages

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

Page 8: Efficient Bulk Deletes in Relational Databases

8

New Set-Oriented Vertical Approach

RID A BIndex on B

=> Sequential I/O on index leaf pages and table pages

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

sortAIndex on A

107 4711 700

sortRID sortB

disk pages

Page 9: Efficient Bulk Deletes in Relational Databases

9

Implementing the new Approach

RID A BIndex on B

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

sortAIndex on A

107 4711 700

sortRID sortB

Page 10: Efficient Bulk Deletes in Relational Databases

10

Implementing the new Approach

RID A BIndex on B

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

sortAIndex on A

107 4711 700

sortRID sortB

Page 11: Efficient Bulk Deletes in Relational Databases

11

Implementing the new Approach

RID A BIndex on B

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

sortAIndex on A

107 4711 700

sortRID sortB

Page 12: Efficient Bulk Deletes in Relational Databases

12

Reuse of traditional techniques

• Join operator bulk delete operator:

Delete Set D Index I / Relation R

Delete Set D ‘ Index I‘ / Relation R‘

• generating bulk delete evaluation plans using exisiting

optimizers • method • order

predicate• primary

• different join techniques, but one argument in place

Page 13: Efficient Bulk Deletes in Relational Databases

13

Example

Tabelle R

Index A Index B

Index C

RID A B C ...

• Delete from R where R.A in D(A)

• Schema:

Page 14: Efficient Bulk Deletes in Relational Databases

14

New Set-Oriented Vertical Approach

RID A BIndex on B

Delete from R where R.A in (4711, 5614, 3817, 2918, 5917)

sortAIndex on A

107 4711 700

sortRID sortB

Page 15: Efficient Bulk Deletes in Relational Databases

15

Query Evaluation Plans:Retrieve Index Keys B from R

D(A)

sortA

sortRID

sortB

mergeA

mergeRID

mergeB,RID

IA(A,RID)

IB(B,RID)

R(RID,A,B,C,...)

[B,RID]

[RID]

Page 16: Efficient Bulk Deletes in Relational Databases

16

Query Evaluation Plans:Retrieve Index Keys B, C from R

D(A)

sortA

sortRID

sortB

mergeB,RID

sortC

mergeC,RID

mergeRID

IA(A,RID)

IB(B,RID)IC(C,RID)

R(RID,A,B,C,...)mergeA

[B,RID][C,RID]

Page 17: Efficient Bulk Deletes in Relational Databases

17

Query Evaluation Plans:RID-Join using range partitioning

D(A)

sortA

sortRID

mergeA

IA(A,RID)

R(RID,A,B,C,...)

buildprobe

hashRID

mergeRID

buildprobe

hashRID

build

probe

hashRID

Range partitioning on B using DB statistics

IB(B,RID)

[B,RID]

[RID]

Page 18: Efficient Bulk Deletes in Relational Databases

18

Query Evaluation Plans:RID-Join on Indices

D(A)

sortA

sortRID

mergeA

IA(A,RID)

IB(B,RID)

R(RID,A,B,C,...)

buildprobe

hashRID

Build Relationhas to fit

in memory

Join and update in one pass

mergeRID

[RID][RID]

Page 19: Efficient Bulk Deletes in Relational Databases

19

Concurrency Control

• Take table R and all indices off-line (avoid lock escalation)

• Recovery: roll forward to save work already done

• Remaining indices can be processed concurrently using sidefiles/direct propagation (C.Mohan and I.Narang. Algorithms for creating indexes for very large tables without quiescing updates. ACM SIGMOD 1992.)

• Bring R and indices with unique constraints on-line

• Process R and all indices with unique constraints

• Checkpoints: save high water mark

Page 20: Efficient Bulk Deletes in Relational Databases

20

Reorganisation

• C.Zou and B.Salzberg. On-line reorganisation of sparsely- populated B+- Trees. ACM SIGMOD 1996.

• light version:

row movement• Problem: holes

Page 21: Efficient Bulk Deletes in Relational Databases

21

Benchmark Environment

• Prototype database

• B+-Trees based on Jan Janninks implementation

• Table R: 1.000.000 records (500 MB)

• Delete set D

• One index IA on attribute A

• Statement:

delete from R where R.A in (select D.A from D)

• sort merge evaluation plan used

Page 22: Efficient Bulk Deletes in Relational Databases

22

Tests

• Vary number of deleted records

• Vary number of indices

• Vary height of indices

• Vary size of memory

• Clustered table

Diagrams:• not sorted/trad:

• sorted/trad

• not sorted/bulk

Delete set not sorted, traditional approach

Delete set sorted, traditional approach

Delete set not sorted, vertical approach

Page 23: Efficient Bulk Deletes in Relational Databases

23

Vary Number of Deleted Records

0

20

40

60

80

100

120

140

5 10 15 20

Deleted tuples (% of tuples)

Tim

e (

min

)

not sorted trad.

sorted trad.

not sorted bulk

Page 24: Efficient Bulk Deletes in Relational Databases

24

Vary Number of Indices

0

50

100

150

200

250

1 2 3

Number of indices (15% deleted)

Tim

e (m

in) not sorted/trad.

sorted/trad.

not sorted/bulk

drop/create

Page 25: Efficient Bulk Deletes in Relational Databases

25

Vary Height of Indices

index height 3(min)

index height 4(min)

not sorted/bulk 25 27

sorted/trad 65 81

not sorted/trad 102 136

15% deleted

Page 26: Efficient Bulk Deletes in Relational Databases

26

Vary Size of Memory

0

20

40

60

80

100

120

140

2 6 10

Memory (MB), 15% deleted

Tim

e (

min

)

sorted/trad.

not sorted/trad.

not sorted/bulk

Page 27: Efficient Bulk Deletes in Relational Databases

27

Clustered Table

0

20

40

60

80

100

120

140

160

5 10 15 20

Percentage of deleted tuples

Tim

e (

min

) sorted/trad/clust

sorted/trad/unclust

bulk/clust

not sorted/trad/clust

Page 28: Efficient Bulk Deletes in Relational Databases

28

Conclusion

• New set-oriented vertical approach

• Implementation using evaluation plans

• bulk delete operator

• retrieve index keys from R

• RID join using hashing

• Concurrency control and reorganisation

• Benchmark results new approach outperforms trad. approach

• Future Work: generalize the approach to hash tables, R- trees, grid files, bitmap indices