Recovery - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

Recovery

Description:

Would like data to be 'accurate' or 'correct' at all times. EMP. Name ... Undo idempotent. 13/30/2005. Yan Huang - CSCI5330 Database Implementation Recovery ... – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 48
Provided by: HUAN85
Category:

less

Transcript and Presenter's Notes

Title: Recovery


1
Recovery
2
Integrity or correctness of data
  • Would like data to be accurate or correct at
    all times
  • EMP

Name
Age
White Green Gray
52 3421 1
3
Integrity or consistency constraints
  • Predicates data must satisfy
  • Examples
  • - x is key of relation R
  • - x ? y holds in R
  • - Domain(x) Red, Blue, Green
  • - a is valid index for attribute x of R
  • - no employee should make more than twice the
    average salary

4
Definition
  • Consistent state satisfies all constraints
  • Consistent DB DB in consistent state

5
  • Observation DB cannot be consistent always!
  • Example a1 a2 . an TOT (constraint)
  • Deposit 100 in a2 a2 ? a2 100
  • TOT ? TOT 100

6
Example a1 a2 . an TOT (constraint) Deposi
t 100 in a2 a2 ? a2 100 TOT ?
TOT 100
  • a2
  • TOT

. .
. .
. .
50
150
150
. .
. .
. .
1000
1000
1100
7
Transaction collection of actions that
preserve consistency

Consistent DB
Consistent DB
T
8
How can we prevent/fix violations?
  • cc due to data sharing only
  • recovery due to failures only

9
Will not consider
  • How to write correct transactions
  • How to write correct DBMS
  • Constraint checking repair
  • That is, solutions studied here do not need to
    know constraints

10
  • Storage hierarchy

x
x
Memory Disk
11
Operations
  • Input (x) block with x ? memory
  • Output (x) block with x ? disk

Read (x,t) do input(x) if necessary t ?
value of x in block Write (x,t) do input(x) if
necessary value of x in block ? t
12
Key problem Unfinished transaction
  • Example Constraint AB
  • T1 A ? A ? 2
  • B ? B ? 2

13
  • T1 Read (A,t) t ? t?2
  • Write (A,t)
  • Read (B,t) t ? t?2
  • Write (B,t)
  • Output (A)
  • Output (B)

failure!
A 8 B 8
A 8 B 8
16
memory
disk
14
Undo logging
  • T1 Read (A,t) t ? t?2 AB
  • Write (A,t)
  • Read (B,t) t ? t?2
  • Write (B,t)
  • Output (A)
  • Output (B)

A8 B8
A8 B8
ltT1, B, 8gt
ltT1, commitgt
disk
memory
log
15
One complication
  • Log is first written in memory
  • Not written to disk on every action
  • memory
  • DB
  • Log

A 8 B 8
A 8 16 B 8 16 Log ltT1,startgt ltT1, A, 8gt ltT1,
B, 8gt
16
One complication
  • Log is first written in memory
  • Not written to disk on every action
  • memory
  • DB
  • Log

A 8 B 8
A 8 16 B 8 16 Log ltT1,startgt ltT1, A, 8gt ltT1,
B, 8gt ltT1, commitgt
...
ltT1, B, 8gt ltT1, commitgt
17
Undo logging rules
  • (1) For every action generate undo log record
    (containing old value)
  • (2) Before x is modified on disk, log records
    pertaining to x must be on disk (write ahead
    logging WAL)
  • (3) Before commit is flushed to log, all writes
    of transaction must be reflected on disk

18
Recovery rules Undo logging
  • (1) Let S set of transactions with ltTi, startgt
    in log, but no
  • ltTi, commitgt (or ltTi, abortgt) record in log
  • (2) For each ltTi, X, vgt in log,
  • in reverse order (latest ? earliest) do
  • - if Ti ? S then - write (X, v)
  • - output (X)
  • (3) For each Ti ? S do
  • - write ltTi, abortgt to log

19
  • What if failure during recovery?
  • No problem! ? Undo idempotent

20
To discuss
  • Redo logging
  • Undo/redo logging, why both?
  • Checkpoints

21
Redo logging (deferred modification)
  • T1 Read(A,t) t t?2 write (A,t)
  • Read(B,t) t t?2 write (B,t)
  • Output(A) Output(B)

A 8 B 8
A 8 B 8
DB
memory
LOG
22
Redo logging rules
  • (1) For every action, generate redo log record
    (containing new value)
  • (2) Before anything is modified on disk (DB), all
    log records for transaction that modify things
    (including commit) must be on disk

23
Recovery rules Redo logging
  • (1) Let S set of transactions with ltTi,
    commitgt in log
  • (2) For each ltTi, X, vgt in log, in forward
  • order (earliest ? latest) do
  • - if Ti ? S then Write(X, v)
  • Output(X)

24
Recovery is very, very SLOW !
  • Redo log
  • First T1 wrote A,B Last
  • Record Committed a year ago Record
  • (1 year ago) --gt STILL, Need to redo after crash!!

...
...
...
Crash
25
Undo Recovery Better?
  • The first record without commit or abort should
    not be too far away from crash
  • But immediate update itself is expensive

...
...
...
first record without commit or abort
26
Solution Checkpoint (simple version)
  • Periodically
  • (1) Do not accept new transactions
  • (2) Wait until all transactions finish
  • (3) Flush all log records to disk (log)
  • (4) Flush all buffers to disk (DB) (do not
    discard buffers)
  • (5) Write checkpoint record on disk (log)
  • (6) Resume transaction processing

27
Example what to do at recovery?
  • Redo log (disk)

Crash
...
...
...
...
...
...
28
Example what to do at recovery?
  • Undo log (disk)

Crash
...
...
...
...
...
...
29
Nonquiescent Checkingpointing
  • Quiescent checkpointing stalls DB
  • Nonquiescent checkpointing admits new
    transactions while checkpointing

30
Nonquiescent Checkpoint Rules - undo
  • Write and flush a log record ltSTART CKPT(T1, ,
    Tk)gt where T1,,Tk are active transactions
  • When all T1, , Tk have completed, write and
    flush a log record ltEND CKPTgt

31
Example what to do at recovery?
  • Undo log (disk)

Crash
ltEND CKPTgt
ltT2,B,12gt
ltT2,commitgt
...
...
...
...
Crash after end of checkpoint Only need to undo
all the incomplete transactions started after
ltSTART CKPTgt
32
Example what to do at recovery?
  • Undo log (disk)

Crash
ltT2,B,12gt
ltT2,commitgt
...
...
...
...

Crash before end of checkpoint Only need to undo
all incomplete transactions started after ltSTART
CKPTgt and those in ltCKPT ()gt
33
Nonquiescent Checkpoint Rules - redo
  • Write and flush a log record ltSTART CKPT(T1, ,
    Tk) where T1,,Tk are active transactions
  • Flush all the updates of the transactions
    committed before ltSTART CKPT(T1,,Tk)gt
  • Write and flush a log record ltEND CKPTgt

34
Example what to do at recovery?
  • Redo log (disk)

Crash
ltEND CKPTgt
ltT2,B,12gt
ltT2,commitgt
...
...
...
...
Crash after end of checkpoint Only need to redo
all the transactions committed after the latest
ltSTART CKPTgt
35
Example what to do at recovery?
  • Redo log (disk)

Crash
ltT2,B,12gt
ltT2,commitgt
...
...
...
...

Crash before end of checkpoint Only need to redo
all the transactions committed after the latest
successful ltSTART CKPTgt
36
Key drawbacks
  • Undo logging need to update immediately,
    increasing I/O
  • Redo logging need to keep all modified blocks in
    memory until commit

37
Solution undo/redo logging!
  • Update ? ltTi, Xid, New X val, Old X valgt

38
Rules
  • Page X can be flushed before or after Ti commit
  • Log record flushed before corresponding updated
    page (WAL)
  • Flush log at commit

39
Non-quiesce checkpoint
  • L
  • O
  • G
  • for
  • undo

Start-ckpt active TR Ti,T2,...
end ckpt
...
...
...
Flush dirty buffers
...
40
Examples what to do at recovery time?
  • no T1 commit
  • L
  • O
  • G

T1,- a
...
Ckpt T1
...
Ckpt end
...
T1- b
...
? Undo T1 (undo a,b)
41
Example
  • L
  • O
  • G

...
T1 a
...
...
T1 b
...
...
T1 c
...
T1 cmt
...
Ckpt end
ckpt-s T1
? Redo T1 (redo b,c)
42
Examples what to do at recovery time?
  • no T1 commit
  • L
  • O
  • G

T1,- a
...
Ckpt T1
...
...
T1- b
...
? Undo T1 (all the actions)
43
Example
  • L
  • O
  • G

...
T1 a
...
...
T1 b
...
...
T1 c
...
T1 cmt
...
ckpt-s T1
? Redo T1 (redo b,c, a and the actions after
last successful ckp-s)
44
Recovery process
  • Backwards pass (end of log -gt latest checkpoint
    start)
  • construct set S of committed transactions
  • undo actions of transactions not in S
  • Undo pending transactions
  • follow undo chains for transactions in
    (checkpoint active list) - S
  • Forward pass (latest successful checkpoint start
    -gt end of log)
  • redo actions of S transactions

backward pass
start check- point
forward pass
45
Recovery with Checkpoint Summary
  • Logging still obey the logging rules
  • undo, redo, undo-redo
  • Recovery still obey rules
  • Undo undo all incomplete transactions
  • Redo redo all completed transactions
  • Undo-redo combined
  • Checkpoint provides a way to limit the
    transactions needing undo or redo

46
Summary
WAL
47
Summary
  • Consistency of data
  • One source of problems failures
  • - WAL
Write a Comment
User Comments (0)
About PowerShow.com