テーブルロックについて。
ロックはUNLOCK TABLESコマンドが、クライアントから実行された時にリリースされる。
※ クライアントが他のロックをLOCK TABLESによって取得リクエストをかけた時
※ 接続を切断した時
※ ABORTされた時(KILLコマンドなど)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MYSQLでのロック動作確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
mysql> LOCK TABLES company READ; LOCK TABLES innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
※ このクエリーだとcompanyは直ぐにリリースされて、innodb_monitorのみロックされる。
mysql>
mysql> LOCK TABLES company READ,innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)
mysql>
■ mysql>SELECT * FROM innodb_monitor;
ここで別のクライアントからselectしたら他のプロセスのwrite lockにて待たされる。
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql>
■ mysql>SELECT * FROM innodb_monitor;
ロックが解放されたので、select結果が表示される。