隱式和顯式鎖定:1.innodb是兩階段鎖定協議,隱式鎖定比如在事務的執行過程中.會進行鎖定,鎖只有在commit或rollback的時候,才會同時被釋放2.特定的語句進行顯式鎖定 select ... lock in share mode ; select ... for update,where ...
隱式和顯式鎖定:
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沒有影響