
atitit查詢表修改表字段沒反應(yīng)--解鎖鎖定的表 查詢表修改表字段沒反應(yīng) 要是使用gui 沒反應(yīng),最好使用cmd 方式,不卉不個(gè)gui 鎖上.. ALTER TABLE t_mb_awardweixin MODIFY awardChoiceNumLeft int(11) DEFAULT NULL #-----分析.. 1.首先,查詢by另一個(gè)表格, 要是
atitit查詢表修改表字段沒反應(yīng)--解鎖鎖定的表
查詢表修改表字段沒反應(yīng)
要是使用gui 沒反應(yīng),最好使用cmd 方式,不卉不個(gè)gui 鎖上..
ALTER TABLE t_mb_awardweixin MODIFY awardChoiceNumLeft int(11) DEFAULT NULL
#-----分析..
1.首先,查詢by另一個(gè)表格, 要是能查詢,顯示不是max conn的問題..也許表格鎖定了..
2. show full PROCESSLIST 要是看到個(gè)Waiting for table metadata lock
3. 查詢鎖上的表格. show OPEN TABLES where In_use > 0;
作者 老哇的爪子 Attilax 艾龍, EMAIL:1466519819@qq.com
轉(zhuǎn)載請注明來源: http://blog.csdn.net/attilax
#---------原因MDL:::
一個(gè)沒提交的事務(wù)使用了A表, 另外一個(gè)session 對A表進(jìn)行alter,出現(xiàn)waiting for table metadata lock
在insert into t select * from share 運(yùn)行時(shí), 同時(shí)執(zhí)行alter table t add index(play_count),
alter table語句會Waiting for table metadata lock, 直到insert into … select 語句結(jié)束。
概述
隨著5.5.3引入MDL,更多的Query被“Waiting for table metadata lock”給'炕'了
SHOW PROCESSLIST的輸出也有之前的"Locked"變得粒度更加細(xì)的'Waiting for table metadata lock'
引入MDL,當(dāng)需要訪問、修改表結(jié)構(gòu)時(shí),都需要對元數(shù)據(jù)上鎖(讀/寫)
MDL在Server層,保護(hù)表數(shù)據(jù)結(jié)構(gòu),而非數(shù)據(jù)本身。Server比之前版本繁忙多了
MDL意味著DDL,一旦DDL被阻塞,那么面向該表的所有Query都會被掛起,包括Select,不過5.6作了改進(jìn),5.5可通過參數(shù)控制
3.應(yīng)用中使用了連接池..但是又要ddl...連接池老是連續(xù)start 有些conn, kill李韓式有自動開始..造成后面兒ddl 不能執(zhí)行..
#----解決
1. 設(shè)置lock_wait_timeout=50 ,默認(rèn)1年.. 僅僅下一次時(shí)間生效..當(dāng)前只有kill 才可以解決..
2. kill 鎖上 conn ( DDM alter 的query sql) ,,,,別的query 事務(wù)奏能連續(xù)蘭..
3. 對付連接池, 可以設(shè)置timeout自動關(guān)閉連接.. 但是要重啟生效..要是應(yīng)用重要性,不能重啟,可以使用防火墻阻止java進(jìn)程 訪問網(wǎng)絡(luò)... 批處理kill id ,, 查看一下,應(yīng)該不會自動連接池連接上了,,,在ddl操作,在放開.....
#----結(jié)論:
在準(zhǔn)備alter table tbl 的時(shí)候,先觀察一下,有沒有正在運(yùn)行的,且在短時(shí)間內(nèi)無法結(jié)束的sql語句在操作tbl表
結(jié)論:
當(dāng)需要對"熱表"做DDL,需要特別謹(jǐn)慎,否則,容易造成MDL等待,導(dǎo)致連接耗盡或者拖垮Server
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com