大事な機構「metadata lock」 MySQL5.5.3から導入された「metadata lock」。 その目的は、 「トランザクション実行中に触ったテーブルについて、DDLによるテーブル構成情報の変更から守る」 ということ。 そうしないと、ロールバックしようとしたら「テーブルがDropされた!カラムが増えた/減った!、どうしたらいいのよ、このレコード!」とかいうことが発生してしまうから。 公式ドキュメント的には、こちらです。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.10.4 メタデータのロック 面倒くさい、「metadeta lock」 トランザクションの最中に、「SELECT」しかしていないテーブルも、metadeta lockを掴んでしまう、ということ。 よくネットで叩かれている「DBViewer」、定義情報を参照しただけでも、裏でトランザクショ
![MySQL5.6以前でmetadata lock発生の犯人を後追いする - なからなLife](https://cdn-ak-scissors.b.st-hatena.com/image/square/c8fba9422b54d68c2d3c8a21f0aabf825505d520/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51riVcDvAcL.jpg)