本文目錄一覽:
MYSQL數據庫怎麼查看 哪些表被鎖了
以下五種方法可以快速定位全局鎖的位置,僅供參考。
方法1:利用 metadata_locks 視圖
此方法僅適用於 MySQL 5.7 以上版本,該版本 performance_schema 新增了 metadata_locks,如果上鎖前啟用了元數據鎖的探針(默認是未啟用的),可以比較容易的定位全局鎖會話。
方法2:利用 events_statements_history 視圖此方法適用於 MySQL 5.6 以上版本,啟用 performance_schema.eventsstatements_history(5.6 默認未啟用,5.7 默認啟用),該表會 SQL 歷史記錄執行,如果請求太多,會自動清理早期的信息,有可能將上鎖會話的信息清理掉。
方法3:利用 gdb 工具如果上述兩種都用不了或者沒來得及啟用,可以嘗試第三種方法。利用 gdb 找到所有線程信息,查看每個線程中持有全局鎖對象,輸出對應的會話 ID,為了便於快速定位,我寫成了腳本形式。也可以使用 gdb 交互模式,但 attach mysql 進程後 mysql 會完全 hang 住,讀請求也會受到影響,不建議使用交互模式。
方法4:show processlist
如果備份程序使用的特定用戶執行備份,如果是 root 用戶備份,那 time 值越大的是持鎖會話的概率越大,如果業務也用 root 訪問,重點是 state 和 info 為空的,這裡有個小技巧可以快速篩選,篩選後嘗試 kill 對應 ID,再觀察是否還有 wait global read lock 狀態的會話。
方法5:重啟試試!
MySQL數據庫中查詢表是否被鎖以及解鎖
1.查看錶被鎖狀態
2.查看造成死鎖的sql語句
3.查詢進程
4.解鎖(刪除進程)
5.查看正在鎖的事物 (8.0以下版本)
6.查看等待鎖的事物 (8.0以下版本)
數據庫鎖表記錄等級怎麼看出來
數據庫鎖表記錄等級可以在數據庫的系統裡面點擊記錄,然後打開查看,選擇鎖表記錄等級就可以了。
原創文章,作者:ANQG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144346.html