Concurrency Problems in DBMS

Concurrency Problems in DBMS

  • When multiple transactions execute concurrently in an uncontrolled or unrestricted manner, then it might lead to several problems.
  • Such problems are called as concurrency problems.
  • The concurrency problems are...
  • Dirty Read Problem
    • Reading the data written by an uncommitted transaction is called as dirty read.
    • This read is called as dirty read because-
    • There is always a chance that the uncommitted transaction might roll back later.
    • Thus, the uncommitted transactions might make other transactions read a value that does not even exist.
    • This leads to inconsistency of the database.
    • Example:
      • Here, T1 reads the value of A.
      • T1 updates the value of A in the buffer.
      • T2 reads the value of A from the buffer.
      • T2 writes the updated the value of A.
      • T2 commits.
      • T1 fails in later stages and rolls back.
      • In this example,
      • T2 reads the dirty value of A written by the uncommitted transaction T1.
      • T1 fails in later stages and roll backs.
      • Thus, the value that T2 read now stands to be incorrect.
      • Therefore, database becomes inconsistent.
  • Unrepeatable Read Problem:
    • This problem occurs when a transaction gets to read unrepeated i.e. different values of the same variable in its different read operations even when it has not updated its value.
    • Example:
      • Here, T1 reads the value of X (= 10 say).
      • T2 reads the value of X (= 10).
      • T1 updates the value of X (from 10 to 15 say) in the buffer.
      • T2 again reads the value of X (but = 15).
      •  In this example,
      • T2 gets to read a different value of X in its second reading.
      • T2 wonders how the value of X got changed because according to it, it is running in isolation.
  • Lost Update Problem
    • This problem occurs when multiple transactions execute concurrently and updates from one or more transactions get lost.
    • Example:
      • Here, T1 reads the value of A (= 10 say).
      • T2 updates the value to A (= 15 say) in the buffer.
      • T2 does blind write A = 25 (write without read) in the buffer.
      • T2 commits.
      • When T1 commits, it writes A = 25 in the database.
      • In this example,
      • T1 writes the overwritten value of X in the database.
      • Thus, an update from T1 gets lost.
  • Phantom Read Problem
    • This problem occurs when a transaction reads some variable from the buffer and when it reads the same variable later, it finds that the variable does not exist.
    • Example:
      • Here, T1 reads X.
      • T2 reads X.
      • T1 deletes X.
      • T2 tries reading X but does not find it.
      • In this example,
      • T2 finds that there does not exist any variable X when it tries reading X again.
      • T2 wonders who deleted the variable X because according to it, it is running in isolation.
  • How to Avoiding Concurrency Problems?
    • To ensure consistency of the database, it is very important to prevent the occurrence of the above problems.
    • Concurrency Control Protocols help to prevent the occurrence of the above problems and maintain the consistency of the database.

Thanks a lot for query or your valuable suggestions related to the topic.

Previous Post Next Post

Contact Form