Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如何实施cosmosDB RU吞吐量_Azure_Azure Cosmosdb_Azure Cosmosdb Gremlinapi - Fatal编程技术网

Azure 如何实施cosmosDB RU吞吐量

Azure 如何实施cosmosDB RU吞吐量,azure,azure-cosmosdb,azure-cosmosdb-gremlinapi,Azure,Azure Cosmosdb,Azure Cosmosdb Gremlinapi,我有一个cosmosGB gremlin API,设置为400 RU/s。如果我必须运行一个需要800 RU的查询,这是否意味着该查询需要2秒才能执行?如果我将吞吐量增加到1600 RU/s,这个查询会在半秒钟内执行吗?我看不到通过使用RUs在查询性能上有任何显著的变化。单个查询的收费是给定的,所以说“查询需要800 RU/s”并不十分准确。1KB的文档读取量为1RU,而从每个10RU开始,写入成本更高。一般来说,您应该避免任何单独的请求,比如说50个以上,这可能是很高的。根据我的经验,我会尽量

我有一个cosmosGB gremlin API,设置为400 RU/s。如果我必须运行一个需要800 RU的查询,这是否意味着该查询需要2秒才能执行?如果我将吞吐量增加到1600 RU/s,这个查询会在半秒钟内执行吗?我看不到通过使用RUs在查询性能上有任何显著的变化。

单个查询的收费是给定的,所以说“查询需要800 RU/s”并不十分准确。1KB的文档读取量为1RU,而从每个10RU开始,写入成本更高。一般来说,您应该避免任何单独的请求,比如说50个以上,这可能是很高的。根据我的经验,我会尽量降低每个操作的个人费用,对于大列表查询,通常不超过20-30

结果是,400/s足以完成至少一个查询。正是当你有多次尝试,并在时间跨度内,宇宙告诉你等待一段时间,然后被允许再次成功。这是动态的,基于或多或少的黑盒公式。这不一定是一个简单的按费用划分的津贴,也没有任何个人的要求会更快或更慢的限制


您可以通过检查响应来查看您是否受到限制,或者通过检查Azure dashboard指标来进行监控。

单个查询的收费是给定的,因此说“查询需要800 RU/s”并不十分准确。1KB的文档读取量为1RU,而从每个10RU开始,写入成本更高。一般来说,您应该避免任何单独的请求,比如说50个以上,这可能是很高的。根据我的经验,我会尽量降低每个操作的个人费用,对于大列表查询,通常不超过20-30

结果是,400/s足以完成至少一个查询。正是当你有多次尝试,并在时间跨度内,宇宙告诉你等待一段时间,然后被允许再次成功。这是动态的,基于或多或少的黑盒公式。这不一定是一个简单的按费用划分的津贴,也没有任何个人的要求会更快或更慢的限制


您可以通过检查响应来查看是否受到限制,或者通过检查Azure dashboard指标来进行监控。

正如我在另一个不同但有点相关的回答中所解释的,请求单位是按每秒分配的。如果给定查询的成本超过该一秒窗口中可用的请求单元数:

  • 查询将被执行
  • 您现在将因请求单位的超额而“负债”
  • 在你的“债务”还清之前,你将被扼杀
假设您有400 RU/秒,您执行了一个花费800 RU的查询。它将完成,但然后你将在债务约2秒(每秒400 RU,乘以2秒)。在这一点上,你将不再被限制


查询执行的速度并不取决于分配的RU数量。无论是1000 RU/秒还是100000 RU/秒,查询都将在相同的时间内运行(除了阻止查询最初运行的任何节流时间)。因此,除了节流之外,无论RU计数如何,您的800 RU查询都将持续运行。

正如我在一个不同但有点相关的回答中所解释的,请求单元是按每秒分配的。如果给定查询的成本超过该一秒窗口中可用的请求单元数:

  • 查询将被执行
  • 您现在将因请求单位的超额而“负债”
  • 在你的“债务”还清之前,你将被扼杀
假设您有400 RU/秒,您执行了一个花费800 RU的查询。它将完成,但然后你将在债务约2秒(每秒400 RU,乘以2秒)。在这一点上,你将不再被限制


查询执行的速度并不取决于分配的RU数量。无论是1000 RU/秒还是100000 RU/秒,查询都将在相同的时间内运行(除了阻止查询最初运行的任何节流时间)。因此,除了节流之外,无论RU计数是多少,800 RU查询都将持续运行。

有许多有效的查询场景将远远超过50 RU。将查询保持在如此低的阈值之下是不可能的,特别是对于复杂的图形查询(例如,由于关系的组织方式,向内关系方向的遍历比向外搜索的开销更大)。此外,400 RU不一定足以执行单个查询(除了单个查询外,不考虑重负载,执行多个并发查询)。此外:文档“读取”与文档“查询”不同。您给出的示例是,读取一个1KB的文档,成本为1RU,是一个直接点读取,通过SDK执行。这不适用于查询引擎。此外,写操作可以在10RU以下执行—这取决于索引属性的数量、文档的大小等。公平点,也许任何事情都是可能的。我应该澄清一下,我来自于我自己的背景,以RESTAPI的形式编写了相当简单的CRUD应用程序,如果你在设计上非常小心,它绝对有可能保持远低于400 RU/s。对于Cosmos的新手,我认为有必要提供一些关于他们什么时候可能“做错了”的上下文——如果您的查询马上变得那么昂贵,这似乎是有可能的。问题是OP专门询问RU与查询性能的关系。我认为,关于RU规模和查询优化的基于意见的指导超出了本文的范围(RU规划远比选择任意目标复杂)。OP实际上并没有什么“错误”之处(因为成本为800R的查询本身并没有任何错误)