Ответ 1
@bladefist, вы должны иметь возможность добиться гораздо большей производительности с помощью DocumentDB. Например, взгляните на эту заглушку кода и выйдите из учетной записи Azure VM и DocumentDB как в Западной Европе.
Stopwatch watch = new Stopwatch();
for (int i = 0; i < 10; i++)
{
watch.Start();
int numDocumentsRead = 0;
foreach (Document d in client.CreateDocumentQuery(collection.SelfLink,
new FeedOptions { MaxItemCount = 1000 }))
{
numDocumentsRead++;
}
Console.WriteLine("Run {0} - read {1} documents in {2} ms", i, numDocumentsRead,
watch.Elapsed.TotalMilliseconds);
watch.Reset();
}
//Output
Run 0 - read 2500 documents in 426.1359 ms
Run 1 - read 2500 documents in 286.506 ms
Run 2 - read 2500 documents in 227.4451 ms
Run 3 - read 2500 documents in 270.4497 ms
Run 4 - read 2500 documents in 275.7205 ms
Run 5 - read 2500 documents in 281.571 ms
Run 6 - read 2500 documents in 268.9624 ms
Run 7 - read 2500 documents in 275.1513 ms
Run 8 - read 2500 documents in 301.0263 ms
Run 9 - read 2500 documents in 288.1455 ms
Некоторые рекомендации по производительности:
- Использовать прямую связь и протокол TCP
- Используйте большой размер страницы (макс: 1000), если вы читаете большие партии, чтобы свести к минимуму количество круговых поездок.
- Чтобы уменьшить время ожидания, запустите клиент в том же регионе, что и ваша учетная запись DocumentDB
- Предоставленная пропускная способность (и хранение) единиц мощности, которые вы покупаете, распространяется по коллекциям. Поэтому, если вы хотите измерить пропускную способность, вы должны убедиться, что ваше приложение распределяет рабочую нагрузку во всех коллекциях. Например, если у вас есть покупка 1 CU, вы можете распределить всю пропускную способность в одну коллекцию или по трем коллекциям.