1. 程式人生 > >MySQL 8.0 客戶端工具表設計導致表級鎖鎖表

MySQL 8.0 客戶端工具表設計導致表級鎖鎖表

測試環境

確認測試當前表沒有任何表級鎖、查詢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對應表結構修改,最好做到許可權控制,否則到時候出問題不好解決。