日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

java连接mysql执行ddl_Mysql 执行DDL导致Waiting for table metadata lock

發(fā)布時(shí)間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java连接mysql执行ddl_Mysql 执行DDL导致Waiting for table metadata lock 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL在進(jìn)行alter table等DDL操作時(shí),有時(shí)會(huì)出現(xiàn)Waiting for table metadata lock的等待場(chǎng)景。而且,一旦alter table TableA的操作停滯在Waiting for table metadata lock的狀態(tài),后續(xù)對(duì)TableA的任何操作(包括讀)都無(wú)法進(jìn)行,因?yàn)樗麄円矔?huì)在Opening tables的階段進(jìn)入到Waiting for table metadata lock的鎖等待隊(duì)列。如果是生產(chǎn)環(huán)境的核心表出現(xiàn)了這樣的鎖等待隊(duì)列,就會(huì)造成災(zāi)難性的后果,比如電商中的訂單表。

遇到該種情況的解決方法:

1、show processlist

通過(guò)show processlist可以看到TableA上有正在進(jìn)行的操作(包括讀),此時(shí)alter table語(yǔ)句無(wú)法獲取到metadata 獨(dú)占鎖,會(huì)進(jìn)行等待。找到sid, 對(duì)應(yīng)字段為id,直接kill

2、select * from information_schema.innodb_trx\G

通過(guò)select * from information_schema.innodb_trx\G

找到未提交的事務(wù)的sid, 對(duì)應(yīng)字段為trx_mysql_thread_id, 直接kill

3、select * from performance_schema.events_statements_current;

通過(guò)show processlist看不到TableA上有任何操作,在information_schema.innodb_trx中也沒(méi)有任何進(jìn)行中的事務(wù)。這很可能是因?yàn)樵谝粋€(gè)顯式的事務(wù)中,對(duì)TableA進(jìn)行了一個(gè)失敗的操作(比如查詢了一個(gè)不存在的字段),這時(shí)事務(wù)沒(méi)有開(kāi)始,但是失敗語(yǔ)句獲取到的鎖依然有效,沒(méi)有釋放。從performance_schema.events_statements_current表中可以查到失敗的語(yǔ)句。

找到sid,對(duì)應(yīng)字段為thread_id, 直接kill

4、lock_wait_timeout

最好的方式是設(shè)置過(guò)期時(shí)間,避免長(zhǎng)時(shí)間metadata 鎖等待

總結(jié)

以上是生活随笔為你收集整理的java连接mysql执行ddl_Mysql 执行DDL导致Waiting for table metadata lock的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。