1. 程式人生 > >Mysql InnoDB鎖

Mysql InnoDB鎖

inf 添加 lang ... ref lock 查詢 分享圖片 dead

行鎖模式以及加鎖方法:

共享鎖:X鎖

lock in share mode:共享鎖(x鎖)

開啟兩個事務,set autocommit=0的含義是設置當前session禁止自動提交,需要顯示commit才可以提交。詳見:https://www.cnblogs.com/langtianya/p/4777662.html。

表結構(自己去建表啊...):

技術分享圖片

首先對sessionA添加lock in share mod,

技術分享圖片

這時共享鎖就已經添加上了,sessionB仍然可以查詢記錄並且可以添加lock in share mode

技術分享圖片

SessionA對當前Session進行update修改數據時就會進入死鎖狀態(看當前語句已經沒有反應了並且右下角的查詢時間在一直增加)

技術分享圖片

在SessionB中對鎖住的這行記錄進行修改時就可以解除死鎖狀態,SessionB中輸出DeadlockFound....

技術分享圖片

此時SessionA就獲得鎖可進行更新操作了。。。,再次執行SessionA中的update語句發現可以進行更新了

技術分享圖片

最後SessionA進行commit提交就會發現數據庫已經成功修改了

技術分享圖片

對事務A執行update

Mysql InnoDB鎖