8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | 23c | Misc | PL/SQL | SQL | RAC | WebLogic | Linux

Home » Articles » Mysql » Here

MySQL : Identify Locked Tables

This article describes how to identify locked tables in MySQL using the SHOW OPEN TABLES command.

Basic

In MySQL, locked tables are identified using the SHOW OPEN TABLES command.

SHOW OPEN TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

In its simplest form is displays all locked tables.

mysql> show open tables;
+--------------------+----------------------------------------------------+--------+-------------+
| Database           | Table                                              | In_use | Name_locked |
+--------------------+----------------------------------------------------+--------+-------------+
| test1              | tab1                                               |      1 |           0 |
| test1              | tab2                                               |      1 |           0 |
| test2              | tab3                                               |      1 |           0 |
+--------------------+----------------------------------------------------+--------+-------------+
3 rows in set (0.00 sec)

mysql>

All open tables in the table cache are listed, but the IN_USE column indicates of the table is locked. When the first lock is taken, the value increments to 1. Subsequent lock requests will be blocked until the initial lock is released. Each blocked lock request increments the counter further, such that a count of 5 represents the initial lock and 4 blocked locks.

The NAME_LOCKED columns indicates whether the table name is locked, due to a drop or rename request.

Filtered

The output can be restricted to a single databases as follows.

mysql> show open tables in test2;
+--------------------+----------------------------------------------------+--------+-------------+
| Database           | Table                                              | In_use | Name_locked |
+--------------------+----------------------------------------------------+--------+-------------+
| test2              | tab3                                               |      1 |           0 |
+--------------------+----------------------------------------------------+--------+-------------+
1 row in set (0.00 sec)

mysql>

The LIKE and WHERE clauses can be used to filter the output further.

mysql> show open tables where in_use > 1;
Empty set (0.00 sec)

mysql>


mysql> show open tables like 'tab3';
+--------------------+--------------+--------+-------------+
| Database           | Table        | In_use | Name_locked |
+--------------------+--------------+--------+-------------+
| test2              | tab3         |      1 |           0 |
+--------------------+--------------+--------+-------------+
1 row in set (0.00 sec)

mysql>

For more information see:

Hope this helps. Regards Tim...

Back to the Top.