Table Locking in MySQL

Introduction

When multiple users access a database at the same time, there can be conflicts while reading or modifying data.

To handle this, MySQL provides table locking, which helps maintain data consistency and integrity.


What is Table Locking

Table locking is a mechanism that restricts access to a table while it is being used by a transaction.

It ensures that:

  • Data is not modified incorrectly.

  • Conflicts between users are avoided.


Types of Table Locks

There are mainly two types of locks in MySQL:

1. Read Lock

  • Allows multiple users to read the table

  • Does not allow writing (INSERT, UPDATE, DELETE)


2. Write Lock

  • Allows only one user to modify the table

  • Blocks both reading and writing by others


LOCK TABLES Syntax

LOCK TABLES table_name READ; 

or

LOCK TABLES table_name WRITE; 

Examples

Read Lock Example

LOCK TABLES Students READ; 

Other users can read but cannot modify the table.


Write Lock Example

LOCK TABLES Students WRITE; 

Only the current session can read and write the table.


UNLOCK TABLES

After locking a table, you must release the lock using:

UNLOCK TABLES; 

This allows other users to access the table again.


Example Scenario

Suppose you are updating important records:

LOCK TABLES Students WRITE; UPDATE Students SET age = age + 1; UNLOCK TABLES; 

This ensures no other user interferes during the update.


Why Table Locking is Important

  • Prevents data inconsistency

  • Avoids conflicts between users

  • Ensures safe data updates

  • Useful in multi-user environments


Important Notes

  • Locks are session-based

  • Forgetting to unlock can block other users.

  • InnoDB often uses row-level locking instead.


Common Mistakes

  • Forgetting to use UNLOCK TABLES

  • Using write locks unnecessarily

  • Blocking other users unintentionally


Key Points to Remember

  • Table locking controls access to tables

  • Use LOCK TABLES to lock.

  • Use UNLOCK TABLES to release

  • Supports READ and WRITE locks

  • Important for data consistency