您好,登錄后才能下訂單哦!
這篇文章主要介紹MongoDB中使用哪些類型的鎖,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
MongoDB使用多粒度鎖,允許操作鎖定全局,數據庫或集合級別,并允許各個存儲引擎在集合級別下實現自己的并發控制(例如,在WiredTiger中的文檔級別)。MongoDB使用讀寫器鎖定,允許并發讀取器共享訪問資源(如數據庫或集合),但在MMAPv1中,可以對單個寫入操作進行獨占訪問。
除了用于讀取的共享(S)鎖定模式和用于寫入操作的獨占(X)鎖定模式之外,意圖共享(IS)和意圖排它(IX)模式指示使用更精細的粒度鎖定來讀取或寫入資源的意圖。 以某個粒度鎖定時,使用意圖鎖可以鎖定所有更高級別。
例如,在鎖定集合以進行寫入時(使用模式X),必須在intent exclusive(IX)模式下鎖定相應的數據庫鎖和全局鎖。單個數據庫可以同時鎖定在IS和IX模式,但是排它(X)鎖不能與任何其他模式共存,并且共享(S)鎖只能與意圖共享(IS)鎖共存。
鎖是公平的,讀取和寫入按順序排隊。但是,為了優化吞吐量,當一個請求被授予時,所有其他兼容請求將同時被授予,可能在沖突請求之前釋放它們。例如,考慮剛剛釋放X鎖的情況,其中沖突隊列包含以下項:
IS→IS→X→X→S→IS
在嚴格的先進先出(FIFO)排序中,只授予前兩種IS模式。 相反,MongoDB實際上將授予所有IS和S模式,一旦它們全部耗盡,它將授予X,即使新的IS或S請求在此期間已排隊。
在db.serverStatus() 和 db.currentOp() 輸出中,鎖定模式表示如下:
鎖模式 | 說明 |
R | 共享(S)鎖 |
W | 排他(X)鎖定 |
r | 意圖共享(IS)鎖 |
w | Intent Exclusive(IX)鎖 |
以上是“MongoDB中使用哪些類型的鎖”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。