****什么是共享鎖鳖目,什么是排他鎖笨鸡?****
****共享鎖****也叫讀鎖姜钳,簡稱S鎖,原理:一個(gè)事務(wù)獲取了一個(gè)數(shù)據(jù)行的共享鎖形耗,其他事務(wù)能獲得該行對(duì)應(yīng)的共享鎖傲须,但不能獲得排他鎖,即一個(gè)事務(wù)在讀取一個(gè)數(shù)據(jù)行的時(shí)候趟脂,其他事務(wù)也可以讀,但不能對(duì)該數(shù)據(jù)行進(jìn)行增刪改例衍。
****排他鎖****也叫寫鎖昔期,簡稱x鎖已卸,原理:一個(gè)事務(wù)獲取了一個(gè)數(shù)據(jù)行的排他鎖,其他事務(wù)就不能再獲取該行的其他鎖(排他鎖或者共享鎖)硼一,即一個(gè)事務(wù)在讀取一個(gè)數(shù)據(jù)行的時(shí)候累澡,其他事務(wù)不能對(duì)該數(shù)據(jù)行進(jìn)行增刪改查。
****如何設(shè)置共享鎖和排他鎖般贼?****
設(shè)置共享鎖:SELECT ... LOCK IN SHARE MODE;
設(shè)置排他鎖:SELECT ... FOR UPDATE;
****注意點(diǎn) ****
- 對(duì)于select 語句愧哟,innodb不會(huì)加任何鎖,也就是可以多個(gè)并發(fā)去進(jìn)行select的操作哼蛆,不會(huì)有任何的鎖沖突蕊梧,因?yàn)楦緵]有鎖。
- 對(duì)于insert腮介,update肥矢,delete操作,innodb會(huì)自動(dòng)給涉及到的數(shù)據(jù)加排他鎖叠洗,只有查詢select需要我們手動(dòng)設(shè)置排他鎖甘改。
****什么是意向共享鎖,什么是意向排他鎖灭抑?****
意向共享鎖十艾,簡稱IS,其作用在于:通知數(shù)據(jù)庫接下來需要施加什么鎖并對(duì)表加鎖腾节。如果需要對(duì)記錄A加共享鎖忘嫉,那么此時(shí)innodb會(huì)先找到這張表,對(duì)該表加意向共享鎖之后禀倔,再對(duì)記錄A添加共享鎖榄融。
意向排他鎖,簡稱IX救湖,其作用在于:通知數(shù)據(jù)庫接下來需要施加什么鎖并對(duì)表加鎖愧杯。如果需要對(duì)記錄A加排他鎖,那么此時(shí)innodb會(huì)先找到這張表鞋既,對(duì)該表加意向排他鎖之后力九,再對(duì)記錄A添加共享鎖。
****共享鎖和意向共享鎖邑闺,排他鎖與意向排他鎖的區(qū)別****
共享鎖和排他鎖跌前,系統(tǒng)在特定的條件下會(huì)自動(dòng)添加共享鎖或者排他鎖,也可以手動(dòng)添加共享鎖或者排他鎖陡舅。
意向共享鎖和意向排他鎖都是系統(tǒng)自動(dòng)添加和自動(dòng)釋放的抵乓,整個(gè)過程無需人工干預(yù)。共享鎖和排他鎖都是鎖的行記錄,意向共享鎖和意向排他鎖鎖定的是表灾炭。