なぜかこれ、いつも見つけられないんだよなぁ
ということで、いつも忘れてなかなか出てこないからここに書いておく
個人的にいつLOCK=NONE
をつけられるのかすぐにわすれちゃうけど
世のエンジニアはパッと出てくるものなのだろうか
なぜかこれ、いつも見つけられないんだよなぁ
ということで、いつも忘れてなかなか出てこないからここに書いておく
個人的にいつLOCK=NONE
をつけられるのかすぐにわすれちゃうけど
世のエンジニアはパッと出てくるものなのだろうか
タイトルの通りだがMySQL 5.6系においてmetadataのlockによって
selectしただけでreplication遅延が起きることがある
割と公式ドキュメントの記載もわかりずらかったりするが
tableのmetadataを更新するような処理(DDL)を発行した時に
そのtableに重めのselect文を別ブロセスなりが掛けていたりすると
selectがmetadataのlockを取得しているためDDL文がlock待ちで実行できずに
replication遅延が起きる
show processlist
等でその時の状況を確認すると
Waiting for table metadata lock
等がみられるはず
ちなみに自分が遭遇したのは
パーティショニングされているテーブルに定期的にADD PARTITION
しているテーブルに
重めのselect文が重なったことによりReplication遅延を引き起こしていた
select文でもReplication遅延は起きるので注意が必要ということ