mysql metadata lock

來源:互聯網
上載者:User

標籤:style   color   資料   for   問題   c   

 想必玩過mysql的人對Waiting for table metadata lock肯定不會陌生,一般都是進行alter操作時被堵住了,導致了我們在show processlist 時,看到線程的狀態是在等metadata lock。本文會對mysql 的metadata lock做一個小小的總結,希望對大家有所協助。

     MDL是在5.5才引入到mysql,之前也有類似保護中繼資料的機制,只是沒有明確提出MDL概念而已。但是5.5之前版本(比如5.1)與5.5之後版本在保護中繼資料這塊有一個顯著的不同點是,5.1對於中繼資料的保護是語句層級的,5.5對於metadata的保護是事務層級的。所謂語句層級,即語句執行完成後,無論事務是否提交或復原,其表結構可以被其他會話更新;而事務層級則是在事務結束後才釋放MDL。

     引入MDL後,主要解決了2個問題,一個是事務隔離問題,比如在可重複隔離等級下,會話A在2次查詢期間,會話B對錶結構做了修改,兩次查詢結果就會不一致,無法滿足可重複讀的要求;另外一個是資料複製的問題,比如會話A執行了多條更新語句期間,另外一個會話B做了表結構變更並且先提交,就會導致slave在重做時,先重做alter,再重做update時就會出現複製錯誤的現象。

     5.5以後,什麼情況下會碰到MDL鎖,我結合實際情況舉3個會出現MDL的情境,來分析MDL加鎖時機。下文的.測試都是以mysql 5.5這個版本為基準,沒有考慮到online ddl,下一篇博文會詳細介紹5.6的online ddl。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.