crash recovery. review: the acid properties a a tomicity: all actions in the xaction happen, or none...

34
Crash Recovery Crash Recovery

Post on 19-Dec-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Crash RecoveryCrash Recovery

Page 2: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Review: The ACID propertiesReview: The ACID properties

AA tomicity: All actions in the Xaction happen, or none happen.

CC onsistency: If each Xaction is consistent, and the DB starts consistent, it ends up consistent.

II solation: Execution of one Xaction is isolated from that of other Xacts.

D D urability: If a Xaction commits, its effects persist.

CC guarantees Isolation and Atomicity.

The Recovery Manager guarantees Atomicity & Durability.

Page 3: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Why is recovery system necessary?Why is recovery system necessary?

Transaction failure : Logical errors: application errors (e.g. div by 0, segmentation fault)

System errors: deadlocks

System crash: hardware/software failure causes the system to crash.

Disk failure: head crash or similar disk failure destroys all or part of disk storage

The data we will lose can be in main memory or in disk

Page 4: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Storage MediaStorage Media

Volatile storage: does not survive system crashes

examples: main memory, cache memory

Nonvolatile storage: survives system crashes

examples: disk, tape, flash memory, non-volatile (battery backed up) RAM

Stable storage: a “mythical” form of storage that survives all failures

approximated by maintaining multiple copies on distinct nonvolatile media

Page 5: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery and DurabilityRecovery and Durability

To achieve Durability: Put data on stable storage

To approximate stable storage make two copies of data

Problem: data transfer failure

Page 6: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Stable-Storage ImplementationStable-Storage Implementation

Solution: Write to the first disk

Write to the second disk when the first disk completes

The process is complete only after the second write completes successfully

Recovery (from disk failures, etc): Detect bad blocks with the checksum (e.g. parity)

Two good copies, equal blocks: done

One good, one bad : copy good to bad

Two bad copies: ignore write

Two good, unequal blocks?

Ans: Copy the second to the first

Page 7: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery and AtomicityRecovery and Atomicity

Durability is achieved by making 2 copies of data

What about atomicity…

Crash may cause inconsistencies…

Page 8: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery and AtomicityRecovery and Atomicity

Example: transfer $50 from account A to account B

goal is either to perform all database modifications made by Ti or none at all.

Requires several inputs (reads) and outputs (writes)

Failure after output to account A and before output to B…. DB is corrupted!

Page 9: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery AlgorithmsRecovery Algorithms

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

Recovery algorithms have two parts

1. Actions taken during normal transaction processing to ensure enough information exists to recover from failures

2. Actions taken after a failure to recover the database contents to a state that ensures atomicity, consistency and durability

Page 10: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Background: Data AccessBackground: Data Access

Physical blocks: blocks on disk. Buffer blocks: blocks in main memory.

Data transfer: input(B) transfers the physical block B to main memory. output(B) transfers the buffer block B to the disk, and replaces the

appropriate physical block there.

Each transaction Ti has its private work-area in which local copies of all data items accessed and updated by it are kept. Ti's local copy of a data item X is called xi.

Assumption: each data item fits in and is stored inside, a single block.

Page 11: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Data Access (Cont.)Data Access (Cont.)

Transaction transfers data items between system buffer blocks and its private work-area using the following operations : read(X) assigns the value of data item X to the local variable xi.

write(X) assigns the value of local variable xi to data item {X} in the buffer block.

both these commands may necessitate the issue of an input(BX) instruction before the assignment, if the block BX in which X resides is not already in memory.

Transactions Perform read(X) while accessing X for the first time; All subsequent accesses are to the local copy. After last access, transaction executes write(X).

output(BX) need not immediately follow write(X). System can perform the output operation when it deems fit.

Page 12: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

X

Y A

B

x1

y1

bufferBuffer Block A

Buffer Block B

input(A)

output(B) read(X)

write(Y)

disk

work areaof T1

work areaof T2

memory

x2

Page 13: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery and Atomicity (Cont.)Recovery and Atomicity (Cont.)

To ensure atomicity, first output information about modifications to stable storage without modifying the database itself.

We study : log-based recovery

Database

Files storing the actual data Log

– Another file storing the actions of transactions

Page 14: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Log-Based RecoveryLog-Based Recovery

Simplifying assumptions: Transactions run serially

logs are written directly on the stable stogare

Log: a sequence of log records; maintains a record of update activities on the database. (Write Ahead Log, W.A.L.)

Log records for transaction Tj:

<Ti start >

<Ti, X, V1, V2>

<Ti commit >

Two approaches using logs Deferred database modification

Immediate database modification

Page 15: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Log exampleLog example

Transaction T1

Read(A) A =A-50 Write(A) Read(B) B = B+50 Write(B)

Log

<T1, start><T1, A, 1000, 950><T1, B, 2000, 2050><T1, commit>

Page 16: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Deferred Database ModificationDeferred Database Modification

Write the modifications to a log And Defer execution of write operations till database commits

Example

Ti starts: write a <Ti start> record to log.

Ti write(X) write <Ti, X, V> to log: V is the new value for X

The write is deferred Note: old value is not needed for this scheme

Ti partially commits: Write <Ti commit> to the log

DB updates by reading and executing the log: <Ti start> …… <Ti commit>

Page 17: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Deferred Database ModificationDeferred Database Modification How to use the log for recovery after a crash?

Redo: if both <Ti start> and <Ti commit> are there in the log.

Ignore otherwise.

Crashes can occur while the transaction is executing the original updates, or while recovery action is being taken

REDO should be idempotent (i.e., executing several times should be the same as once)

example transactions T0 and T1 (T0 executes before T1):

T0: read (A) T1 : read (C)

A: - A - 50 C:- C- 100

Write (A) write (C)

read (B)

B:- B + 50

write (B)

Page 18: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Deferred Database Modification (Cont.)Deferred Database Modification (Cont.)

Below we show the log as it appears at three instances of time.

<T0, start><T0, A, 950><T0, B, 2050>

(a)

<T0, start><T0, A, 950><T0, B, 2050><T0, commit><T1, start><T1, C, 600>

(b)

<T0, start><T0, A, 950><T0, B, 2050><T0, commit><T1, start><T1, C, 600><T1, commit>

(c)- Only new values of an item are recorded in the log (old values can be omitted).- At partial commit time, after the log records are on stable storage, the items are written to the database.

Page 19: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Immediate Database ModificationImmediate Database Modification

Allow database modifications to be OUTPUT to the database before transaction commits.

Tighter logging rules are needed to ensure transaction are undoable

Write records must be of the form: <Ti, X, Vold, Vnew >

Both old and new values

Log record must be written before database item is written/output

Output of DB items can occur:

Before or after commit

In any order

But Log record should be written prior to Output of an item to database

Page 20: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Immediate Database Modification ExampleImmediate Database Modification Example

Log Database<T0 start>

<T0, A, 1000, 950>

<To, B, 2000, 2050>

A = 950 B = 2050

<T0 commit>

<T1 start><T1, C, 700, 600> C = 600<T1 commit>

Page 21: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Immediate Database Modification (Cont.)Immediate Database Modification (Cont.) Recovery procedure :

Undo : <Ti, start > is in the log but <Ti commit> is not. Undo:

restore the value of all data items updated by Ti to their old values, going backwards from the last log record for Ti

Redo: <Ti start> and <Ti commit> are both in the log. Redo:

sets the value of all data items updated by Ti to the new values, going forward from the first log record for Ti

Both operations must be idempotent: even if the operation is executed multiple times the effect is the same as if it is executed once

Undo operations are performed first, then redo operations. Why?

Page 22: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

I M Recovery ExampleI M Recovery Example

<T0, start><T0, A, 1000, 950><T0, B, 2000, 2050>

(a)

<T0, start><T0, A, 1000, 950><T0, B, 2000, 2050><T0, commit><T1, start><T1, C, 700, 600>

(b)

<T0, start><T0, A, 1000, 950><T0, B, 2000, 2050><T0, commit><T1, start><T1, C, 700, 600><T1, commit>

(c)Recovery actions in each case above are:

(a) undo (T0): B is restored to 2000 and A to 1000.

(b) undo (T1) and redo (T0): C is restored to 700, and then A and B are

set to 950 and 2050 respectively.

(c) redo (T0) and redo (T1): A and B are set to 950 and 2050

respectively. Then C is set to 600

Page 23: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

CheckpointsCheckpoints

Problems in recovery procedure as discussed earlier :

1. searching the entire log is time-consuming

2. we might unnecessarily redo transactions which have already output their updates to the database.

How to avoid redundant redoes? Put marks in the log indicating that at that point DB and log are

consistent. Checkpoint!

Page 24: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

CheckpointsCheckpoints

At a checkpoint:

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

Output all modified buffer blocks to the disk.

Write a log record < checkpoint> onto stable storage.

Page 25: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Checkpoints (Cont.)Checkpoints (Cont.)

Recovering from log with checkpoints:

1. Scan backwards from end of log to find the most recent <checkpoint> record

2. Continue scanning backwards till a record <Ti start> is found.

3. Need only consider the part of log following above start record. Why?

4. After that, recover from log with the rules that we had before.

Page 26: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Example of CheckpointsExample of Checkpoints

Tc Tf

T1

T2

T3

T4

checkpoint system failurecheckpoint

T1 can be ignored (updates already output to disk due to checkpoint)

T2 and T3 redone.

T4 undone

Page 27: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery With Concurrent TransactionsRecovery With Concurrent Transactions

To permit concurrency: All transactions share a single disk buffer and a single log

Concurrency control: Strict 2PL :i.e. Release eXclusive locks only after commit. Why?

Logging is done as described earlier.

The checkpointing technique and actions taken on recovery have to be changed (based on ARIES) since several transactions may be active when a checkpoint is

performed.

Page 28: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery With Concurrent Transactions (Cont.)Recovery With Concurrent Transactions (Cont.)

Checkpoints for concurrent transactions:

< checkpoint L> L: the list of transactions active at the time of the checkpoint We assume no updates are in progress while the checkpoint is carried

out

Recovery for concurrent transactions, 3 phases

1. Analysis: Construction of Undo, Redo-Lists

2. Perform Undo

3. Perform Redo

Page 29: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery With Concurrent Transactions (Cont.)Recovery With Concurrent Transactions (Cont.)

1. ANALYSIS: Construction of Undo, Redo-lists

a. Initialize undo-list and redo-list to empty

b. Scan the log backwards from the end, stopping when the first <checkpoint L> record is found. For each record found during the backward scan: if the record is <Ti commit>, add Ti to redo-list

if the record is <Ti start>, then if Ti is not in redo-list, add Ti to undo-list

c. For every Ti in L, if Ti is not in redo-list, add Ti to undo-list

This will add txns to undo-list that started prior to L but did not commit

ANALYSIS

Page 30: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Recovery With Concurrent TransactionsRecovery With Concurrent Transactions

Perform UNDO:

Scan log backwards Perform undo(T) for every transaction in undo-list

Stop when reach <T, start> for every T in undo-list.

Perform REDO:

Locate the most recent <checkpoint L> record.

1. Scan log forwards from the <checkpoint L> record till the end of the log.

2. perform redo for each log record that belongs to a transaction on redo-list

UNDO

REDO

Page 31: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

Example of RecoveryExample of Recovery

Go over the steps of the recovery algorithm on the following log:

<T0 start>

<T0, A, 0, 10>

<T0 commit>

<T1 start>

<T1, B, 0, 10>

<T2 start>

<T2, C, 0, 10>

<T2, C, 10, 20>

<checkpoint {T1, T2}>

<T3 start>

<T3, A, 10, 20>

<T3, D, 0, 10>

<T3 commit>

<T4, start>

DB A B C DInitial 0 0 0 0At crash 20 10 20 10After rec. 20 0 0 10

Redo-list{T3}Undo-list{T4, T1, T2}

Undo:Set C to 10Set C to 0Set B to 0

Redo:Set A to 20Set D to 10

Page 32: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

RecoveryRecovery Summary Summary

Durability Duplicate copies

Ensuring Atomicity Deferred Logging --- Only Redo

Immediate Logging -- Undo and Redo

Checkpoints : to limit log size

Recovery of concurrent txns with checkpoints

3 phases

Page 33: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,

What we coveredWhat we covered

Relational model - SQL Formal & commercial query languages

Functional Dependencies Normalization Interfacing with Databases: PL/SQL, JDBC…

Physical Design File storage Indexing Query Processing and Optimization Txns Concurrency Control Recovery

Page 34: Crash Recovery. Review: The ACID properties A A tomicity: All actions in the Xaction happen, or none happen. C C onsistency: If each Xaction is consistent,