MySQL のテーブルがロックされているかどうかを照会する方法
MySQLでは、次の方法でテーブルをロックされているかどうか照会できます
- SHOW OPEN TABLESコマンドでテーブルの状態を調べましょう。このコマンドは現在開かれているすべてのテーブルを表示し、テーブルの状態やロック情報を含みます。テーブルがロックされている場合、ロック状態が表示されます。
SHOW OPEN TABLES LIKE 'table_name';
- INFORMATION_SCHEMAテーブルを使用してテーブルのロック状態を問い合わせます。以下のクエリステートメントを使用します。table_nameをクエリを実行するテーブル名に置き換えます。
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE TABLE_NAME = 'table_name';
このメソッドを使用すると、指定された表をロックした、すべてのトランザクションに関する情報が返されます。
- テーブルのロック状態を照会するにはSHOW ENGINEコマンドを使用します。次のクエリ ステートメントを使用して、table_nameを照会するテーブルの名前に置き換えます。
SHOW ENGINE INNODB STATUS;
検索結果から、ロック情報を取得可能なテーブル名を探します。
テーブルがロックされているかどうかを確認したい場合は、InnoDB ストレージエンジンではロックの情報はトランザクション中でのみ表示されることに注意してください。その場合、確実にトランザクションを開始している必要があります。