查询 CosmosDB Mongodb 很慢

3

我是使用MongoDB API访问Azure上的CosmosDb。我有一个包含几千个文档的集合。

它们的格式如下:

{
    "_id" : ObjectId("5b4f574ac2100c890805a7d8"),
    "id" : 12,
    "name" : "Spotted Owl",
    "overview" : "Some Overview text",
    "family" : "Barn Owls, Typical Owls (Tytonidae & Strigidae)",
    "latinName" : "Strix occidentalis"
}

我需要使用一个可能很多的"id"在$in查询中查询文档。查询很简单,

// The "$in" list can be 1000 items long.
db.MyCollection.find({"id": {$in: [1,2,3,4,5,6...]}})

我有一个非唯一索引(可能应该是唯一的):

{
     "id" : 1
}

查询1000个项目的结果需要20秒或更长时间返回。如果我仅仅使用以下代码获取所有文档:
db.MyCollection.find({});
结果将在不到一秒钟内返回。
此外,如果我针对本地原生Mongo实例运行相同的测试,两个查询都可以在不到一秒钟内返回。
在Azure/CosmosDb方面,我可能忽略了什么导致这种减速?

我们遇到了完全相同的症状,使用Mongo实例一切都很快,但是使用CosmosDb时就会出现问题。我们尝试了将RUs最大化,情况有所改善,但当我们尝试使用更多的元素时,问题又回来了。你找到解决方案了吗?由于这个问题是在去年二月份提出的,我希望你已经找到了解决方法。感谢你能提供的任何帮助。 - Shuryno
1
我们也有相同的经验。在我的本地机器上,使用Mongo运行非常快,只需要几秒钟,而使用Cosmos则需要半个小时。 - Saljack
1个回答

0
Azure Cosmos DB 受速率限制(请参见 https://learn.microsoft.com/en-us/azure/cosmos-db/set-throughput),因此,如果您正在执行某种大型查询并且将 RU/s 速率设置得非常低,则会从 CosmosDB 中获得惊人缓慢的结果。
尝试更改 RU/s 速率并检查性能是否有所变化。
希望这可以帮助到您。

3
我将我的RU最大化到了10,000,但仍需要5到10秒的时间才能运行。这对于执行如此简单的操作来说成本极高。 - Darthg8r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接