Encyclopedia > Strict two-phase locking

  Article Content

Strict two-phase locking

In computer science, strict two-phase locking (Strict 2PL) is a locking method used in database management systems.

The two rules of Strict 2PL are:

  1. If a transaction T wants to read/write an object, it must request a shared/exclusive lock on the object.
  2. All locks held by transaction T are released when T commits (and not before).

Here is an example of Strict 2PL in action with interleaved actions.

<math>D = \begin{bmatrix}
T1 & T2 \\ S(A) & \\ R(A) & \\
  & S(A)  \\
 & R(A) \\
 & X(B)\\
 & R(B) \\
 & W(B)\\

 & Com. \\
X(C) & \\ R(C) & \\ W(C) & \\ Com. &\end{bmatrix}</math>

or in text form:

T1: S(A), R(A); T2: S(A), R(A), X(B), R(B), W(B), Commit; T1: X(C), R(C), W(C), Commit

where

  • S() is a shared lock action on an object
  • X() is an exclusive lock action on an object
  • R() is a read action on an object
  • W() is a write action on an object

Strict 2PL prevents transactions reading uncommitted data, overwriting uncommitted data, and unrepeatable reads. It does not guarantee that deadlocks cannot occur, which can be important in real time systems[?], and may additionally be difficult to enforce in distributed data bases[?], or fault tolerant[?] systems with multiple redundancy.

A deadlocked schedule supposedly allowed in Strict 2PL:

<math>G = \begin{bmatrix}
T1 & T2\\ X(A) & \\
  & X(B) &  \\
X(B) & \\
 & X(A) \end{bmatrix}</math>

Text: T1: X(A) T2:X(B) T1:X(B) T2: X(A)

T1 is waiting for T2's lock on B to be released, while T2 is waiting for T1's lock on A to be released. These transactions cannot proceed and is deadlocked.

If an user wishes to guarantee that no deadlocks occur, 2PL would be one option. Assigning Timestamps would be another.



All Wikipedia text is available under the terms of the GNU Free Documentation License

 
  Search Encyclopedia

Search over one million articles, find something about almost anything!
 
 
  
  Featured Article
242

... Contents 242 Centuries: 2nd century - 3rd century - 4th century Decades: 190s 200s 210s 220s 230s - 240s - 250s 260s 270s 280s 290s Years: 237 238 239 240 241 ...

 
 
 
This page was created in 57 ms