如何檢視MySQL資料庫的死鎖資訊

2023-02-25 00:15:11 字數 1947 閱讀 5804

1樓:baby_原來

1. 使用終端或命令提示符登入到mysql,輸入命令:mysql -h -p 3306 -u username -p

解釋:是資料庫ip地址,username是資料庫使用者名稱,輸入命令後,會讓你輸入username對應的密碼,就可以登入了。

2. 如何檢視mysql資料庫的死鎖資訊。

在mysql客戶端下輸入命令:

show engine innodb status \g;

3. 如何定位mysql資料庫的死鎖資訊。

在列印出來的資訊中找到「latest detected deadlock」一節內容,看圖中紅線。

4. 如何分析日誌,定位死鎖原因。

看3裡面的圖,紫色劃線部分。

分析:事務1,等待。

record locks space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`,這個位置的x鎖。

事務2,持有。

record locks space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`這個地方的s鎖。

事務2,等待這個地方的x鎖。

理論上這個事務2是可以提交的不會,死鎖,但是這個事務日誌只列印最後一部分死鎖,資訊,這裡面隱含的條件是,事務1也持有。

record locks space id 553 page no 376 n bits 368 index `index_user_id` of table `tbj`.`score_user`這個地方的s鎖,這樣,事務2不能加x鎖,同時事務1也不能加x鎖,產生死鎖。

èçºî²é¿´mysqlêý¾ý¿âµäëàëøðåï¢

2樓:愛可生雲資料庫

方法1:利用 metadata_locks 檢視。

此方法僅適用於 mysql 以上版本,該版本 performance_schema 新增了 metadata_locks,如果上鎖前啟用了後設資料鎖的探針(預設是未啟用的),可以比較容易的定位全域性鎖會話。

方法2:利用 events_statements_history 檢視此方法適用於 mysql 以上版本,啟用 performance_schema.

eventsstatements_history( 預設未啟用, 預設啟用),該表會 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:重啟試試!

3樓:匿名使用者

用show full processlist;命令就可以了,能顯示出所有的當前session、sql查詢以及狀態。。

mysql 檢視錶 是否有死鎖

如何檢視mysql的兩條語句是否會死鎖

4樓:匿名使用者

看 mysql 日誌。

或者使用 spotlight on mysql 工具。

如何檢視mysql資料庫使用者密碼

1 開啟mysql.exe和mysqld.exe所在的資料夾,複製路徑地址 2 開啟 cmd 命令提示符,轉到上一步中 mysql.exe 所在的資料夾。3 輸入命令 mysqld skip grant tables 回車,此時就跳過了mysql的使用者驗證。注意 輸入此命令後,無法操作命令列,您可...

mysql怎麼檢視正在使用的資料庫

你可以使用 show status 檢視當前連線數。mysql show status where variable name threads connected variable name value threads connected 1 1 row in set 0.00 sec 或者 sho...

MySQL資料庫如何新增列,mysql資料庫有資料怎麼新增欄位

alter table 表名 add 列名 屬性 一般用上邊的語法 但是如果有圖形化工具的話,也可以用圖形化工具,具體的得看你用的是什麼了,不過個人認為還是用語句方便一些 傳統情況 我們先回顧一下,在沒有 立刻加列 功能時,加列操作是怎麼完成的。我們也藉此來熟悉一下本期的圖例 當進行 加列操作 時,...