當前位置:成語大全網 - 書法字典 - MYSQL數據庫如何查看哪些表被鎖定?

MYSQL數據庫如何查看哪些表被鎖定?

以下五種方法可以快速定位全局鎖的位置,僅供參考。

方法1:使用元數據_鎖視圖。

此方法僅適用於MySQL或更高版本,該版本在performance_schema中添加了metadata_locks。如果在鎖定之前啟用了元數據鎖定探測(默認情況下未啟用),則可以輕松定位全局鎖定會話。

方法二:使用events_statements_history視圖該方法適用於MySQL或以上版本。If性能_模式。Events Statements _ History已啟用(默認情況下5.6未啟用,默認情況下5.7已啟用),該表將在SQL歷史中執行。如果請求太多,早期信息將被自動清除,並且有可能清除鎖定會話的信息。

方法三:使用gdb工具如果之前無法使用或啟用以上兩種方法,可以嘗試第三種方法。使用gdb查找所有線程信息,查看每個線程中持有全局鎖的對象,並輸出相應的會話ID。為了方便快速定位,我以腳本形式編寫了它。您也可以使用gdb交互模式,但在附加mysql進程後,mysql將完全掛起,並且讀取請求將受到影響。不建議使用交互模式。

方法4:顯示進程列表

如果備份程序使用特定用戶執行備份,如果是根用戶備份,時間值越大,舉行鎖定會話的概率越大。如果業務也是由root訪問的,關鍵是state和info為空。這裏有壹個快速過濾的小技巧,過濾後嘗試kill對應的ID,然後觀察是否有會話處於wait全局讀取鎖定狀態。

方法五:嘗試重啟!