MySQL 8.0 客戶端工具表設計導致表級鎖鎖表
阿新 • • 發佈:2018-12-20
測試環境
確認測試當前表沒有任何表級鎖、查詢performance_schema下metadata_locks得到結果。
用Mysql客戶端工具,選擇表設計開啟
從中發現該表家了一個SHARED_HIGH_PRIO 鎖,關閉該表設計視窗後,該鎖不消失,除關閉連線。
新開個連線,在此對該表開啟表設計,發現在新增一個SHARED_HIGH_PRIO 鎖
這時修改該表的DDL結構,發現客戶端工具會卡死。從metadata_locks表中發現,該表SHARED_HIGH_PRIO升級為SHARED_UPGRADABLE 並且加了一個EXCLUSIVE的X鎖。
此時該表的一切DML、DDL都無法進行操作,直接導致該表鎖死。如果是生產上這樣操作,那一首涼涼送給你。
解決方法:
通過OWNER_THREAD_ID 查詢threads表 找到對應PROCESSLIST_ID程序號,將之前SHARED_HIGH_PRIO鎖相關程序殺掉即可。
使用mysql 管理使用者進入命令視窗介面:
kill 6205 殺掉對應的 SHARED_HIGH_PRIO鎖的程序。
最後,殺掉該程序後,之前修改的該表DDL通過。
總的來說,以後在生產上,MySQL對應表結構修改,最好做到許可權控制,否則到時候出問題不好解決。