unless’s blog

日々のちょっとした技術的なことの羅列

DDL操作のオンラインステータス一覧表

なぜかこれ、いつも見つけられないんだよなぁ
ということで、いつも忘れてなかなか出てこないからここに書いておく

個人的にいつLOCK=NONEをつけられるのかすぐにわすれちゃうけど
世のエンジニアはパッと出てくるものなのだろうか

dev.mysql.com

MySQLでmetadata lockによるreplication遅延

タイトルの通りだが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
等がみられるはず

dev.mysql.com

ちなみに自分が遭遇したのは パーティショニングされているテーブルに定期的にADD PARTITIONしているテーブルに 重めのselect文が重なったことによりReplication遅延を引き起こしていた

select文でもReplication遅延は起きるので注意が必要ということ