Concurrency Control Based on Timestamp Ordering
The use of locks, combined with the 2PL protocol, guarantees
serializability of schedules. The serializable schedules produced by 2PL have
their equivalent serial schedules based on the order in which executing
transactions lock the items they acquire. If a transaction needs an item that
is already locked, it may be forced to wait until the item is released. Some
transactions may be aborted and restarted because of the deadlock problem. A
different approach that guarantees serializability involves using transaction
timestamps to order transaction execution for an equivalent serial schedule. In
Section 22.2.1 we discuss timestamps, and in Section 22.2.2 we discuss how
serializability is enforced by ordering transactions based on their timestamps.
1. Timestamps
Recall that a timestamp is a
unique identifier created by the DBMS to identify a transaction. Typically,
timestamp values are assigned in the order in which the transactions are
submitted to the system, so a timestamp can be thought of as the transaction start time. We will refer to
the timestamp of transaction T as TS(T). Concurrency control techniques based on timestamp ordering do not
use locks; hence, deadlocks cannot occur.
Timestamps can be generated in several ways. One possibility is to use a
counter that is incremented each time its value is assigned to a transaction.
The transaction time-stamps are numbered 1, 2, 3, ... in this scheme. A
computer counter has a finite max-imum value, so the system must periodically
reset the counter to zero when no transactions are executing for some short
period of time. Another way to implement timestamps is to use the current
date/time value of the system clock and ensure that no two timestamp values are
generated during the same tick of the clock.
2. The Timestamp
Ordering Algorithm
The idea for this scheme is to order the transactions based on their
timestamps. A schedule in which the transactions participate is then
serializable, and the only equivalent serial schedule permitted has
the transactions in order of their timestamp
values. This is called timestamp
ordering (TO). Notice how this differs from 2PL, where a schedule is
serializable by being equivalent to some serial schedule allowed by the locking
protocols. In timestamp ordering, however, the schedule is equivalent to the particular serial order corresponding to
the order of the transaction time-stamps. The algorithm must ensure that, for
each item accessed by conflicting operations
in the schedule, the order in which the item is accessed does not violate
the timestamp order. To do this, the
algorithm associates with each database item X two timestamp (TS)
values:
read_TS(X). The read timestamp of item X is the largest timestamp among all the timestamps of transactions
that have successfully read item X—that
is, read_TS(X) = TS(T), where T is the youngest transaction that has read X successfully.
write_TS(X). The write timestamp of item X is the largest of all the time-
stamps of transactions that have successfully written item X—that is, write_TS(X) = TS(T), where T is the
youngest transaction that has written X
successfully.
Basic Timestamp Ordering
(TO). Whenever some transaction T tries to issue a read_item(X) or a write_item(X) operation, the basic TO algorithm compares the timestamp of T with read_TS(X) and write_TS(X) to ensure that the timestamp order of transaction execution is
not violated. If this order is violated, then transac-tion T is aborted and resubmitted to the system as a new transaction
with a new timestamp. If T is
aborted and rolled back, any transaction
T1 that may have used a value
written by T must also be rolled
back. Similarly, any transaction T2 that may have used a value
written by T1 must also be rolled back, and so
on. This effect is known as cascading
rollback and is one of the problems associated with basic TO, since the
schedules produced are not guaranteed to be recoverable. An additional protocol must be enforced to ensure that the schedules are
recoverable, cascadeless, or strict.
We first describe the basic TO algorithm here. The concurrency control
algorithm must check whether conflicting operations violate the timestamp
order-ing in the following two cases:
Whenever a transaction T issues a write_item(X) operation, the following
is checked:
If read_TS(X) > TS(T) or if write_TS(X) > TS(T), then abort and roll back T and reject the operation. This
should be done because some younger transaction with a timestamp
greater than TS(T)—and hence after T in the timestamp ordering—has
already read or written the value of item X
before T had a chance to write X, thus violating the timestamp
ordering.
·
If the condition in part (a) does
not occur, then execute the write_item(X) operation of T and set
write_TS(X) to TS(T).
·
Whenever a transaction T issues a read_item(X) operation, the following
is checked:
·
If write_TS(X) > TS(T), then abort and roll back T and reject the opera-tion. This should
be done because some younger transaction with time-stamp greater than TS(T)—and hence after T in the timestamp ordering—has already written the value of item X before T had a chance
to read X.
·
If write_TS(X) ≤ TS(T), then execute the read_item(X) operation of T and set read_TS(X) to the larger of TS(T) and the current read_TS(X).
Whenever the basic TO algorithm detects two conflicting operations that occur in the incorrect order, it
rejects the later of the two operations by aborting the transaction that issued
it. The schedules produced by basic TO are hence guaranteed to be conflict serializable, like the 2PL
protocol. However, some schedules are possible under each protocol that are not allowed under the other. Thus, neither protocol allows all possible serializable schedules. As
mentioned earlier, deadlock does not occur with timestamp ordering. However,
cyclic restart (and hence starvation) may occur if a transaction is continually
aborted and restarted.
Strict Timestamp Ordering
(TO). A variation of basic TO called strict TO ensures that the schedules are both strict
(for easy recoverability) and (conflict) serializable. In this variation, a
transaction T that issues a read_item(X) or write_item(X) such that TS(T) > write_TS(X) has its read or write
operation
delayed until the transaction T that wrote the value of X (hence TS(T ) = write_TS(X)) has committed or aborted.
To implement this algorithm, it is necessary to simulate the locking of an item
X that has been written by
transaction T until T is either com-mitted or aborted. This
algorithm does not cause deadlock,
since T waits for T only if TS(T) > TS(T ).
Thomas’s Write Rule. A modification of the basic TO algorithm, known as Thomas’s write rule, does not enforce conflict serializability, but it rejects fewer write operations by modifying the
checks for the write_item(X) operation as follows:
If read_TS(X) > TS(T), then abort and roll back T and reject the operation.
If write_TS(X) > TS(T), then do not execute the write
operation but continue
processing. This is because some transaction with timestamp greater than
TS(T)—and hence after T in the timestamp ordering—has already written the value of X. Thus, we must
ignore the write_item(X) operation of T because it is already outdated and
obsolete. Notice that any conflict arising from this situation would be
detected by case (1).
If neither the condition in part
(1) nor the condition in part (2) occurs, then execute the write_item(X) operation of T and set write_TS(X) to TS(T).
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.