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

type casting in C. - computer science fundamentals tutorial

Typecasting in C Typecasting is also known as "forced conversion". It refers to changing variable one data type to another data type.          Typecasting in can be certified into following two types: - 1) Implicit type casting. 2) Explicit type casting. Implicit type casting : - It is also known as "Automatic type conversion". It is done by compiler on its own without any external trigger from user. Generally takes place when in an expression more than one data type is present in such condition. Type conversion take places to avoid data lose. Example : - #include<stdio.h> main() {   char y = 'a';   int b = y; printf("%c",y); printf("%d",b); } Explicit Type casting : - This process also called 'Type casting' and it is user defined . Here the user can type cast the result to make it of particular data type. Example : - #include<stdio.h> main() { int m...

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...

Solve-write C program to find grade of student by using nested else-if statement

C program to find grade of student by using nested else-if statement Problem Description This program take input as your number then show your grade. Problem Solution 1. enter your marks as input. 2. then check your marks with 'If' block's condition. if it satisfied then show your grade as output. 3. if it not satisfied then it checks with all else-if block's condition repeatedly. 4. print the grade according to your given marks as input and exit. Program codes:-   #include<stdio.h> main() { int n; printf("\n enter the marks:"); scanf("%d",&n); if(n>89) printf("O"); else if(n>79) printf("E"); else if(n>69) printf("A"); else if(n>59) printf("B"); else if(n>49) printf("C"); else if(n>39) printf("D"); else printf("F"); } Program explanation:- 1. enter your marks. for example we take 70 . ...