Concurrency Control Lecture # 19 Database Systems Andy Pavlo AP - - PowerPoint PPT Presentation

concurrency control
SMART_READER_LITE
LIVE PREVIEW

Concurrency Control Lecture # 19 Database Systems Andy Pavlo AP - - PowerPoint PPT Presentation

Multi-Version Concurrency Control Lecture # 19 Database Systems Andy Pavlo AP AP Computer Science 15-445/15-645 Carnegie Mellon Univ. Fall 2018 2 ADM IN ISTRIVIA Homework #4 : Monday Nov 12 th @ 11:59pm Project #3 : Monday Nov 19 th @


slide-1
SLIDE 1

Database Systems 15-445/15-645 Fall 2018 Andy Pavlo Computer Science Carnegie Mellon Univ.

AP AP

Lecture # 19

Multi-Version Concurrency Control

slide-2
SLIDE 2

CMU 15-445/645 (Fall 2018)

ADM IN ISTRIVIA

Homework #4: Monday Nov 12th @ 11:59pm Project #3: Monday Nov 19th @ 11:59am

2

slide-3
SLIDE 3

CMU 15-445/645 (Fall 2018)

M ULTI- VERSIO N CO N CURREN CY CO N TRO L

The DBMS maintains multiple physical versions

  • f a single logical object in the database:

→ When a txn writes to an object, the DBMS creates a new version of that object. → When a txn reads an object, it reads the newest version that existed when the txn started.

3

slide-4
SLIDE 4

CMU 15-445/645 (Fall 2018)

M VCC H ISTO RY

Protocol was first proposed in 1978 MIT PhD dissertation. First implementations was Rdb/VMS and InterBase at DEC in early 1980s.

→ Both were by Jim Starkey, co-founder of NuoDB. → DEC Rdb/VMS is now "Oracle Rdb" → InterBase was open-sourced as Firebird.

4

slide-5
SLIDE 5

CMU 15-445/645 (Fall 2018)

M ULTI- VERSIO N CO N CURREN CY CO N TRO L

Writers don't block readers. Readers don't block writers. Read-only txns can read a consistent snapshot without acquiring locks.

→ Use timestamps to determine visibility.

Easily support time-travel queries.

5

slide-6
SLIDE 6

CMU 15-445/645 (Fall 2018)

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

Database

slide-7
SLIDE 7

CMU 15-445/645 (Fall 2018)

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

Database

slide-8
SLIDE 8

CMU 15-445/645 (Fall 2018)

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

TS(T1)=1 TS(T2)=2

Database

slide-9
SLIDE 9

CMU 15-445/645 (Fall 2018)

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

TS(T1)=1 TS(T2)=2

Database

slide-10
SLIDE 10

CMU 15-445/645 (Fall 2018)

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

  • 2

456 A1

TS(T1)=1 TS(T2)=2

Database

T2 creates version A1 and sets A0 End-TS.

slide-11
SLIDE 11

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active T2 2 Active

Txn Status Table

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

2

  • 2

456 A1

TS(T1)=1 TS(T2)=2

Database

T2 creates version A1 and sets A0 End-TS.

slide-12
SLIDE 12

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active T2 2 Active

Txn Status Table

Version Value Begin End A0 123

  • TIM E

Schedule

T1 T2

M VCC EXAM PLE # 1

6

BEGIN R(A) R(A) COMMIT BEGIN W(A) COMMIT

2

T1 reads version A0.

  • 2

456 A1

TS(T1)=1 TS(T2)=2

Database

slide-13
SLIDE 13

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

TS(T1)=1 TS(T2)=2

Database

slide-14
SLIDE 14

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

TS(T1)=1 TS(T2)=2

Database

slide-15
SLIDE 15

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

slide-16
SLIDE 16

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

slide-17
SLIDE 17

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

Active 2 T2

T2 reads version A0 because T1 has not committed yet.

slide-18
SLIDE 18

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

Active 2 T2

T2 has to stall until T1 commits.

slide-19
SLIDE 19

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

T1 reads version A1 that it wrote earlier.

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

Active 2 T2

slide-20
SLIDE 20

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

  • 1

456 A1

TS(T1)=1 TS(T2)=2

Database

Active 2 T2 Committed 1 T1

slide-21
SLIDE 21

CMU 15-445/645 (Fall 2018)

TxnId Timestamp Status T1 1 Active

Txn Status Table

Version Value Begin End A0 123

TIM E

Schedule

T1 T2

M VCC EXAM PLE # 2

7

BEGIN R(A) W(A) R(A) COMMIT BEGIN R(A) W(A) COMMIT

1

  • 1

456 A1 2

  • 2

789 A2

TS(T1)=1 TS(T2)=2

Database

Active 2 T2 Committed 1 T1

Now T2 can create the new version.

slide-22
SLIDE 22

CMU 15-445/645 (Fall 2018)

M ULTI- VERSIO N CO N CURREN CY CO N TRO L

MVCC is more than just a concurrency control

  • protocol. It completely affects how the DBMS

manages transactions and the database.

8

slide-23
SLIDE 23

CMU 15-445/645 (Fall 2018)

M VCC DESIGN DECISIO N S

Concurrency Control Protocol Version Storage Garbage Collection Index Management

9

slide-24
SLIDE 24

CMU 15-445/645 (Fall 2018)

CO N CURREN CY CO N TRO L PROTO CO L

Approach #1: Timestamp Ordering

→ Assign txns timestamps that determine serial order.

Approach #2: Optimistic Concurrency Control

→ Three-phase protocol from last class. → Use private workspace for new versions.

Approach #3: Two-Phase Locking

→ Txns acquire appropriate lock on physical version before they can read/write a logical tuple.

10

slide-25
SLIDE 25

CMU 15-445/645 (Fall 2018)

VERSIO N STO RAGE

The DBMS uses the tuples’ pointer field to create a version chain per logical tuple.

→ This allows the DBMS to find the version that is visible to a particular txn at runtime. → Indexes always point to the “head” of the chain.

Different storage schemes determine where/what to store for each version.

11

slide-26
SLIDE 26

CMU 15-445/645 (Fall 2018)

VERSIO N STO RAGE

Approach #1: Append-Only Storage

→ New versions are appended to the same table space.

Approach #2: Time-Travel Storage

→ Old versions are copied to separate table space.

Approach #3: Delta Storage

→ The original values of the modified attributes are copied into a separate delta record space.

12

slide-27
SLIDE 27

CMU 15-445/645 (Fall 2018)

APPEN D- O N LY STO RAGE

All of the physical versions of a logical tuple are stored in the same table

  • space. The versions are mixed

together. On every update, append a new version of the tuple into an empty space in the table.

13

Main Table

VERSION VALUE

A0 $111

POINTER

A1 $222 Ø B1 $10 Ø

slide-28
SLIDE 28

CMU 15-445/645 (Fall 2018)

APPEN D- O N LY STO RAGE

All of the physical versions of a logical tuple are stored in the same table

  • space. The versions are mixed

together. On every update, append a new version of the tuple into an empty space in the table.

13

Main Table

VERSION VALUE

A0 $111

POINTER

A1 $222 Ø A2 $333 Ø B1 $10 Ø

slide-29
SLIDE 29

CMU 15-445/645 (Fall 2018)

APPEN D- O N LY STO RAGE

All of the physical versions of a logical tuple are stored in the same table

  • space. The versions are mixed

together. On every update, append a new version of the tuple into an empty space in the table.

13

Main Table

VERSION VALUE

A0 $111

POINTER

A1 $222 Ø A2 $333 Ø B1 $10 Ø

slide-30
SLIDE 30

CMU 15-445/645 (Fall 2018)

APPEN D- O N LY STO RAGE

All of the physical versions of a logical tuple are stored in the same table

  • space. The versions are mixed

together. On every update, append a new version of the tuple into an empty space in the table.

13

Main Table

VERSION VALUE

A0 $111

POINTER

A1 $222 A2 $333 Ø B1 $10 Ø

slide-31
SLIDE 31

CMU 15-445/645 (Fall 2018)

VERSIO N CH AIN O RDERIN G

Approach #1: Oldest-to-Newest (O2N)

→ Just append new version to end of the chain. → Have to traverse chain on look-ups.

Approach #2: Newest-to-Oldest (N2O)

→ Have to update index pointers for every new version. → Don’t have to traverse chain on look ups.

14

slide-32
SLIDE 32

CMU 15-445/645 (Fall 2018)

TIM E- TRAVEL STO RAGE

15

On every update, copy the current version to the time- travel table. Update pointers. Main Table

VERSION VALUE

A2 $222

POINTER

B1 $10

Time-Travel Table

VERSION VALUE

A1 $111

POINTER

Ø

slide-33
SLIDE 33

CMU 15-445/645 (Fall 2018)

TIM E- TRAVEL STO RAGE

15

On every update, copy the current version to the time- travel table. Update pointers. Main Table

VERSION VALUE

A2 $222

POINTER

B1 $10

Time-Travel Table

VERSION VALUE

A1 $111

POINTER

A2 $222 Ø

slide-34
SLIDE 34

CMU 15-445/645 (Fall 2018)

TIM E- TRAVEL STO RAGE

15

On every update, copy the current version to the time- travel table. Update pointers. Overwrite master version in the main table. Update pointers. Main Table

VERSION VALUE

A2 $222

POINTER

B1 $10

Time-Travel Table

VERSION VALUE

A1 $111

POINTER

A2 $222 Ø

slide-35
SLIDE 35

CMU 15-445/645 (Fall 2018)

TIM E- TRAVEL STO RAGE

15

On every update, copy the current version to the time- travel table. Update pointers. Overwrite master version in the main table. Update pointers. Main Table

VERSION VALUE

A2 $222

POINTER

B1 $10 A3 $333

Time-Travel Table

VERSION VALUE

A1 $111

POINTER

A2 $222 Ø

slide-36
SLIDE 36

CMU 15-445/645 (Fall 2018)

TIM E- TRAVEL STO RAGE

15

On every update, copy the current version to the time- travel table. Update pointers. Overwrite master version in the main table. Update pointers. Main Table

VERSION VALUE

A2 $222

POINTER

B1 $10 A3 $333

Time-Travel Table

VERSION VALUE

A1 $111

POINTER

A2 $222 Ø

slide-37
SLIDE 37

CMU 15-445/645 (Fall 2018)

DELTA STO RAGE

16

On every update, copy only the values that were modified to the delta storage and overwrite the master version. Main Table

VERSION VALUE

A1 $111

POINTER

B1 $10

Delta Storage Segment

slide-38
SLIDE 38

CMU 15-445/645 (Fall 2018)

DELTA STO RAGE

16

On every update, copy only the values that were modified to the delta storage and overwrite the master version. Main Table

VERSION VALUE

A1 $111

POINTER

B1 $10

Delta Storage Segment

DELTA POINTER

A1 (VALUE→$111) Ø A2 $222

slide-39
SLIDE 39

CMU 15-445/645 (Fall 2018)

DELTA STO RAGE

16

On every update, copy only the values that were modified to the delta storage and overwrite the master version. Main Table

VERSION VALUE

A1 $111

POINTER

B1 $10

Delta Storage Segment

DELTA POINTER

A2 (VALUE→$222) A1 (VALUE→$111) Ø A2 $222

slide-40
SLIDE 40

CMU 15-445/645 (Fall 2018)

DELTA STO RAGE

16

On every update, copy only the values that were modified to the delta storage and overwrite the master version. Txns can recreate old versions by applying the delta in reverse order. Main Table

VERSION VALUE

A1 $111

POINTER

B1 $10

Delta Storage Segment

DELTA POINTER

A2 (VALUE→$222) A1 (VALUE→$111) Ø A2 $222 A3 $333

slide-41
SLIDE 41

CMU 15-445/645 (Fall 2018)

GARBAGE CO LLECTIO N

The DBMS needs to remove reclaimable physical versions from the database over time.

→ No active txn in the DBMS can “see” that version (SI). → The version was created by an aborted txn.

Two additional design decisions:

→ How to look for expired versions? → How to decide when it is safe to reclaim memory?

17

slide-42
SLIDE 42

CMU 15-445/645 (Fall 2018)

GARBAGE CO LLECTIO N

Approach #1: Tuple-level

→ Find old versions by examining tuples directly. → Background Vacuuming vs. Cooperative Cleaning

Approach #2: Transaction-level

→ Txns keep track of their old versions so the DBMS does not have to scan tuples to determine visibility.

18

slide-43
SLIDE 43

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

slide-44
SLIDE 44

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

slide-45
SLIDE 45

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

slide-46
SLIDE 46

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

slide-47
SLIDE 47

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

Dirty Page BitMap

slide-48
SLIDE 48

CMU 15-445/645 (Fall 2018)

VERSION BEGIN END

A100 1 9 B100 1 9 B101 10 20

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Vacuum

Dirty Page BitMap

slide-49
SLIDE 49

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

A0 A1

GET(A)

slide-50
SLIDE 50

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

A0 A1

GET(A)

slide-51
SLIDE 51

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

A0 A1

X

GET(A)

slide-52
SLIDE 52

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

A0 A1

X X

GET(A)

slide-53
SLIDE 53

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

GET(A)

slide-54
SLIDE 54

CMU 15-445/645 (Fall 2018)

TUPLE- LEVEL GC

19

Background Vacuuming: Separate thread(s) periodically scan the table and look for reclaimable versions. Works with any storage.

Thread #1

TS(T1)=12

Thread #2

TS(T2)=25 Cooperative Cleaning: Worker threads identify reclaimable versions as they traverse version chain. Only works with O2N.

A2 A3 B0 B1 B2 B3

INDEX

GET(A)

slide-55
SLIDE 55

CMU 15-445/645 (Fall 2018)

TRAN SACTIO N - LEVEL GC

Each txn keeps track of its read/write set. The DBMS determines when all versions created by a finished txn are no longer visible.

20

slide-56
SLIDE 56

CMU 15-445/645 (Fall 2018)

IN DEX M AN AGEM EN T

Primary key indexes point to version chain head.

→ How often the DBMS has to update the pkey index depends on whether the system creates new versions when a tuple is updated. → If a txn updates a tuple’s pkey attribute(s), then this is treated as an DELETE followed by an INSERT.

Secondary indexes are more complicated…

21

slide-57
SLIDE 57

CMU 15-445/645 (Fall 2018)

IN DEX M AN AGEM EN T

Primary key indexes point to version chain head.

→ How often the DBMS has to update the pkey index depends on whether the system creates new versions when a tuple is updated. → If a txn updates a tuple’s pkey attribute(s), then this is treated as an DELETE followed by an INSERT.

Secondary indexes are more complicated…

21

slide-58
SLIDE 58

CMU 15-445/645 (Fall 2018)

SECO N DARY IN DEXES

Approach #1: Logical Pointers

→ Use a fixed identifier per tuple that does not change. → Requires an extra indirection layer. → Primary Key vs. Tuple Id

Approach #2: Physical Pointers

→ Use the physical address to the version chain head.

22

slide-59
SLIDE 59

CMU 15-445/645 (Fall 2018)

IN DEX PO IN TERS

23

PRIMARY INDEX SECONDARY INDEX

A100 A99 A98 A97

GET(A)

Append-Only Newest-to-Oldest Physical Address

slide-60
SLIDE 60

CMU 15-445/645 (Fall 2018)

IN DEX PO IN TERS

23

PRIMARY INDEX SECONDARY INDEX

A100 A99 A98 A97

Append-Only Newest-to-Oldest

GET(A)

Physical Address

slide-61
SLIDE 61

CMU 15-445/645 (Fall 2018)

SECONDARY INDEX SECONDARY INDEX SECONDARY INDEX

IN DEX PO IN TERS

23

PRIMARY INDEX SECONDARY INDEX

A100 A99 A98 A97

Append-Only Newest-to-Oldest

GET(A)

slide-62
SLIDE 62

CMU 15-445/645 (Fall 2018)

IN DEX PO IN TERS

23

PRIMARY INDEX SECONDARY INDEX

A100 A99 A98 A97

Append-Only Newest-to-Oldest

GET(A)

Physical Address Primary Key

slide-63
SLIDE 63

CMU 15-445/645 (Fall 2018)

IN DEX PO IN TERS

23

PRIMARY INDEX SECONDARY INDEX

A100 A99 A98 A97

Append-Only Newest-to-Oldest

GET(A)

TupleId→Address

TupleId Physical Address

slide-64
SLIDE 64

CMU 15-445/645 (Fall 2018)

M VCC IM PLEM EN TATIO N S

24

Protocol Version Storage Garbage Collection Indexes

Oracle

MV2PL Delta Vacuum Logical

Postgres

MV-2PL/MV-TO Append-Only Vacuum Physical

MySQL-InnoDB

MV-2PL Delta Vacuum Logical

HYRISE

MV-OCC Append-Only – Physical

Hekaton

MV-OCC Append-Only Cooperative Physical

MemSQL

MV-OCC Append-Only Vacuum Physical

SAP HANA

MV-2PL Time-travel Hybrid Logical

NuoDB

MV-2PL Append-Only Vacuum Logical

HyPer

MV-OCC Delta Txn-level Logical

slide-65
SLIDE 65

CMU 15-445/645 (Fall 2018)

CO N CLUSIO N

MVCC is the widely used scheme in DBMSs. Even systems that do not support multi-statement txns (e.g., NoSQL) use it.

25

slide-66
SLIDE 66

CMU 15-445/645 (Fall 2018)

N EXT CLASS

Logging & Recovery

26