Skip to main content

Explain Two-Phase Locking Techniques with Algorithm In DBMS - Computer science tutorial point

Two-Phase Locking Techniques

Locking is an operation which secures (a) permission to Read or (b) permission to write a data item for a transaction.  Example: Lock (X).  Data item X is locked in behalf of the requesting transaction. 
Unlocking is an operation which removes these permissions from the data item.  Example: Unlock (X).  Data item X is made available to all other transactions. Lock and Unlock are Atomic operations

Two-Phase Locking Techniques: Essential components
1) Two locks modes (a) shared (read) and (b) exclusive (write).
Shared mode: shared lock (X).  More than one transaction can apply share lock on X for reading its value but no write lock can be applied on X by any other transaction.

Exclusive mode: Write lock (X).  Only one write lock on X can exist at any time and no shared lock can be applied by any other transaction on X.
Conflict matrix


2) Lock Manager: Managing locks on data items  Lock table: Lock manager uses it to store the identify of transaction locking a data item, the data item,lock mode and pointer to the next data item locked. One simple way to implement a lock table is through linked list.



3) Database requires that all transactions should be well- formed.  A transaction is well-formed if:


      It must lock the data item before it reads or writes to it.
      It must not lock an already locked data items and it must not try to unlock a free data item

4) The following code performs the lock operation:
       B:   if LOCK (X) = 0 (*item is unlocked*)
       then LOCK (X) ¬ 1 (*lock the item*)
       else begin
             wait (until lock (X) = 0) and
             the lock manager wakes up the transaction);


goto B


    end;
The following code performs the unlock operation:
LOCK (X) ¬ 0 (*unlock the item*)
if any transactions are waiting then wake up one of the waiting the transaction.

5) The following code performs the read operation:

    B: if LOCK (X) = “unlocked” then
           begin LOCK (X) ¬ “read-locked”;
               no_of_reads (X) ¬ 1;
  end
  else if LOCK (X) ¬ “read-locked” then
       no_of_reads (X) ¬ no_of_reads (X) +1

else begin wait (until LOCK (X) = “unlocked” and
  the lock manager wakes up the transaction);
                go to B
               end;


6) The following code performs the write lock operation:
    B: if LOCK (X) = “unlocked” then
          begin LOCK (X) ¬ “read-locked”;
                 no_of_reads (X) ¬ 1;
end
else if LOCK (X) ¬ “read-locked” then
   no_of_reads (X) ¬ no_of_reads (X) +1
    else begin wait (until LOCK (X) = “unlocked” and
          the lock manager wakes up the transaction);
                go to B
               end;

7) The following code performs the unlock operation:
    if LOCK (X) = “write-locked” then
       begin LOCK (X) ¬ “unlocked”;
          wakes up one of the transactions, if any
end
else if LOCK (X) ¬ “read-locked” then


    begin
          no_of_reads (X) ¬ no_of_reads (X) -1
          if  no_of_reads (X) = 0 then                    
          begin
              LOCK (X) = “unlocked”;
             wake up one of the transactions, if any
          end
Lock conversion
    Lock upgrade: existing read lock to write lock
if Ti has a read-lock (X) and Tj has no read-lock (X) (i ¹ j) then
 convert read-lock (X) to write-lock (X)
   else
    force Ti to wait until Tj unlocks X
  Lock downgrade: existing write lock to read lock
  Ti has a write-lock (X) (*no transaction can have any lock on X*)
  convert write-lock (X) to read-lock (X)
   
Two-Phase Locking Techniques: The algorithm 



Two Phases:  (a) Locking (Growing) (b) Unlocking (Shrinking).


Locking (Growing) Phase:  A transaction applies locks     (read or write) on desired data items one at a time.

Unlocking (Shrinking) Phase: A transaction unlocks its locked data items one at a time.

Requirement:  For a transaction these two phases must be mutually exclusively, that is, during locking phase unlocking phase must not start and during unlocking phase locking phase must not begin.

























Two-Phase Locking Techniques: The algorithm   
T’1                                       T’2                   
read_lock (Y);         read_lock (X);             T1 and T2 follow twophase
read_item (Y);         read_item (X);         policy but they are subject to
write_lock (X);        Write_lock (Y);          deadlock, which must be
unlock (Y);                 unlock (X);               deals with.
read_item (X);         read_item (Y);  
X:=X+Y;                            Y:=X+Y;                   
write_item (X);       write_item (Y); 
unlock (X);              unlock (Y);        

Two-Phase Locking Techniques: The algorithm
Two-phase policy generates two locking algorithms (a) Basic and (b) Conservative.
Conservative:  Prevents deadlock by locking all desired data items before transaction begins execution.

Basic:  Transaction locks data items incrementally.  This may cause deadlock which is dealt with.

    Strict:  A more stricter version of Basic algorithm          where unlocking is performed after a transaction          terminates (commits or aborts and rolled back).This  is the most commonly used two-phase locking algorithm.
    











Comments

Popular posts from this blog

Important MCQ of RDBMS( Relational database management system)-FCST

Important MCQ of RDBMS  1. A RDBMS consists a collection of ? a. Tables b. Fields c. Records d. Keys  ANS/- a. table 2. The term attribute refers to a ___________ of a table a. Record b. Tuple c. Column d. Key   ans/- c. Column 3. In relational model, the row of table is known to be ?  a. Relation b. Entity field c. Tuple d. Attribute  ans/- C. Tuple 4. . Address field of a person should not be part of primary key, since it is likely to ? a. Dependent b. Too long c. Changed d. Not changed  ans/- c. Changed 5. The relational model is concerned with ? a. Data structure and Data integrity b. Data Manipulation c. Both a and b d. None of these  ans/- c. Both a and b 6. Which is the false statement from the following ? a. A veiw is a named derived table b. A name relation is variable c. A veiw is a named reation and is virtual d. None of these  ans/- d. None of these 7. The union of primary key...

Short notes on database schema & database independence- computer science fundamentals tutorial

            Database Schema &  Data Independence PDF version of this post also available. to download the click the link given at the end of this post.           Database Schema : -  A database schema   is the skeleton structure that represents the logical view of the entire database. It defines how the data is organized and how relat ion among them are associated.  Database schema  formulates all the constrains that are to be applied on the data. A database schema defines its entities and the relationship among them. It contains descriptive details of the database which can be described by means of schema diagram. A database schema can be divided into two categories.   I.     Physical database schema : - this schema contain to the actual storage of data and its form of storage like files, indices etc. It defines how the data will be stored in a secondary storage. ...

C program to find factorial of number using function - FCST

C program to find factorial of number using function Problem description In this program take number as input & then it show the factorial of given number as output. Problem solution 1.take a number as input. 2.declare the void Fact(int) function globally if you want or declare the function prototype  into the main() function. 3.after taking input call the function into main() . 4.then define the function definition. 5.after taking function definition for loop started in this function definition. 6. In for loop i=1 & fact=1 then fact=1. after this loop is continue and incremented by1 until the n is grater than equal to i. continuity of loop is depend on what number take as input .  Program code: #include<stdio.h> void Fact(int);//function prototype declearation int i,fact=1;//global variable declearation int main()  { int n; printf("\n enter the  number:"); scanf("%d",&n); Fact(n);//function call } //func...