共計(jì) 834 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
自動(dòng)寫(xiě)代碼機(jī)器人,免費(fèi)開(kāi)通
這篇文章給大家分享的是有關(guān) MySQL 數(shù)據(jù)庫(kù)中的鎖有哪些類(lèi)型的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
MySQL 數(shù)據(jù)庫(kù)中的鎖有共享鎖,排他鎖,行鎖,表級(jí)鎖,行級(jí)鎖以及頁(yè)面鎖。
1、共享鎖(Shared Lock,也叫 S 鎖)
共享鎖 (S) 表示對(duì)數(shù)據(jù)進(jìn)行讀操作。因此多個(gè)事務(wù)可以同時(shí)為一個(gè)對(duì)象加共享鎖。
產(chǎn)生共享鎖的 sql 語(yǔ)句:
select * from ad_plan lock in share mode;
2、排他鎖(Exclusive Lock,也叫 X 鎖)
排他鎖表示對(duì)數(shù)據(jù)進(jìn)行寫(xiě)操作。如果一個(gè)事務(wù)對(duì)對(duì)象加了排他鎖,其他事務(wù)就不能再給它加任何鎖了。
產(chǎn)生排他鎖的 sql 語(yǔ)句:
select * from ad_plan for update;
3、行鎖(Row Lock)
對(duì)一行記錄加鎖,只影響一條記錄。
通常用在 DML 語(yǔ)句中,如 INSERT, UPDATE, DELETE 等。
InnoDB 行鎖是通過(guò)給索引上的索引項(xiàng)加鎖來(lái)實(shí)現(xiàn)的,這一點(diǎn) MySQL 與 Oracle 不同,后者是通過(guò)在數(shù)據(jù)塊中對(duì)相應(yīng)數(shù)據(jù)行加鎖來(lái)實(shí)現(xiàn)的。
InnoDB 這種行鎖實(shí)現(xiàn)特點(diǎn)意味著:只有通過(guò)索引條件檢索數(shù)據(jù),InnoDB 才使用行級(jí)鎖,否則,InnoDB 將使用表鎖!
4、鎖的密度
根據(jù)鎖的級(jí)別或密度來(lái)劃分,MySQL 有三種鎖的級(jí)別:頁(yè)級(jí)、表級(jí)、行級(jí)。
(1)表級(jí)鎖
開(kāi)銷(xiāo)小,加鎖快;不會(huì)出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高, 并發(fā)度最低。
(2)行級(jí)鎖
開(kāi)銷(xiāo)大,加鎖慢;會(huì)出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低, 并發(fā)度也最高。
(3)頁(yè)面鎖
開(kāi)銷(xiāo)和加鎖時(shí)間界于表鎖和行鎖之間;會(huì)出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般。
感謝各位的閱讀!關(guān)于 MySQL 數(shù)據(jù)庫(kù)中的鎖有哪些類(lèi)型就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
向 AI 問(wèn)一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!