当前位置: 首页 > 知识库问答 >
问题:

对相同数据的相同查询在调用之间消耗的RU高达两倍

秦胡媚
2023-03-14

我们有一个cosmos db容器,其中插入了文档(仅附加)。我们看到相同的查询消耗了大量变化的RU,即使匹配文档的数量没有变化。我能够在数据资源管理器中复制。

查询:

select * from c where c.Id=<someId> and c.Version > <someVersion> order by c.Version asc

分区键路径=/Id

在DataExplorer中连续执行时,我得到以下查询统计信息:

  1. 请求费用=4857.38 RUs,索引查找时间=9562.75毫秒,检索到的文档计数=77
  2. 请求费用=1900.79 RUs,索引查找时间=466.72毫秒,检索到的文档计数=77
  3. 请求费用=1878.25 RUs,索引查找时间=548.80毫秒,检索到的文档数=77

注意不同的RU和索引查找时间(请参阅剩余数据的实际屏幕截图)。我们的日志显示相同的查询需要超过7964个RU和20秒!

另请注意,当我删除“order by”子句时,我开始在连续执行时获得相同的RU。

根据文档:cosmos db保证对相同数据的相同查询在重复执行时总是花费相同数量的RU。为什么我们会看到这些变化?

共有1个答案

薛文斌
2023-03-14

我可以先回答为什么要花这么长时间。原因是您需要添加一个复合索引。您应该始终探索添加复合索引以优化按查询排序。它们可以产生巨大的影响。

关于我们文件RU部分中的保证,99%的情况下一般指导是正确的,但我们不能保证。我们将更新我们的文档,使其更加简洁。

至于RU/s不同的原因,根据您共享的查询指标,较便宜的1878 RU查询的索引查找时间为548毫秒,而较昂贵的4857 RU查询的索引查找时间为9秒。这可能是RU差异如此之高的一个暗示,但无法确定为什么操作中没有活动id。

查询引擎在执行过程中使用了很多启发式方法,在某些情况下,一个小的更改可能会对查询结果产生重大影响。甚至像限制这样的事情也可能会强制将查询拆分为不一致的页数,从而影响RU费用。这很少见,但有可能。

 类似资料:
  • 我有一个用例,我必须在Dynamo DB中返回表的所有元素。 假设我的表有一个分区键(列X),所有行中的值都相同,比如“monitor”和排序键(列Y),元素不同。 以下方法的执行时间是否会有任何差异,还是相同? 扫描整张桌子。 基于具有“监视器”的分区键查询数据。

  • 使用JDBC驱动程序,我如何使用来自不同查询的多个结果集,而不不断地打开和关闭连接,因为我正在提取所需的w.e并将其传递给另一个方法。每次打开新的conn、语句和结果集时 我试图在一个方法中使用多个结果集,但它一直抛出异常,称结果集已关闭。我没有太多的SqlServver经验,所以任何指导都会有所帮助:-)

  • 问题内容: 我有使用JQuery..I米一个问题在我的代码发送字段名和序列号,其通过获取其数据的ctrller 和并且与序列表中没有given..And生成预览显示面板更新字段名与插入的字段..现在,我再次尝试更改字段名称。tat是现在,当我单击生成的显示面板字段时,相应的设置将打开,我将尝试立即更改字段名称 两者和都相同..在我发送的是字段名和序列号 在功能2中,我要发送相同的字段名和(但其他值

  • 我有一个使用iReport在jasper报告2.0.4中创建的报告。我有两个子报告。这两个子报告共享相同的jrxml。我在参数中传递jrxml作为子报告的报告表达式。我有这个参数的代码 一切都很好。问题出在两个子报表数据源上 这些子报表的数据源来自作为参数传递的同一个POJOs列表 以下是两个子报表的子报表jrxml代码 第一 第二 您看,这两个子报告具有相同的代码。 奇怪的是,两个子报告显示,但

  • 我有一个人[]有三个人(p1,p2,p3)。Person类有两个属性name和email。 我使用了以下代码。 但我不想这样用。我想使用两个组合框与相同的型号。我尝试使用DefaultComboBoxModel并重写getElementAt()方法,如下所示。 } 问题是如何使用相同的ComboBoxModel在一个JComboBox中添加Person[]的所有名称,并在另一个JComboBox中

  • 继续原问题:为了测试这一点,我制作了一个表的近似副本。尽管执行路径相同、数据相同、表示意图非常相似,但对复制表的性能(查询时间)明显比源表差。 在本例中,我们有以下3个表: > 提供_clicks 在这之后,我们开始运行一些测试查询。正如您所看到的,对“offers_new”表的查询时间大约是“offers”表的10倍。 请注意,这两个查询的执行路径完全相同: null null 计数非常接近。O