CosmosDB Mongodb查询缓慢

时间:2019-02-01 04:29:51

标签: azure-cosmosdb azure-cosmosdb-mongoapi

我正在使用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"
}

我需要在$ in查询中使用可能大量的“ id”来查询文档。查询很简单

// 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方面缺少什么可能导致所有这种速度下降?

1 个答案:

答案 0 :(得分:0)

Azure Cosmos DB受速率限制(请参阅https://docs.microsoft.com/en-us/azure/cosmos-db/set-throughput),因此,如果您正在执行某种大型查询,并且您将RU / s速率设置得非常低,那么CosmosDB的结果将非常惊人。

尝试更改RU / s速率,并检查性能是否发生变化。

希望这会有所帮助。