Поскольку у нас есть система источников событий, работающая с проекциями, нам часто приходится запрашивать в нашем хранилище событий большое количество объектов, чтобы (пере) построить наше состояние. Это делается:
1. Запрос объектов на PartitionKey
, RowKey
и иногда дополнительная фильтрация
2. Обработка результирующего сегмента
3. Повторяя это до continuationtoken== null
Запуск с помощью функции Azure (V2), Windows.Azure.Storage 9.3.1.
Проблема, с которой мы сталкиваемся, заключается в том, что сегменты, возвращаемые ExecuteQuerySegmentedAsync
, различаются по размеру от примерно 200 до 700 объектов. Я смог воспроизвести это с помощью простого запроса только на PartitionKey
, без дополнительной фильтрации. Увидеть:
https://user -images.githubusercontent.com / 49230954 / 55467681-18f2cf00-5602-11e9-90ad-70c324eb7d3c.JPG
Состояния документации ExecuteQuerySegmentedAsync
может вернуть до 1 тыс. Сущностей. Есть идеи о том, почему мы не попали в этот номер? Это (как ожидается) резко повысит производительность.
Обновление: максимальное время запроса 5 секунд не достигнуто, получение сегмента занимает около 200-300 мс.