mysql 中繼資料鎖 Meta Data lock

來源:互聯網
上載者:User

標籤:waiting for table metadata lock


什麼是MDL

MDL,Meta Data lock,中繼資料鎖,一般稱為字典鎖。字典鎖與資料鎖相對應。字典鎖是為了保護資料對象被改變,一般是一些DDL會對字典對象改變,如兩個事物,事物1先查詢表,然後事物2試圖alter,其首先需要等待事物1結束(提交或復原),此時的狀態便是Waiting for table metadata lock,然後才能獲得字典鎖。後續對TableA的任何操作(包括讀)都無法進行,也會在Opening tables的階段進入Waiting for table metadata lock的隊列。如果是線上業務的核心表出現了這樣的鎖等待隊列,就會造成災難性的後果。資料鎖是保護表中的資料,如兩個事物同時更新一行時,先得到row lock的事務會先執行,後者只能等待。

出現的情況:

情境一:

通過show processlist可以看到TableA上有進行中的操作(包括讀),此時alter table語句無法擷取到metadata 獨佔鎖,會進行等待。出現Waiting for table metadata lock


情境二:

通過show processlist看不到TableA上有任何操作,但實際上存在有未提交的事務,可以information_schema.innodb_trx中查看到。在事務沒有完成之前,TableA上的鎖不會釋放,alter table同樣擷取不到metadata的獨佔鎖。

情境三:

通過show processlist看不到TableA上有任何操作,在information_schema.innodb_trx中也沒有任何進行中的事務。這很可能是因為在一個顯式的事務中,對TableA進行了一個失敗的操作(比如查詢了一個不存在的欄位),這時事務沒有開始,但是失敗語句擷取到的鎖依然有效。從performance_schema.events_statements_current表中可以查到失敗的語句。


本文出自 “mysql大資料實戰” 部落格,請務必保留此出處http://277963679.blog.51cto.com/6966371/1976802

mysql 中繼資料鎖 Meta Data lock

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.