如何确保我的 get 查询不会受到 COSMOS db 中长 运行 更新的影响?

How can I ensure my get query won't be affect by a long running update in COSMOS db?

我的容器有一组更新需要 10 秒以上(我最终会提高我的 RU 并希望这次有所改进)。

我的问题是我发现如果我在 10s+ 更新期间 运行 GET,我检索到的集合将包括一些更新的记录和一些尚未更新的记录。

如何确保我的 GET 不会检索到一组半更新的数据?

一些思路:

是否有我没有看到的更好的解决方案?

我将写入(createDocument / replaceDocument - 有趣的是我无法让 upsertDocument 工作)移动到存储过程中,这对性能非常有用(快 3 倍),

但是,在这些存储过程 运行 更新期间触发“GET”仍会导致半更新数据集

所以我也将“GET”移到了一个存储过程中,而且 Bingo!如果更新正在进行中,存储过程“GET”现在将return更新开始前的数据

来自docs

存储过程和触发器始终在 Azure Cosmos 容器的主副本上执行。此功能确保从存储过程中读取提供强一致性