insert ,update , delete,innodb 會自動給對應的哪一行加行級別排他鎖
select 查詢的時候 ,innodb 啥鎖都不會加,因爲innodb,默認隔離級別是可重複讀, 即 通過mvcc併發訪問控制機制,所以多個事務隨便讀一個數據,一般不會有衝突的,因爲大家都是讀自己的快照的,不涉及到鎖的問題.
innodb 從來不會自己主動加共享鎖,但可以通過手動添加
- 手動添加共享鎖: select * from table where id=1 lock in share mode ; 這樣就給當前的這一行加了共享鎖,其他的事務就不能修改這行數據了.
- 說動添加排他鎖: select * from table where id=1 for update ; 這樣就給當前的這一行加了排他鎖,你準備修改,別的事務就不能修改,別的事務的修改會夯住. 要慎用