Медленный CosmosDB Mongodb Query - PullRequest
       6

Медленный CosmosDB Mongodb Query

0 голосов
/ 01 февраля 2019

Я использую API MongoDB для доступа к CosmosDb в Azure.У меня есть коллекция из нескольких тысяч документов.

Они имеют следующую форму:

{
    "_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, что может быть причиной всего этого замедления?

1 Ответ

0 голосов
/ 01 февраля 2019

Azure Cosmos DB ограничена по скорости (см. https://docs.microsoft.com/en-us/azure/cosmos-db/set-throughput), поэтому, если вы делаете какой-то большой запрос и вы установили очень низкую скорость RU / s, вы получите поразительно медленные результаты от CosmosDB.

Попробуйте изменить скорость RU / s и проверьте, изменяется ли производительность.

Надеюсь, это поможет.

...