20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun...

99
Intro to Database Systems 15-445/15-645 Fall 2020 Andy Pavlo Computer Science Carnegie Mellon University AP 20 Database Logging

Transcript of 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun...

Page 1: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

Intro to Database Systems

15-445/15-645

Fall 2020

Andy PavloComputer Science Carnegie Mellon UniversityAP

20 Database Logging

Page 2: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

ADMINISTRIV IA

Project #3 is due Sun Nov 22nd @ 11:59pm.

Project #4 will be released this week.

Homework #5 will be released next week.

2

Page 3: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

UPCOMING DATABASE TALKS

FaunaDB Serverless DBMS→ Monday Nov 16th @ 5pm ET

Confluent ksqlDB (Kafka)→ Monday Nov 23rd @ 5pm ET

Microsoft SQL Server Optimizer→ Monday Nov 30th @ 5pm ET

3

Page 4: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TIM

E

Schedule

MOTIVATION

4

BEGINR(A)W(A)⋮COMMIT

Buffer Pool

A=1

Pag

e

T1

Page 5: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TIM

E

Schedule

MOTIVATION

4

BEGINR(A)W(A)⋮COMMIT

Buffer Pool

A=1

Pag

e

A=1

T1

Page 6: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TIM

E

Schedule

MOTIVATION

4

BEGINR(A)W(A)⋮COMMIT

Buffer Pool

A=1

Pag

e

A=1A=2

T1

Page 7: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TIM

E

Schedule

MOTIVATION

4

BEGINR(A)W(A)⋮COMMIT

Buffer Pool

A=1

Pag

e

A=1A=2

T1

Page 8: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TIM

E

Schedule

MOTIVATION

4

BEGINR(A)W(A)⋮COMMIT

Buffer Pool

A=1

Pag

e

T1

Page 9: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CRASH RECOVERY

Recovery algorithms are techniques to ensure database consistency, transaction atomicity, and durability despite failures.

Recovery algorithms have two parts:→ Actions during normal txn processing to ensure that the

DBMS can recover from a failure.→ Actions after a failure to recover the database to a state

that ensures atomicity, consistency, and durability.

5

Today

Page 10: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Failure Classification

Buffer Pool Policies

Shadow Paging

Write-Ahead Log

Logging Schemes

Checkpoints

6

Page 11: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CRASH RECOVERY

DBMS is divided into different components based on the underlying storage device.→ Volatile vs. Non-Volatile

We must also classify the different types of failures that the DBMS needs to handle.

7

Page 12: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

FAILURE CL ASSIFICATION

Type #1 – Transaction Failures

Type #2 – System Failures

Type #3 – Storage Media Failures

9

Page 13: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

TRANSACTION FAILURES

Logical Errors:→ Transaction cannot complete due to some internal error

condition (e.g., integrity constraint violation).

Internal State Errors:→ DBMS must terminate an active transaction due to an

error condition (e.g., deadlock).

10

Page 14: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SYSTEM FAILURES

Software Failure:→ Problem with the OS or DBMS implementation (e.g.,

uncaught divide-by-zero exception).

Hardware Failure:→ The computer hosting the DBMS crashes (e.g., power

plug gets pulled).→ Fail-stop Assumption: Non-volatile storage contents are

assumed to not be corrupted by system crash.

11

Page 15: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

STORAGE MEDIA FAILURE

Non-Repairable Hardware Failure:→ A head crash or similar disk failure destroys all or part of

non-volatile storage.→ Destruction is assumed to be detectable (e.g., disk

controller use checksums to detect failures).

No DBMS can recover from this! Database must be restored from archived version.

12

Page 16: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

OBSERVATION

The primary storage location of the database is on non-volatile storage, but this is much slower than volatile storage.

Use volatile memory for faster access:→ First copy target record into memory.→ Perform the writes in memory.→ Write dirty records back to disk.

13

Page 17: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

OBSERVATION

The DBMS needs to ensure the following guarantees:→ The changes for any txn are durable once the DBMS has

told somebody that it committed.→ No partial changes are durable if the txn aborted.

14

Page 18: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

UNDO VS. REDO

Undo: The process of removing the effects of an incomplete or aborted txn.

Redo: The process of re-instating the effects of a committed txn for durability.

How the DBMS supports this functionality depends on how it manages the buffer pool…

15

Page 19: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

Page 20: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 21: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 22: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 23: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Do we force T2’s changes to be written to disk?

Page 24: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Do we force T2’s changes to be written to disk?Is T1 allowed to overwrite A even

though it has not committed?

Page 25: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Do we force T2’s changes to be written to disk?Is T1 allowed to overwrite A even

though it has not committed?

B=8A=3

Page 26: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

BUFFER POOL

16

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

What happens when we need to rollback T1?

B=8A=3

Page 27: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

STEAL POLICY

Whether the DBMS allows an uncommitted txn to overwrite the most recent committed value of an object in non-volatile storage.

STEAL: Is allowed.

NO-STEAL: Is not allowed.

17

Page 28: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

FORCE POLICY

Whether the DBMS requires that all updates made by a txn are reflected on non-volatile storage before the txn can commit.

FORCE: Is required.

NO-FORCE: Is not required.

18

Page 29: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

Page 30: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 31: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 32: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Page 33: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

FORCE means that T2 changes must be written to disk at this point.

Page 34: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

FORCE means that T2 changes must be written to disk at this point.

NO-STEAL means that T1 changes cannot be written to disk yet.

A=1 B=8 C=7

Copy

Page 35: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

FORCE means that T2 changes must be written to disk at this point.

NO-STEAL means that T1 changes cannot be written to disk yet.

B=8

A=1 B=8 C=7

Copy

Page 36: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

T1 T2

NO-STEAL + FORCE

19

A=1 B=9 C=7

A=1 B=9 C=7B=8

BEGINR(A)W(A)

⋮ABORT

BEGINR(B)W(B)COMMIT

A=3

Now it’s trivial to rollback T1

B=8

Page 37: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

NO-STEAL + FORCE

This approach is the easiest to implement:→ Never have to undo changes of an aborted txn because

the changes were not written to disk.→ Never have to redo changes of a committed txn because

all the changes are guaranteed to be written to disk at commit time (assuming atomic hardware writes).

Previous example cannot support write sets that exceed the amount of physical memory available.

20

Page 38: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SHADOW PAGING

Maintain two separate copies of the database:→ Master: Contains only changes from committed txns.→ Shadow: Temporary database with changes made from

uncommitted txns.

Txns only make updates in the shadow copy.

When a txn commits, atomically switch the shadow to become the new master.

Buffer Pool Policy: NO-STEAL + FORCE

21

Page 39: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

23

MasterPage Table

1234

DB Root

Database Root

Page 40: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SHADOW PAGING

To install the updates, overwrite the root so it points to the shadow, thereby swapping the master and shadow:→ Before overwriting the root, none of the txn's updates are

part of the disk-resident database → After overwriting the root, all the txn's updates are part

of the disk-resident database.

24

Source: The Great Phil Bernstein

Page 41: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

Txn T1

Database Root

Page 42: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Database Root

Page 43: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database Root

Page 44: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Update

Database Root

Page 45: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database Root

Page 46: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database Root

Page 47: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

COMMIT

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database Root

Page 48: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

COMMIT

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database RootUpdate

Page 49: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

COMMIT

DiskMemory

SHADOW PAGING EXAMPLE

25

MasterPage Table

1234

DB Root

ShadowPage Table

1234

Txn T1

Read-only txns access the current master.

Active modifying txnupdates shadow pages.

Database RootUpdate

Page 50: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

COMMIT

DiskMemory

SHADOW PAGING EXAMPLE

25

DB Root

ShadowPage Table

1234

Txn T1

Database RootUpdate

Page 51: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SHADOW PAGING UNDO/REDO

Supporting rollbacks and recovery is easy.

Undo: Remove the shadow pages. Leave the master and the DB root pointer alone.

Redo: Not needed at all.

26

Page 52: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SHADOW PAGING DISADVANTAGES

Copying the entire page table is expensive:→ Use a page table structured like a B+tree.→ No need to copy entire tree, only need to copy paths in

the tree that lead to updated leaf nodes.

Commit overhead is high:→ Flush every updated page, page table, and root.→ Data gets fragmented.→ Need garbage collection.→ Only supports one writer txn at a time or txns in a batch.

27

Page 53: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 1 Page 2 Page 3

Page 54: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 1 Page 2 Page 3Page 2'

Page 55: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 1 Page 2 Page 3Page 2'

Page 56: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 1 Page 2 Page 3Page 2'

Page 3

Page 3'

Page 57: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 1 Page 2 Page 3Page 2'

Page 3

Page 3'

Page 2'

Page 58: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 3

Page 2'

Page 59: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 2 Page 3

Page 3

Page 2'

Page 60: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 2 Page 3

Page 3

Page 2'

Page 61: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

SQLITE (PRE-2 010)

When a txn modifies a page, the DBMS copies the original page to a separate journal file before overwriting master version.

After restarting, if a journal file exists, then the DBMS restores it to undo changes from uncommitted txns.

28

Memory

Disk

Page 2Page 2

Page 1

Page 3

Page 5

Page 4

Page 6

Journal File

Page 2 Page 3

Page 3

Page 62: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

OBSERVATION

Shadowing page requires the DBMS to perform writes to random non-contiguous pages on disk.

We need a way for the DBMS convert random writes into sequential writes.

29

Page 63: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WRITE-AHEAD LOG

Maintain a log file separate from data files that contains the changes that txns make to database.→ Assume that the log is on stable storage.→ Log contains enough information to perform the

necessary undo and redo actions to restore the database.

DBMS must write to disk the log file records that correspond to changes made to a database object before it can flush that object to disk.

Buffer Pool Policy: STEAL + NO-FORCE

30

Page 64: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL PROTOCOL

The DBMS stages all a txn's log records in volatile storage (usually backed by buffer pool).

All log records pertaining to an updated page are written to non-volatile storage before the page itself is over-written in non-volatile storage.

A txn is not considered committed until all its log records have been written to stable storage.

31

Page 65: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL PROTOCOL

Write a <BEGIN> record to the log for each txn to mark its starting point.

When a txn finishes, the DBMS will:→ Write a <COMMIT> record on the log→ Make sure that all log records are flushed before it

returns an acknowledgement to application.

32

Page 66: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL PROTOCOL

Each log entry contains information about the change to a single object:→ Transaction Id→ Object Id→ Before Value (UNDO)→ After Value (REDO)

33

Page 67: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN>

A=1 B=5 C=7

Page 68: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN><T1, A, 1, 8>

A=1 B=5 C=7

1

Page 69: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7A=8

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN><T1, A, 1, 8>

A=1 B=5 C=7

1

2

Page 70: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7A=8

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9>

B=9

A=1 B=5 C=7

Page 71: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7A=8

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T1 COMMIT>

Txn result is now safe to return to application.

B=9

A=1 B=5 C=7

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T1 COMMIT>

Page 72: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

A=1 B=5 C=7A=8

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T1 COMMIT>

Txn result is now safe to return to application.

B=9

A=1 B=5 C=7

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T1 COMMIT>

Page 73: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

Buffer Pool

TIM

E

Schedule

BEGINW(A)W(B)⋮

COMMIT

T1WAL Buffer

WAL EXAMPLE

34

Txn result is now safe to return to application.

A=1 B=5 C=7

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T1 COMMIT>

Everything we need to restore T1 is in the log!

Page 74: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL IMPLEMENTATION

When should the DBMS write log entries to disk?→ When the transaction commits.→ Can use group commit to batch multiple log flushes

together to amortize overhead.

35

Page 75: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

Page 76: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

Page 77: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

Page 78: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

Page 79: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

Flush the buffer when it is full.

Page 80: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

<T2, D, 3, 4>

Page 81: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

<T2, D, 3, 4>

Page 82: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

<T2, D, 3, 4>

Flush after an elapsed amount of time.

Page 83: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

<T2, D, 3, 4>

Flush after an elapsed amount of time.

Page 84: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL Buffers

WAL GROUP COMMIT

36

<T1 BEGIN><T1, A, 1, 8><T1, B, 5, 9><T2 BEGIN><T2, C, 1, 2>

TIM

E

Schedule

T1 T2BEGINW(A)W(B)

COMMIT

BEGINW(C)W(D)

COMMIT

<T2, D, 3, 4>

<T2, D, 3, 4>

Flush after an elapsed amount of time.

Page 85: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL IMPLEMENTATION

When should the DBMS write log entries to disk?→ When the transaction commits.→ Can use group commit to batch multiple log flushes

together to amortize overhead.

When should the DBMS write dirty records to disk?→ Every time the txn executes an update?→ Once when the txn commits?

37

Page 86: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

BUFFER POOL POLICIES

Almost every DBMS uses NO-FORCE + STEAL

40

NO-STEAL STEAL

NO-FORCE Fastest

FORCE Slowest

Runtime Performance

NO-STEAL STEAL

NO-FORCE Slowest

FORCE Fastest

Recovery Performance

Page 87: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

BUFFER POOL POLICIES

Almost every DBMS uses NO-FORCE + STEAL

40

NO-STEAL STEAL

NO-FORCE Fastest

FORCE Slowest

Runtime Performance

NO-STEAL STEAL

NO-FORCE Slowest

FORCE Fastest

Recovery PerformanceUndo + Redo

No Undo + No Redo

Page 88: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

LOGGING SCHEMES

Physical Logging→ Record the changes made to a specific location in the

database.→ Example: git diff

Logical Logging→ Record the high-level operations executed by txns.→ Not necessarily restricted to single page.→ Example: The UPDATE, DELETE, and INSERT queries

invoked by a txn.

41

Page 89: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

PHYSICAL VS. LOGICAL LOGGING

Logical logging requires less data written in each log record than physical logging.

Difficult to implement recovery with logical logging if you have concurrent txns.→ Hard to determine which parts of the database may have

been modified by a query before crash.→ Also takes longer to recover because you must re-execute

every txn all over again.

42

Page 90: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

PHYSIOLOGICAL LOGGING

Hybrid approach where log records target a single page but do not specify organization of the page.→ Identify tuples based on their slot number.→ Allows DBMS to reorganize pages after a log record has

been written to disk.

This is the most popular approach.

43

Page 91: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

LOGGING SCHEMES

44

UPDATE foo SET val = XYZ WHERE id = 1;

Physical

<T1,Table=X,Page=99,Offset=4,Before=ABC,After=XYZ><T1,Index=X_PKEY,Page=45,Offset=9,Key=(1,Record1)>

Logical

<T1,Query="UPDATE foo

SET val=XYZWHERE id=1">

Physiological

<T1,Table=X,Page=99,Slot=1,Before=ABC,After=XYZ>

<T1,Index=X_PKEY,IndexPage=45,Key=(1,Record1)>

Page 92: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CHECKPOINTS

The WAL will grow forever.

After a crash, the DBMS must replay the entire log, which will take a long time.

The DBMS periodically takes a checkpoint where it flushes all buffers out to disk.

45

Page 93: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CHECKPOINTS

Output onto stable storage all log records currently residing in main memory.

Output to the disk all modified blocks.

Write a <CHECKPOINT> entry to the log and flush to stable storage.

46

Page 94: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL

<T1 BEGIN><T1, A, 1, 2><T1 COMMIT><T2 BEGIN><T2, A, 2, 3><T3 BEGIN><CHECKPOINT><T2 COMMIT><T3, A, 3, 4>

⋮CRASH!

CHECKPOINTS

Any txn that committed before the checkpoint is ignored (T1).

47

Page 95: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

WAL

<T1 BEGIN><T1, A, 1, 2><T1 COMMIT><T2 BEGIN><T2, A, 2, 3><T3 BEGIN><CHECKPOINT><T2 COMMIT><T3, A, 3, 4>

⋮CRASH!

CHECKPOINTS

Any txn that committed before the checkpoint is ignored (T1).

T2 + T3 did not commit before the last checkpoint.→ Need to redo T2 because it committed after

checkpoint.→ Need to undo T3 because it did not commit

before the crash.

47

Page 96: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CHECKPOINTS CHALLENGES

The DBNS must stall txns when it takes a checkpoint to ensure a consistent snapshot.

Scanning the log to find uncommitted txns can take a long time.

Not obvious how often the DBMS should take a checkpoint…

48

Page 97: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CHECKPOINTS FREQUENCY

Checkpointing too often causes the runtime performance to degrade.→ System spends too much time flushing buffers.

But waiting a long time is just as bad:→ The checkpoint will be large and slow.→ Makes recovery time much longer.

49

Page 98: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

CONCLUSION

Write-Ahead Logging is (almost) always the best approach to handle loss of volatile storage.

Use incremental updates (STEAL + NO-FORCE) with checkpoints.

On Recovery: undo uncommitted txns + redocommitted txns.

50

Page 99: 20 Database Logging...20 Database Logging 15-445/645 (Fall 2020) ADMINISTRIVIA Project #3 is due Sun Nov 22nd @ 11:59pm. Project #4 will be released this week. Homework #5 will be

15-445/645 (Fall 2020)

NEXT CL ASS

Better Checkpoint Protocols.

Recovery with ARIES.

51