В настоящее время я сталкиваюсь с довольно медленным временем отклика от Azure DocumentDB (впервые попробовал).
В коллекции есть 31 объект, который я собираюсь извлечь и вернуть вызывающему. Код, который я использую, следующий:
public async Task<List<dynamic>> Get(string collectionName = null)
{
// Lookup from Dictionary, takes literally no time
var collection = await GetCollectionAsync(collectionName);
var sw = Stopwatch.StartNew();
var query = await
_client.CreateDocumentQuery(collection.DocumentsLink,
new FeedOptions { MaxItemCount = 1000 })
.AsDocumentQuery()
.ExecuteNextAsync();
Trace.WriteLine($"Get documents: {sw.ElapsedMilliseconds} ms");
return query.ToList();
}
Чтобы создать экземпляр клиента, я использую следующий код:
_client = new DocumentClient(new Uri(endpoint), authKey, new ConnectionPolicy
{
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp
});
Время отклика, которое я получаю от Stopwatch
, составляет от 360 мс до 1200 мс, чтобы вернуть 31 объект. Для меня это довольно медленно. Без пользовательского ConnectionPolicy
среднее время отклика составляет около 950 мс.
Я делаю что-то неправильно здесь? Возможно ли как-то ускорить эти запросы?
Вот результат из Trace, распечатав прошедшее время секундомера:
Get documents: 1984 ms
Get documents: 1252 ms
Get documents: 1246 ms
Get documents: 359 ms
Get documents: 356 ms
Get documents: 356 ms
Get documents: 351 ms
Get documents: 1248 ms
Get documents: 1314 ms
Get documents: 1250 ms