Transaction Management Overview - PowerPoint PPT Presentation

1 / 56
About This Presentation
Title:

Transaction Management Overview

Description:

Transaction Management Overview ... Chapter 18 CRASH RECOVERY recovery manager of a DBMS is responsible for ensuring transaction atomicity and durability atomicity by ... – PowerPoint PPT presentation

Number of Views:275
Avg rating:3.0/5.0
Slides: 57
Provided by: RaghuRa110
Category:

less

Transcript and Presenter's Notes

Title: Transaction Management Overview


1
Transaction Management Overview
  • Chapter 18

2
Objects, transections
  • Database objects' are the units in which
    programs read or write information
  • Pages, records
  • A transaction is seen by the DBMS as a series, or
    list of actions. The actions that can be executed
    by a transaction include reads and writes of
    database objects

3
(No Transcript)
4
(No Transcript)
5
(No Transcript)
6
(No Transcript)
7
(No Transcript)
8
(No Transcript)
9
Transactions
  • Concurrent execution of user programs is
    essential for good DBMS performance.
  • Because disk accesses are frequent, and
    relatively slow, it is important to keep the cpu
    humming by working on several user programs
    concurrently.
  • A users program may carry out many operations on
    the data retrieved from the database, but the
    DBMS is only concerned about what data is
    read/written from/to the database.
  • A transaction is the DBMSs abstract view of a
    user program a sequence of reads and writes.

10
Concurrency in a DBMS
  • Users submit transactions, and can think of each
    transaction as executing by itself.
  • Concurrency is achieved by the DBMS, which
    interleaves actions (reads/writes of DB objects)
    of various transactions.
  • Each transaction must leave the database in a
    consistent state if the DB is consistent when the
    transaction begins.
  • DBMS will enforce some ICs, depending on the ICs
    declared in CREATE TABLE statements.
  • Beyond this, the DBMS does not really understand
    the semantics of the data. (e.g., it does not
    understand how the interest on a bank account is
    computed).
  • Issues Effect of interleaving transactions, and
    crashes.

11
ACID four important properties of transactions
  • Users should be able to regard the execution of
    each transaction as Atomic
  • must preserve the consistency of the database
  • even if the DBMS interleaves the actions of
    several transactions for performance reason
    without considering the effect of other
    concurrently executing transactions isolation
  • Once the DBMS informs the user that a transaction
    has been successfully completed, its effects
    should persist even if the system crashes before
    all its changes are re?ected on disk. durability.

12
Consistency and Isolation
  • Users are responsible for ensuring transaction
    consistency
  • Transection will leave DB in Consistent state
  • 100 depit acount A
  • 99 credit acount B, 1 difference ins users logic
    problem
  • isolation ensured by guaranteeing that even
    though actions of several transactions might be
    interleaved, the net effect is identical to
    executing all transactions one after the other in
    some serial order.

13
Atomicity of Transactions
  • A transeciton can be incomplete for
  • Being ABORTED, or terminated due to some kind of
    anomaly DBMS
  • If terminated by DBMS it is restarted
  • System crash
  • Unexpected stuation (access some disk )
  • a transaction that is interrupted in the middle
    may leave the database in an inconsistent state .
  • either all of a transaction's actions are carried
    out, or none are.DMBS undo actions from logs

14
Atomicity of Transactions
  • A transaction might commit after completing all
    its actions, or it could abort (or be aborted by
    the DBMS) after executing some actions.
  • A very important property guaranteed by the DBMS
    for all transactions is that they are atomic.
    That is, a user can think of a Xact as always
    executing all its actions in one step, or not
    executing any actions at all.
  • DBMS logs all actions so that it can undo the
    actions of aborted transactions.

15
  • http//www.vbdotnetheaven.com/blogs/4995/transacti
    on-processing-concept-in-ado-net

16
Example
  • Consider two transactions (Xacts)

T1 BEGIN AA100, BB-100 END T2 BEGIN
A1.06A, B1.06B END
  • Intuitively, the first transaction is
    transferring 100 from Bs account to As
    account. The second is crediting both accounts
    with a 6 interest payment.
  • There is no guarantee that T1 will execute before
    T2 or vice-versa, if both are submitted together.
    However, the net effect must be equivalent to
    these two transactions running serially in some
    order.

17
Example (Contd.)
  • Consider a possible interleaving (schedule)

T1 AA100, BB-100 T2
A1.06A, B1.06B
  • This is OK. But what about

T1 AA100, BB-100 T2
A1.06A, B1.06B
  • The DBMSs view of the second schedule

T1 R(A), W(A), R(B), W(B) T2
R(A), W(A), R(B), W(B)
18
Scheduling Transactions
  • a schedule represents an actual or potential
    execution sequence.
  • DBMS interleaves the actions of different
    transactions to improve performance

19
Scheduling Transactions
  • Ensuring transaction isolation while permitting
    such concurrent execution is difficult, but is
    necessary for performance reasons
  • I/O activity can be done in parallel with CPU
    activity in a computer.
  • Over-lapping I/O and CPU activity,
  • Reduce
  • i/o , cpu idle time
  • Increase
  • system throughput

20
Scheduling Transactions
  • Serial schedule Schedule that does not
    interleave the actions of different transactions.
  • Equivalent schedules For any database state,
    the effect (on the set of objects in the
    database) of executing the first schedule is
    identical to the effect of executing the second
    schedule.
  • Serializable schedule A schedule that is
    equivalent to some serial execution of the
    transactions.
  • (Note If each transaction preserves consistency,
    every serializable schedule preserves
    consistency. )

21
Anomalies with Interleaved Execution
  • Two actions on the same data object con?ict if at
    least one of them is a write
  • Write-Read WR conflict T1 ?T2 dirty read
  • Read-Write RW conflict
  • Write-Write WW conflict

22
Anomalies with Interleaved Execution
  • Reading Uncommitted Data (WR Conflicts, dirty
    reads)
  • Unrepeatable Reads (RW Conflicts)

T1 R(A), W(A), R(B), W(B),
Abort T2 R(A), W(A), C
T1 R(A), R(A), W(A), C T2 R(A),
W(A), C
23
Anomalies (Continued)
  • Overwriting Uncommitted Data (WW Conflicts)
  • if transaction does not reads object before
    writing it such a write is called a blind write

T1 W(A), W(B), C T2 W(A), W(B), C
24
Schedules Involving Aborted Transactions
  • Intuitively, all actions of aborted transactions
    are to be undone.
  • if T2 had not been committed, cascading abort of
    T1 and T2, also releated transection
  • But T2 is committed, thus it is Unrecoverable
    Schedule
  • recoverable schedule is one in which transactions
    commit only after (and if !) all transactions
    whose changes they read commit.

25
avoid cascading aborts schedule
  • If transactions read only the changes of
    committed transactions, not only is the schedule
    recoverable, but also aborting a transaction can
    be accomplished without cascading the abort to
    other transactions. Such a schedule is said to
    avoid cascading aborts

26
Aborting a Transaction
  • If a transaction Ti is aborted, all its actions
    have to be undone. Not only that, if Tj reads an
    object last written by Ti, Tj must be aborted as
    well!
  • Most systems avoid such cascading aborts by
    releasing a transactions locks only at commit
    time.
  • If Ti writes an object, Tj can read this only
    after Ti commits.
  • In order to undo the actions of an aborted
    transaction, the DBMS maintains a log in which
    every write is recorded. This mechanism is also
    used to recover from system crashes all active
    Xacts at the time of the crash are aborted when
    the system comes back up.

27
Lock-Based Concurrency Control
  • Strict Two-phase Locking (Strict 2PL) Protocol
  • Each Xact must obtain a S (shared) lock on object
    before reading, and an X (exclusive) lock on
    object before writing.
  • All locks held by a transaction are released when
    the transaction completes
  • (Non-strict) 2PL Variant Release locks anytime,
    but cannot acquire locks after releasing any
    lock.
  • If an Xact holds an X lock on an object, no
    other Xact can get a lock (S or X) on that
    object.
  • Strict 2PL allows only serializable schedules.
  • Additionally, it simplifies transaction aborts
  • (Non-strict) 2PL also allows only serializable
    schedules, but involves more complex abort
    processing

28
(No Transcript)
29
(No Transcript)
30
Deadlock
  • Consider the following example
  • transaction T1 gets an exclusive lock on object
    A, T2 gets an exclusive lock on B, T1 requests an
    exclusive lock on B and is queued, and T2
    requests an exclusive lock on A and is queued.
    Now, T1 is waiting for T2 to release its lock and
    T2 is waiting for T1 to release its lock! Such a
    cycle of transactions waiting for locks to be
    released is called a deadlock

31
Deadlock Prevention
  • giving each transaction a priority and ensuring
    that lower priority transactions are not allowed
    to wait for higher priority transactions (or vice
    versa).
  • Timestamp priority.
  • Ti requests a lock and transaction Tj holds a
    con?icting lock
  • Wait die
  • lower priority transactions can never wait for
    higher priority transactions.
  • Wound-wait
  • higher priority transactions never wait for
    lower priority transactions

32
Deadlock Detection
  • Deadlocks tend to be rare and typically involve
    very few transactions
  • The lock manager maintains a structure called a
    waits-for graph to detect deadlock cycle
  • The nodes correspond to active transactions, and
    there is an arc from Ti to Tj if (and only if) Ti
    is waiting for Tj to release a lock. The lock
    manager adds edges to this graph when it queues
    lock requests and removes edges when it grants
    lock requests

33
(No Transcript)
34
CRASH RECOVERY
  • recovery manager of a DBMS is responsible for
    ensuring transaction atomicity and durability
  • atomicity by undoing the actions of transactions
    that do not commit
  • durability by making sure that all actions of
    committed transactions survive system crashes and
    media failures

35
after crashes
  • recovery manager is given control
  • responsible
  • for bringing the database to a consistent state
  • for undoing the actions of an aborted transaction.

36
The Log
  • The following actions are recorded in the log
  • Ti writes an object the old value and the new
    value.
  • Log record must go to disk before the changed
    page!
  • Ti commits/aborts a log record indicating this
    action.
  • Log records are chained together by Xact id, so
    its easy to undo a specific Xact.
  • Log is often duplexed and archived on stable
    storage.
  • All log related activities (and in fact, all CC
    related activities such as lock/unlock, dealing
    with deadlocks etc.) are handled transparently by
    the DBMS.

37
Recovering From a Crash
  • There are 3 phases in the Aries recovery
    algorithm
  • Analysis Scan the log forward (from the most
    recent checkpoint) to identify all Xacts that
    were active, and all dirty pages in the buffer
    pool at the time of the crash.
  • Redo Redoes all updates to dirty pages in the
    buffer pool, as needed, to ensure that all logged
    updates are in fact carried out and written to
    disk.
  • Undo The writes of all Xacts that were active
    at the crash are undone (by restoring the before
    value of the update, which is in the log record
    for the update), working backwards in the log.
    (Some care must be taken to handle the case of a
    crash occurring during the recovery process!)

38
Summary
  • Concurrency control and recovery are among the
    most important functions provided by a DBMS.
  • Users need not worry about concurrency.
  • System automatically inserts lock/unlock requests
    and schedules actions of different Xacts in such
    a way as to ensure that the resulting execution
    is equivalent to executing the Xacts one after
    the other in some order.
  • Write-ahead logging (WAL) is used to undo the
    actions of aborted transactions and to restore
    the system to a consistent state after a crash.
  • Consistent state Only the effects of commited
    Xacts seen.

39
Sql server Transection isolation
  • Dirty Reads occur when one transaction reads data
    written by another, uncommitted, transaction. The
    danger with dirty reads is that the other
    transaction might never commit, leaving the
    original transaction with "dirty" data.
  • Non-repeatable Reads occur when one transaction
    attempts to access the same data twice and a
    second transaction modifies the data between the
    first transaction's read attempts. This may cause
    the first transaction to read two different
    values for the same data, causing the original
    read to be non-repeatable
  • Phantom Reads occur when one transaction accesses
    a range of data more than once and a second
    transaction inserts or deletes rows that fall
    within that range between the first transaction's
    read attempts. This can cause "phantom" rows to
    appear or disappear from the first transaction's
    perspective.

40
  • SQL Server's isolation models each attempt to
    conquer a subset of these problems, providing
    database administrators with a way to balance
    transaction isolation and business requirements.
    The five SQL Server isolation models are
  • The Read Committed Isolation Model is SQL
    Servers default behavior. In this model, the
    database does not allow transactions to read data
    written to a table by an uncommitted transaction.
    This model protects against dirty reads, but
    provides no protection against phantom reads or
    non-repeatable reads.

41
  • The Read Uncommitted Isolation Model offers
    essentially no isolation between transactions.
    Any transaction can read data written by an
    uncommitted transaction. This leaves the
    transactions vulnerable to dirty reads, phantom
    reads and non-repeatable reads.
  • The Repeatable Read Isolation Model goes a step
    further than the Read Committed model by
    preventing transactions from writing data that
    was read by another transaction until the reading
    transaction completes. This isolation model
    protect against both dirty reads and
    non-repeatable reads.

42
  • The Serializable Isolation Model uses range locks
    to prevent transactions from inserting or
    deleting rows in a range being read by another
    transaction. The Serializable model protects
    against all three concurrency problems.
  • The Snapshot Isolation Model also protects
    against all three concurrency problems, but does
    so in a different manner. It provides each
    transaction with a "snapshot" of the data it
    requests. The transaction may then access that
    snapshot for all future references, eliminating
    the need to return to the source table for
    potentially dirty data.

43
  • If you need to change the isolation model in use
    by SQL Server, simply issue the command
  • SET TRANSACTION ISOLATION LEVEL ltlevelgt
  • where ltlevelgt is replaced with any of the
    following keywords
  • READ COMMITTED
  • READ UNCOMMITTED
  • REPEATABLE READ
  • SERIALIZABLE
  • SNAPSHOT

44
BEGIN TRAN UPDATE authors SET au_fname
'John' WHERE au_id '172-32-1176' UPDATE
authors SET au_fname 'Marg' WHERE au_id
'213-46-8915' COMMIT TRAN
45
BEGIN TRAN UPDATE authors SET au_fname
'John' WHERE au_id '172-32-1176' UPDATE
authors SET au_fname 'JohnY' WHERE city
'Lawrence' IF _at__at_ROWCOUNT 5 COMMIT TRAN ELSE
ROLLBACK TRAN
46
Create Proc TranTest1 AS BEGIN TRAN INSERT INTO
authors(au_id, au_lname, au_fname,
phone, contract) VALUES ('172-32-1176',
'Gates', 'Bill', ' 800-BUY-MSFT',
1) UPDATE authors SET au_fname
'Johnzzz' WHERE au_id '172-32-1176' COMMIT
TRAN GO
47
Create Proc TranTest2 AS BEGIN TRAN INSERT INTO
authors(au_id, au_lname, au_fname,
phone, contract) VALUES ('172-32-1176',
'Gates', 'Bill', ' 800-BUY-MSFT', 1) IF
_at__at_ERROR ltgt 0 BEGIN ROLLBACK TRAN return 10
END UPDATE authors SET au_fname
'Johnzzz' WHERE au_id '172-32-1176' IF _at__at_ERROR
ltgt 0 BEGIN ROLLBACK TRAN return 11
END COMMIT TRAN GO
48
USE pubs DECLARE _at_intErrorCode INT BEGIN TRAN
UPDATE Authors SET Phone '415 354-9866'
WHERE au_id '724-80-9391' SELECT
_at_intErrorCode _at__at_ERROR IF (_at_intErrorCode ltgt
0) GOTO PROBLEM UPDATE Publishers SET
city 'Calcutta', country 'India' WHERE
pub_id '9999' SELECT _at_intErrorCode
_at__at_ERROR IF (_at_intErrorCode ltgt 0) GOTO
PROBLEM COMMIT TRAN PROBLEM IF (_at_intErrorCode
ltgt 0) BEGIN PRINT 'Unexpected error occurred!'
ROLLBACK TRAN END
49
Nested trasnection
Figure 1 A COMMIT always balances a BEGIN
TRANSACTION by reducing the transaction count by
one.
Figure 2 A single ROLLBACK always rolls back the
entire transaction
50
USE pubs SELECT 'Before BEGIN TRAN', _at__at_TRANCOUNT
-- The value of _at__at_TRANCOUNT is 0 BEGIN TRAN
SELECT 'After BEGIN TRAN', _at__at_TRANCOUNT -- The
value of _at__at_TRANCOUNT is 1 DELETE sales
BEGIN TRAN nested SELECT 'After BEGIN
TRAN nested', _at__at_TRANCOUNT --
The value of _at__at_TRANCOUNT is 2 DELETE
titleauthor COMMIT TRAN nested
-- Does nothing except decrement the value of
_at__at_TRANCOUNT SELECT 'After COMMIT TRAN
nested', _at__at_TRANCOUNT -- The
value of _at__at_TRANCOUNT is 1 ROLLBACK TRAN SELECT
'After ROLLBACK TRAN', _at__at_TRANCOUNT -- The value
of _at__at_TRANCOUNT is 0 -- because ROLLBACK TRAN
always rolls back all transactions and sets --
_at__at_TRANCOUNT to 0. SELECT TOP 5 au_id FROM
titleauthor
51
USE pubs SELECT 'Before BEGIN TRAN', _at__at_TRANCOUNT
-- The value of _at__at_TRANCOUNT is 0 BEGIN TRAN
SELECT 'After BEGIN TRAN', _at__at_TRANCOUNT -- The
value of _at__at_TRANCOUNT is 1 DELETE sales
BEGIN TRAN nested SELECT 'After BEGIN
TRAN nested', _at__at_TRANCOUNT -- The
value of _at__at_TRANCOUNT is 2 DELETE
titleauthor ROLLBACK TRAN SELECT
'After COMMIT TRAN nested', _at__at_TRANCOUNT --
The value of _at__at_TRANCOUNT is 0 because --
ROLLBACK TRAN always rolls back all transactions
and sets _at__at_TRANCOUNT -- to 0. IF
(_at__at_TRANCOUNT gt 0) BEGIN COMMIT TRAN -- Never
makes it here cause of the ROLLBACK SELECT
'After COMMIT TRAN', _at__at_TRANCOUNT END SELECT TOP
5 au_id FROM titleauthor
52
USE pubs SELECT 'Before BEGIN TRAN main',
_at__at_TRANCOUNT -- The value of _at__at_TRANCOUNT is
0 BEGIN TRAN main SELECT 'After BEGIN TRAN
main', _at__at_TRANCOUNT -- The value of _at__at_TRANCOUNT
is 1 DELETE sales SAVE TRAN sales --
Mark a save point SELECT 'After SAVE TRAN
sales', _at__at_TRANCOUNT -- The value of
_at__at_TRANCOUNT is still 1 BEGIN TRAN nested
SELECT 'After BEGIN TRAN nested',
_at__at_TRANCOUNT -- The value of _at__at_TRANCOUNT
is 2 DELETE titleauthor SAVE TRAN
titleauthor -- Mark a save point SELECT
'After SAVE TRAN titleauthor', _at__at_TRANCOUNT
-- The value of _at__at_TRANCOUNT is still 2
ROLLBACK TRAN sales SELECT 'After ROLLBACK
TRAN sales', _at__at_TRANCOUNT -- The value of
_at__at_TRANCOUNT is still 2 SELECT TOP 5 au_id
FROM titleauthor IF (_at__at_TRANCOUNT gt 0) BEGIN
ROLLBACK TRAN SELECT 'AFTER ROLLBACK TRAN',
_at__at_TRANCOUNT -- The value of _at__at_TRANCOUNT is 0
because -- ROLLBACK TRAN always rolls back
all transactions and sets _at__at_TRANCOUNT -- to
0. END SELECT TOP 5 au_id FROM titleauthor
53
CREATE PROCEDURE addTitle(_at_title_id VARCHAR(6),
_at_au_id VARCHAR(11),
_at_title VARCHAR(20), _at_title_type
CHAR(12)) AS BEGIN TRAN INSERT
titles(title_id, title, type) VALUES
(_at_title_id, _at_title, _at_title_type) IF (_at__at_ERROR
ltgt 0) BEGIN PRINT 'Unexpected error
occurred!' ROLLBACK TRAN RETURN
1 END INSERT titleauthor(au_id,
title_id) VALUES (_at_au_id, _at_title_id) IF
(_at__at_ERROR ltgt 0) BEGIN PRINT 'Unexpected
error occurred!' ROLLBACK TRAN
RETURN 1 END COMMIT TRAN RETURN 0
IF _at__at_ERROR ltgt 0 BEGIN
RAISERROR('error occured while recording
purchase', 16, 1) ROLLBACK END
54
string connectionString "........." SqlConnec
tion myConnection new SqlConnection(connectionSt
ring) myConnection.Open() // Start
transaction. SqlTransaction myTransaction
myConnection.BeginTransaction() // Assign
command in the current transaction. SqlCommand
myCommand new SqlCommand() myCommand.Transacti
on myTransaction try ......................
...Database operations........................ my
Transaction.Commit() Console.WriteLine("Records
are modified in the database.")
catch(Exception e) myTransaction.Rollba
ck() Console.WriteLine(e.ToString()) Console.W
riteLine("Neither record was written to
database.") finally myConnection.Close
()
55
SET XACT_ABORT ON BEGIN TRY BEGIN
TRANSACTION -- Code goes here COMMIT
TRANSACTION END TRY BEGIN CATCH IF
_at__at_TRANCOUNT gt 0 ROLLBACK TRANSACTION
DECLARE _at_ERROR_SEVERITY INT,
_at_ERROR_STATE INT, _at_ERROR_NUMBER INT,
_at_ERROR_LINE INT, _at_ERROR_MESSAGE NVARCHAR(40
00) SELECT _at_ERROR_SEVERITY
ERROR_SEVERITY(), _at_ERROR_STATE
ERROR_STATE(), _at_ERROR_NUMBER
ERROR_NUMBER(), _at_ERROR_LINE
ERROR_LINE(), _at_ERROR_MESSAGE
ERROR_MESSAGE() RAISERROR('Msg d, Line d,
s', _at_ERROR_SEVERITY, _at_ERROR_STATE,
_at_ERROR_NUMBER, _at_ERROR_LINE,
_at_ERROR_MESSAGE) END CATCH
56
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com