假設我已經存儲的過程,並執行以下操作:Cosmos DB中的存儲過程中的讀取操作是否對數據進行獨佔鎖定?
- 選擇前10條記錄相匹配的條件。比如說,選擇TOP 10 * FROM c WHERE c.complete = false。
- 它將所選10個文檔的完整標誌更新爲true。
- 替換這10個具有更新標誌的文檔。
- 返回給客戶這10個文件。
假設,從客戶端應用程序中,我產生了多個任務,這些任務都同時運行相同的存儲過程。
問題:
是否有可能在存儲過程的兩個或多個同時運行可能會導致它返回類似文件?或者他們會完全孤立運行?
Cosmos DB存儲過程是否鎖定正在讀取的數據?
結果發現:
的任務沒有返回相同的文檔,並從存儲過程返回總是一組不同的文件。但我不確定這種行爲是否一致。我嘗試通過產生不同數量的高達20的任務來運行存儲過程,但無法觀察到不一致性。
我試着同時執行存儲過程。它不會鎖定數據。此前的通話並非真正平行。這是快照隔離,因此存儲過程的兩次運行會返回相同的記錄。 – vmn
謝謝Jay。我會嘗試你所建議的。 – vmn
@vmn Ok.Any的關注,請隨時讓我知道。 –