假设我已经存储的过程,并执行以下操作:Cosmos DB中的存储过程中的读取操作是否对数据进行独占锁定?
- 选择前10条记录相匹配的条件。比如说,选择TOP 10 * FROM c WHERE c.complete = false。
- 它将所选10个文档的完整标志更新为true。
- 替换这10个具有更新标志的文档。
- 返回给客户这10个文件。
假设,从客户端应用程序中,我产生了多个任务,这些任务都同时运行相同的存储过程。
问题:
是否有可能在存储过程的两个或多个同时运行可能会导致它返回类似文件?或者他们会完全孤立运行?
Cosmos DB存储过程是否锁定正在读取的数据?
结果发现:
的任务没有返回相同的文档,并从存储过程返回总是一组不同的文件。但我不确定这种行为是否一致。我尝试通过产生不同数量的高达20的任务来运行存储过程,但无法观察到不一致性。
我试着同时执行存储过程。它不会锁定数据。此前的通话并非真正平行。这是快照隔离,因此存储过程的两次运行会返回相同的记录。 – vmn
谢谢Jay。我会尝试你所建议的。 – vmn
@vmn Ok.Any的关注,请随时让我知道。 –