Мы зарезервировали различное количество RU в секунду для наших различных коллекций.Я пытаюсь оптимизировать это, чтобы сэкономить деньги.Для каждого ответа от Cosmos мы регистрируем свойство оплаты запросов в Application Insights.У меня есть один аналитический запрос, который возвращает среднее количество единиц запроса в секунду, и один, который возвращает максимум.
let start = datetime(2019-01-24 11:00:00);
let end = datetime(2019-01-24 21:00:00);
customMetrics
| where name == 'RequestCharge' and start < timestamp and timestamp < end
| project timestamp, value, Database=tostring(customDimensions['Database']), Collection=tostring(customDimensions['Collection'])
| make-series sum(value) default=0 on timestamp in range(start, end, 1s) by Database, Collection
| mvexpand sum_value to typeof(double), timestamp limit 36000
| summarize avg(sum_value) by Database, Collection
| order by Database asc, Collection asc
let start = datetime(2019-01-24 11:00:00);
let end = datetime(2019-01-24 21:00:00);
customMetrics
| where name == 'RequestCharge' and start <= timestamp and timestamp <= end
| project timestamp, value, Database=tostring(customDimensions['Database']), Collection=tostring(customDimensions['Collection'])
| summarize sum(value) by Database, Collection, bin(timestamp, 1s)
| summarize arg_max(sum_value, *) by Database, Collection
| order by Database asc, Collection asc
Средние значения довольно низкие, но максимумы могут быть невероятно высокими в некоторых случаях.Экстремальным примером является коллекция с резервированием 1000, средним значением 15,59 и максимальным значением 63,341 RU / s.
Мой вопрос: как это может быть?Мои запросы неверны?Троттлинг не работает?Или регулирование работает только в течение более длительного периода времени, чем одна секунда?Я проверил регулирование запросов на обзорной панели мониторинга Azure Cosmos DB (код ответа 429), но его не было.