Part 1

Q 1. Define atomicity, consistency, isolation and durability and illustrate them through examples. Ans: ATOMICITY:- It is a property maintained by the DBMS to ensure integrity .it means that either all the operations of the transactions are reflected properly in the database or none are. Let us see in example that how atomicity is maintained and necessary T: read(A); A:=A-50; Write(A); Read(B); B=B+50; Write(B); Now suppose that ,just before the execution of transaction T, the values of accounts A and B are $1000 and $2000,resp. now suppose that, during the execution of transaction T, a failure occurs that prevents T from completing its execution successfully. Examples of such failures include power failure, hardware failure etc. further suppose that the failure happens after Write (A) operation but before the write (B) operation. In this case the value of account A and B reflected in database are$950 and $2000.the system destroyed $50 as a result of this failure. In particular we note that the sum A+B is no longer preserved. So we must ensure that such inconsistencies are not visible in the database. Note, however that the system must at some point be in an inconsistent state. Even if transaction T is executed to completion, there exist a point at which the value of account A is $950 and the value of account B is $2000, which is clearly an inconsistent state. This state however Is eventually replaced by the consistent state where the value of account A is $950 and account B is $2050. Thus if the transaction never started or was guaranteed to complete, such an inconsistent state would not be visible except during the execution of the transaction. That is the reason for the ATOMICITY requirement. If the atomicity property is present all actions of transaction are reflected in the database or none are. The basic idea behind ensuring ATOMICITY is this: the database system keeps track(on disk) of the old values of any data on which a transaction performs a write, and, if the transaction does not complete its execution, the data base system restores the old values to make it appear as though the transaction never executed. So in this way atomicity is implemented.

CONSISTENCY:- Execution of a transaction in Isolation(that is no other transaction executed concurrently)preserves the consistency of the database.The consistency requirement in the above example is that the sum of A and B be unchanged by the execution of the transaction. Without the consistency requirement, money could be created or destroyed by the transaction! It can be verified easily that, if the database is consistent before an execution of the transaction, the database remains consistent after the execution of transaction. ISOLATION:- It the property which says that even though multiple transaction may execute concurrently, the system guarantees that, for every pair of transactions Ti and Tj, it appears to Ti that either Tj finished execution before Ti started or Tj start execution after Ti finished. Thus each transaction is unaware of other transaction executing concurrently in the system. As in the above example, the database is temporarily inconsistent while the transaction to transfer funds from A to B is executing, with the deducted total written to A and the increased total yet to be written to B. if a second concurrently running transaction reads A and B at this intermediate point and computes A +B, it will observe an inconsistent value. Furthermore, if this second transaction then performs updates on A and B based on the inconsistent values that it read, the database may left in an inconsistent state even after both transactions have completed. A way to avoid the problem of concurrently executing transactions is to execute transactions serially- that is one after the other. So the isolation property states that the concurrent execution of the transactions result in the same state that is equivalent to a state that could have been obtained had these transactions one at a time in same order. DURABILITY:-It states that after a transaction completes successfully, the changes it has made to the database persist, even if there are system failures. We can say that, once the transaction completes successfully, and the user who initiated transaction has been notified that the transfer of funds has taken place, it must be the case that no system failure will result in a loss of data corresponding to this transfer of funds. We assume for now that a failure of the system may result in loss of data in main memory. But data written to the disk are never lost. We can guarantee durability by ensuring that either 1. The updates carried out by the transaction have been written to disk before the transaction completes. 2. Information about the updates carried out by the transaction and written to the disk is sufficient to enable the database to reconstruct the updates when the database system is restarted after the failure.

Q 2. Illustrate the Strict Two-phase Locking(Strict 2PL) protocol. What can you say about the schedules allowed by this protocol? Ans : In databases and transaction processing two-phase locking, (2PL) is a concurrency controlmethod that guarantees serializability. It is also the name of the resulting set of database transaction schedules (histories). The protocol utilizes locks that block (interpreted as signals to stop) other transactions from accessing the same data during a transaction's life. By the 2PL protocol locks are applied and removed in two phases: 1. Expanding phase: locks are acquired and no locks are released. 2. Shrinking phase: locks are released and no locks are acquired. Two types of locks are utilized by the basic protocol: Shared and Exclusive locks. Refinements of the basic protocol may utilize more lock types. Using locks that block processes, 2PL may be subject todeadlocks that result from the mutual blocking of two or more transactions. T3: lock-X(B); Read (B); B:= B-50; Write (B); Lock-X(A); Read (A); A:=A+50; Write(A); Unlock(B); Unlock(A); lock-X(A); T4: lock-S(A; Read (A); Lock-S(B); read(B); display(A+B); unlock(A); unlock(B) T3 lock-X(B); read (B); B:= B-50; write(B); lock-S(A) read(A); lock-S(B); Schedule 2 T4

Transaction T3 and T4 are two phase. Note that unlock instructions donot need to appear at the end of transaction. For example in case of transaction T3, we could move the unlock(B) instruction to just after the lock-X(A) instruction and still retain two phase locking property. Two phase lockingensures serializability but does not ensure freedom from deadlock. observe that transaction T3 and T4 are two phase but in schedule 2, they are deadlocked. In addition to being serializable, schedules should be cascadeless. cascading rollback mayn occur under two phase locking. As in the illustration below consider the partial scheduling.each transaction observes the two phase locking protocol, but the failure of T5 after the read (A) step of T7 leads to cascading roll back of T6 and T7.

PARTIAL SHEDULE UNDER TWO PHASE LOCKING T5 Lock-X(A) Read (A) Lock-S(B) Read(B) two phase Write(A) Unlock(A) Lock-X(A) Read(A) Write(A) Unlock(A) Lock-S(A) Read(A) Cascading rollbacks can be avoided by a modification of locking called STRICTLY TWO PHASE LOCKING protocol.this protocol requires not only that locking but also that all exclusive mode locks taken by a transaction be held until all that transaction commits.this requirement ensures that any data written by an uncommitted transaction are locked in exclusive mode until the transaction commits, preventing any other transaction from reading the data. So in this way,a strictly two phase locking is implemented T6 T7

Part -2
Q2. What is serialisability? How can serialisability be ensured? Do you need to restrict concurrent execution of transaction to ensure serialisability? Justify your answer. Give an example of transactions and how you can force serialisability in those transactions.
Answer- In concurrency control of databases,[1][2] transaction processing (transaction

management), and various transactional applications (e.g., transactional memory[3] and software transactional memory), both centralized and distributed, a transaction schedule (history) is serializable, has the serializability property, if its outcome (e.g., the resulting database state, the values of the database's data) is equal to the outcome of its transactions executed serially, i.e., sequentially without overlapping in time. Transactions are normally executed concurrently (they overlap), since this is the most efficient way. Serializability is the major correctness criterion for concurrent transactions' executions. It is considered the highest level of isolation between transactions, and plays an essential role in concurrency control. As such it is supported in all general purpose database systems. The database system must control concurrent execution of transactions, to ensure that the database state remains consistent. Before we examine how the database system can carry out this task, we must first understand which schedules will ensure consistency, and which schedules will not. Example-- >> T1 read(A) A:=A-50 read(A) temp:= A* 0.7 A:= A - temp write(A) read(B) write(A) read(B) B:=B+50 write(B) B:=B+temp T2


Since transactions are programs, it is computationally difficult to determine exactly what operations a transaction performs and how operations of various transactions interact. For this reason, we shall not interpret the type of operations that a transaction can perform on a data item. Instead, we consider only two operations: read and write. We thus assume that, between a read(Q) instruction and i write(Q) instruction on a data item Q, a transaction may perform an arbitrary sequence of operationson the copy of Q that is residing in the local buffer of the transaction. Thus, the only significant operations of a transaction, from a scheduling point of view, are its read and write instructions. We shall therefore usually show only read and write instructions in schedules. There are two types of serializability those are>. 1. conflict serializability 2. view serializability

serialisability is affected by concurrent transaction its mainly depend on the data item those are going to change in transaction. If the data item are same in those transaction then we need to control the concurrent execution of transaction we can also use lock based protocol to execute them. Other wise there are no need control them for achieve serialisability. Example-- >> T1 read(A) A:=A-50 read(A) temp:= A* 0.7 A:= A - temp write(A) read(B) T2

write(A) read(B) B:=B+50 write(B) B:=B+temp write(B)

Here both transaction are performed operation on two common item a and b if here the transaction run concurrently then data would be inconsistency show to achieve consistency in data these transaction should run one after another. Here to run them concurrently we need to used lock based protocol in above example if T1 is going to use data item A then T1 apply a lock on A that no other transaction can not perform operation on a until a release it. Same in the case of transaction T2 if T2 is using data item B it puts a lock that no other can use it and this way consistency can be achieved. If we take two transaction those perform operation on two different item or only one of transaction is going for write operation then we can run them concurrently without using locks because there is no chance for data inconsistency. Example:-

T1 read(A) A:=A-50


read(b) write(a) temp:= b* 0.7 b:= b - temp write(b) read(B)

In this case both transaction working on different types of item so no chance for data inconsistency so they can run concurrently.

Sign up to vote on this title
UsefulNot useful