MySQL新增索引偶遇waiting for table metadata lock
今天抽時間把前段時間出現的故障進行梳理。
8月5日晚對某生產庫相關表加索引
alter table user_address add index idx_create_time(create_time);
主庫正常新增完畢,觀察到從庫出現較高的延遲,show processlist檢視各個執行緒狀態,發現出現大批量的Waiting for table metadata lock
由於是第一次遇到,所以上網查 metadata lock(MDL)的相關資訊。
select * from information_schema.innodb_trx\G
看到有個對user_address表的訪問一直沒有結束
根據經驗判斷這是一個異常的SQL,於是kill掉這個執行緒
然後show processlist:
Waiting for table metadata lock全部消失,並且show slave status \G延遲逐漸降低並消失。
經查閱資料:
1)MySQL5.6之後的版本支援online DDL,建立索引本身不會對錶的增刪改查造成影響,但是由於獲取不到MDL(後設資料鎖),從庫進行索引建立的session就會一直處於Waiting for table metadata lock狀態,導致後續對此表的訪問造成影響。
2)後期操作alter table,可以通過提前檢查information_schema.innodb_trx的事務提交情況,以避免此類情況發生。
參考文件:
https://www.cnblogs.com/digdeep/p/4892953.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30135314/viewspace-2654508/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Waiting for table metadata lockAI
- MySQL DDL Waiting for table metadata lock 解決MySqlAI
- create table if not exists Waiting for table metadata lockAI
- MySQL 5.6 drop database時,table metadata lock等待MySqlDatabase
- 【Mysql】metadata lock鎖MySql
- MYSQL 鎖:metadata lockMySql
- 【MySQL】MetaData Lock 之一MySql
- 【MySQL】MetaData Lock 之二MySql
- 【MySQL】MetaData Lock 之三MySql
- MySQL:Analyze table導致'waiting for table flush'MySqlAI
- mysql觀測METADATA LOCK(MDL)鎖MySql
- mysql metadata lock原理與實現MySql
- MySQL5.7 Waiting FOR TABLE FLUSHMySqlAI
- MySQL 5.6 metadata lock 原始碼解讀MySql原始碼
- MySQL5.7 Waiting for global read lockMySqlAI
- 【MySQL】select for update 的Row Lock 與Table LockMySql
- mysql新增索引MySql索引
- 【mysql】table中新增列MySql
- MySQL:簡單記錄一下Waiting for commit lockMySqlAIMIT
- mysql metadata lock後設資料鎖之鎖狀態lock_status流轉圖MySql
- MYSQL METADATA LOCK(MDL LOCK)學習(1) 理論知識和加鎖型別測試MySql型別
- 【Mysql】從庫大量select堵塞,Waiting for table flush 狀態MySqlAI
- MySQL哪些情況需要新增索引?MySql索引
- MySQL表結構變更引起的Metadata Lock|如何定位DDL被阻塞MySql
- MySQL 5.7 ANALYZE TABLE分析索引的統計資訊MySql索引
- Waiting for table阻塞查詢的問題AI
- enable table lock 的enqueue等待ENQ
- ORA-04021: timeout occurred while waiting to lock objectWhileAIObject
- Another app is currently holding the yum lock; waiting for it to exit...APPAI
- ORA-04021,timeout occurred while waiting to lock objectWhileAIObject
- mysql 新增時,唯一索引衝突時更新MySql索引
- MySQL metadata鎖實驗MySql
- Get detailed table(many other objects) structure with dbms_metadataAIObjectStruct
- Oracle blocking issue with lock table in exclusive modeOracleBloC
- mysql lock操作MySql
- ORA-02049: timeout: distributed transaction waiting for lockAI
- 【MySQL】mysql optimize tableMySql
- yum 提示 Another App is currently holding the yum lock; waiting for it to exit...APPAI