1. 程式人生 > >[MySQL] mysql 的行級顯式鎖定和悲觀鎖

[MySQL] mysql 的行級顯式鎖定和悲觀鎖

必須 釋放 image auto 目的 開啟 mage date back

隱式和顯式鎖定:
1.innodb是兩階段鎖定協議,隱式鎖定比如在事務的執行過程中.會進行鎖定,鎖只有在commit或rollback的時候,才會同時被釋放
2.特定的語句進行顯式鎖定 select ... lock in share mode ; select ... for update,where條件裏面的必須是主鍵,否則會鎖整張表
3.需要用在事務中使用,並且兩個查詢都需要for update才能阻塞住另一個去讀,也就是實現寫鎖,阻塞別的讀鎖,悲觀排他的目的
4.如果不想開啟事務,就把autocommit關掉,這樣默認就是開啟事務了,每次都要commit才行

測試:
會話1開啟事務,並且select ... where id=1 for update

技術分享圖片

會話2也去select ... where id=1 for update,會被阻塞,普通的select沒有影響

技術分享圖片

[MySQL] mysql 的行級顯式鎖定和悲觀鎖