2015-10-14 3 views
0

Я запрашиваю коллекцию Azure DocumentDB с помощью FeedOption MaxItemCount для установки размера страницы и IDocumentQuery<T>::ExecuteNextAsync<T>(). Когда это вызывается с небольшими значениями, скажем, < 100, против набора из 10 000 документов я последовательно возвращаю количество объектов, которые я задал в качестве предела.Запрос Azure DocumentDB с ExecuteNextAsync возвращает меньше MaxItemCount

Однако, когда я выполняю с большими значениями MaxItemCount, скажем 500, я возвращаю все результаты, но не более MaxItemCount.

Теперь я ценю, что MaxItemCount является «максимальным количеством элементов», но из моего понимания из литературы было, что ограничивающим фактором было количество объектов в коллекции. Что-то еще явно ограничивает мои результаты, и мы можем видеть то же поведение в инструментах «Проводник документов» и «Проводник запросов» на Azure Portal.

Коллекция установлена ​​на «S3», которая должна поддерживать 2500RU, а Query Explorer показывает «стоимость» менее 100RU.

Кто-нибудь знает, что здесь происходит? Что ограничивает мой результирующий набор?

+0

Можете ли вы предоставить минимальный пример, который дублирует проблему? –

+1

Есть три вещи, которые ограничивают результаты: (1) максимальный размер ответа 1 МБ. Если это будет достигнуто, в пакет не будет добавлено больше результатов (2) пропускной способности коллекции. Если вы достигли заданного лимита (с некоторым буфером) на основе S1/S2/S3, вы можете получить меньше, чем партию, и (3), если вы не –

+0

@LarryMaccherone. Это очень важно для службы. Создайте коллекцию. Поместите в него все, что вам нравится - много документов с большим количеством свойств. Спросите страницу 1000, получите меньше. Ограничьте свой запрос на меньшее, чем все поля, получите больше строк. В конце концов вы можете ограничить свой запрос до того момента, когда вы получите все 1000 строк. –

ответ

1

Существуют ли ограничения на срок выполнения запроса в DocumentDB. Эти ограничения включают в себя потребление ресурсов запроса (вы можете оценить это с количеством предоставленных RU/sec * 5 секунд + неразглашенным буфером), размером ответа (1 мб) и таймаутом (5 секунд). Если эти ограничения будут удалены, тогда может быть возвращен частичный набор результатов.

+0

Ну, это практически идентично ответу, который @AravindRamachandran дал 2 дня назад. Поскольку люди на S/O, как Aravind * настаивают * на то, чтобы отдать свои ответы в комментариях, у меня нет выбора, кроме как дать вам кредит. Но для любых модов, которые могут произойти по всему этому, пожалуйста, предоставьте возможность задать комментарий как «ответ» –

+0

@RichardHauer, aliuy и я работаем вместе, так что все хорошо. Я был подан для обсуждения вопросов в ответах, поэтому я использую комментарии, пока не смогу подтвердить проблему/ответ. Надеюсь, модные заметки и исправить это! –

+0

Делает это только для асинхронных запросов, которые связаны с поисковым вызовом или также с запросами, которые запрашивают «все элементы одновременно»? – urig