Locks & Deadlocks

n database systems and multi-threaded applications, locks and deadlocks are critical concepts that ensure data integrity and prevent conflicts. Understanding these concepts helps in designing efficient and safe applications.


1. What is a Lock?

A lock is a mechanism that prevents multiple users or processes from accessing the same resource simultaneously in a way that could cause inconsistencies. Locks are used to maintain data consistency and isolation.

Types of Locks:

  • Shared Lock (Read Lock): Multiple transactions can read a resource simultaneously but cannot modify it.
  • Exclusive Lock (Write Lock): Only one transaction can read or modify the resource at a time.

Locking Modes:

  • Pessimistic Locking: Locks the resource before performing operations to prevent conflicts.
  • Optimistic Locking: Assumes conflicts are rare and checks for conflicts only before committing changes.

2. What is a Deadlock?

A deadlock occurs when two or more processes are waiting for each other to release resources, creating a cycle of dependency where none of the processes can proceed.

Example Scenario:

  • Process A holds Resource 1 and waits for Resource 2.
  • Process B holds Resource 2 and waits for Resource 1.
    Neither process can continue, resulting in a deadlock.

3. Causes of Deadlocks

  • Circular wait: Processes form a circular chain where each process waits for a resource held by the next.
  • Mutual exclusion: Some resources can only be used by one process at a time.
  • Hold and wait: A process holding one resource waits for another resource.
  • No preemption: Resources cannot be forcibly taken from a process.

4. Deadlock Detection and Prevention

Prevention Techniques:

  • Resource Ordering: Assign a global order to resources and acquire them in that order.
  • Request All Resources at Once: Avoid partial acquisition of resources.
  • Timeouts: Abort or rollback a transaction if it takes too long to acquire a resource.

Detection Techniques:

  • Use a wait-for graph to identify cycles in resource allocation.
  • Periodically check for processes that have been waiting longer than a threshold.

5. Handling Deadlocks

  • Transaction Rollback: Abort one of the deadlocked processes to break the cycle.
  • Deadlock Recovery: Identify the victim process based on priority, cost, or age and restart it.
  • Avoidance Algorithms: Apply algorithms like Banker’s Algorithm to ensure safe allocation of resources.

6. Best Practices for Locks & Deadlocks

  • Keep transactions short to reduce the time resources are held.
  • Avoid nested locks whenever possible.
  • Use consistent locking order across all processes.
  • Monitor the system for long waits or repeated deadlocks.

.

Home » Learn Advanced SQL & Database Engineering (SQL-301) > Transactions & Concurrency > Locks & Deadlocks