共享鎖排他鎖
行級(jí)鎖
- s lock read
- x lock update or delete
意向鎖
表級(jí)鎖
允許行級(jí)和表級(jí)鎖共存
- IS intend to set s lock
- IX intend to set X lock
Select ... lock in share mode(IS)
select ... for update (IX)
獲取s鎖之前愧薛,必須獲取IS或更高的鎖
獲取x之前砰左,必須獲取IX
意向鎖不會(huì)阻塞除非全表請(qǐng)求(lock tables ... write)
link1處理加表鎖的情況
Record lock
- 鎖一個(gè)索引記錄
- 沒有定義索引時(shí),使用Innodb自建的聚集索引
Gap lock
next key lock
record lock和索引前的gap的gap lock
link
insert intention lock
insert位置前的gap lock
insert會(huì)對(duì)插入成功的行加上排它鎖萍肆,這個(gè)排它鎖是個(gè)記錄鎖梳庆。如果insert 的事務(wù)出現(xiàn)了duplicate-key error 宾尚,事務(wù)會(huì)對(duì)duplicate index record加共享鎖耍目。這個(gè)共享鎖在并發(fā)的情況下是會(huì)產(chǎn)生死鎖的及舍。見link