- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 documentDb 新手。我编写了一个存储过程来检查所有记录并在某些情况下更新它们。
当前情况:
它会一次运行 100 条记录,更新它们,运行几次后(一次获取 100 条记录并更新)就会超时。
期望
在所有记录上运行脚本而不会超时。
该文档有近百万条记录。因此,手动多次运行相同的脚本并不是我想要的方式。
有人可以告诉我如何实现这一目标吗?
最佳答案
tl;博士;使用来回传递的查询继续 token 继续调用存储过程。
一些想法:
RU 的收集能力无法让您在对存储过程的一次调用中完成所有百万次操作。
存储过程在单个副本上独立运行。这意味着它们可以是事务性的,但它们的使用将比可以使用所有副本来满足请求的常规查询具有更低的吞吐量,因此除非您需要它位于存储过程中,否则我建议对不需要的读取使用直接查询需要与写入进行事务处理。即使如此,对于一百万个文档,您的查询也将达到极限,并且您必须使用继续 token 再次运行查询。
如果您必须使用存储过程...您可能知道,因为您一次完成了 100 个操作,所以每个查询都会返回一个延续标记。实际上,您可以将其添加到超时时从存储过程发回的包中。然后,您可以将其传递回对同一存储过程的另一个调用,并编写您的存储过程以从您上次停下的地方继续。 documentdb-utils只要您遵循this pattern for writing your sprocs,node.js 库就会自动重新调用存储过程,直到完成为止。 。如果您使用的是node.js,您可以使用它(但它尚未升级为支持分区集合),或者您可以在您使用的任何平台中编写等效的内容。
关于azure - 文档数据库 : How to run a query without timing out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355282/
我是一名优秀的程序员,十分优秀!