圖片來源:MySQL官網(wǎng)

每個連接都會在MySQL服務端產(chǎn)生一個線程(內(nèi)部通過線程池管理線程)。比如:一個select語句進入,MySQL首先會在查詢緩存中查找是否緩存了這個select結(jié)果集,如果沒有則繼續(xù)執(zhí)行解析→優(yōu)化→執(zhí)行得過程;否則會直接從緩存中獲取結(jié)果集。

共享鎖和排他鎖都是標準的行級鎖。
1)共享鎖S:標準的讀鎖,讀鎖允許多個連接可以同一時刻并發(fā)的讀取同一資源,互不干擾。
2)排他鎖X:又稱寫鎖,一個寫鎖會阻塞其他的寫鎖或讀鎖,保證同一個時刻只有一個連接可以寫入數(shù)據(jù),同時防止其他用戶對這個數(shù)據(jù)的讀寫。
| 鎖類型 | 英文名 | 又稱 | 同一時刻 | 共同點 |
|---|---|---|---|---|
| 共享鎖S | Shared Locks | 讀鎖 | 同一時刻,允許多個連接并發(fā)的讀取同一資源,互不干擾。 | 兩者都是鎖機制本身的策略,通過這兩種策略對鎖進行了區(qū)分 |
| 排他鎖X | Exclusive Locks | 寫鎖 | 同一時刻只有一個連接可以寫入數(shù)據(jù),同時防止其他用戶對這個數(shù)據(jù)的讀寫。 | 同上 |
背景:多粒度鎖的并存場景。
InnoDB支持多粒度鎖(鎖粒度:可分為行鎖和表鎖),允許行鎖和表鎖共存。為了實現(xiàn)多粒度級別的鎖定,InnoDB使用了意圖鎖。
意向鎖:表級別的鎖。先提前聲明的一個意向,并獲取表級別的意向鎖(共享意向鎖IS或排他意向鎖IX),如果獲取成功,則稍后將要或正在(才被允許),對該表的某些行加鎖(S或X)了。
注意:除了LOCK TABLES...WRITE,會鎖住表中的所有行,其他場景意向鎖實際鎖不住任何行。
意向協(xié)議鎖:在事務能夠獲取表中的行上的共享鎖之前,他必須首先獲取表上的IS鎖或更強的鎖。在事務能夠獲取表中的行上的獨占鎖之前,它必須首先獲取表上的IX鎖。
意向鎖實現(xiàn)的背景是多粒度鎖的并存場景,兼容性如下:
| X | IX | S | IS | |
|---|---|---|---|---|
| X | Conflict | Conflict | Conflict | Conflict |
| IX | Conflict | Compatible | Conflict | Compatible |
| S | Conflict | Conflict | Compatible | Compatible |
| IS | Conflict | Compatible | Compatible | Compatible |
Conflict:互斥
Compatible:兼容
意向鎖僅表示意向,是一種較弱的鎖,意向鎖之間兼容并行(IS,IX之間兼容并行)。X與IS,IX互斥,S與IX互斥。意向鎖是比X/S更弱的鎖,存在一種預判的意義。先獲取更弱的IS,IX鎖,如果獲取失敗就不必再獲取更強S,X鎖。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:MySQL中常見鎖-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.chinadenli.net/article30/dcceso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、做網(wǎng)站、虛擬主機、微信公眾號、靜態(tài)網(wǎng)站、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)