以下の内容はhttps://ryuichi1208.hateblo.jp/entry/2022/09/11/122442より取得しました。


【MySQL】metadatalock

あるトランザクションで触っている最中のテーブルにDDLを発行するとmetadataロック待ちが発生する。以降のmetadataロック待ちのテーブルへのDMLは全て最初のトランザクションが終わるのを待ち続けるという話。

mysql> desc text;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| old_id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| old_text  | mediumblob       | NO   |     | NULL    |                |
| old_flags | tinyblob         | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> insert into text values(1,"aaa","bbb");
Query OK, 1 row affected (0.00 sec)
mysql> drop table text;
<- 待ち
mysql> select * from text;
<- 待ち

こうなってしまっては最初のクエリを特定してkillする必要がある。

mysql> show processlist;
+----+------+-----------+---------------+---------+------+---------------------------------+--------------------+
| Id | User | Host      | db            | Command | Time | State                           | Info               |
+----+------+-----------+---------------+---------+------+---------------------------------+--------------------+
|  5 | root | localhost | test_database | Query   |    0 | starting                        | show processlist   |
|  6 | root | localhost | test_database | Query   |   35 | Waiting for table metadata lock | drop table text    |
|  7 | root | localhost | test_database | Query   |   11 | Waiting for table metadata lock | select * from text |
+----+------+-----------+---------------+---------+------+---------------------------------+--------------------+
3 rows in set (0.00 sec)



以上の内容はhttps://ryuichi1208.hateblo.jp/entry/2022/09/11/122442より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14