幾天來我一直在尋找答案,但沒有任何運氣。我需要知道當兩臺機器同時更新遠程資料庫時的預期行為是什么。
更新方式
async function update () {
const filters = { orderNumber: 1, paid: false }
const updates = { paid: true }
const { modifiedCount } = await OrderModel.updateOne(filters, updates)
}
是否保證modifiedCount一臺機器總是 0,另一臺機器總是 1?
uj5u.com熱心網友回復:
根據檔案:
MongoDB 使用鎖定和并發控制來防止客戶端同時修改相同的資料。
和:
除了用于讀取的共享 (S) 鎖定模式和用于寫入操作的獨占 (X) 鎖定模式之外,意圖共享 (IS) 和意圖獨占 (IX) 模式表示使用更細粒度的鎖來讀取或寫入資源的意圖.
因此存在寫操作的鎖獨占(X)。
所以是的,同時只會進行一項更新。
還要檢查一些常見的客戶端操作使用了哪些鎖?
| 手術 | 資料庫 | 收藏 |
|---|---|---|
| 更新資料 | 獨家的 | 獨家的 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354242.html
