У меня есть секционированная коллекция, в которой в качестве ключа раздела используется 5-значный код участника. В коллекции могут быть тысячи ключей разделов.
Я поместил в него около 32 тыс. Документов. Используя Partition Stats
образец:
Summary:
partitions: 1
documentsCount: 32,190
documentsSize: 0.045 GB
Но есть только один физический раздел! Если я использую метрики портала, я вижу похожую вещь:
Не означает ли это, что все мои запросы относятся к одному физическому разделу? Когда Космос добавляет больше физических разделов?
Причина, по которой я спрашиваю, заключается в том, что я вижу очень плохую производительность, которая серьезно ухудшается при загрузке теста. Например, этот простой метод подсчета запускается быстро в легком тесте и затем занимает несколько секунд, когда система находится под давлением (игнорируйте handler
материал):
private async Task<int> RetrieveDigitalMembershipRefreshItemsCount(string code, string correlationId)
{
var error = "";
double cost = 0;
var handler = HandlersFactory.GetProfilerHandler(_loggerService, _settingService);
handler.Start(LOG_TAG, "RetrieveDigitalMembershipRefreshItemsCount", correlationId);
try
{
if (this._docDbClient == null)
throw new Exception("No singleton DocDb client!");
// Check to see if there is a URL
if (string.IsNullOrEmpty(_docDbDigitalMembershipsCollectionName))
throw new Exception("No Digital Memberships collection defined!");
FeedOptions queryOptions = new FeedOptions { MaxItemCount = 1, PartitionKey = new Microsoft.Azure.Documents.PartitionKey(code.ToUpper()) };
return await _docDbClient.CreateDocumentQuery<DigitalMembershipDeviceRegistrationItem>(
UriFactory.CreateDocumentCollectionUri(_docDbDatabaseName, _docDbDigitalMembershipsCollectionName), queryOptions)
.Where(e => e.CollectionType == DigitalMembershipCollectionTypes.RefreshItem && e.Code.ToUpper() == code.ToUpper())
.CountAsync();
}
catch (Exception ex)
{
error = ex.Message;
throw new Exception(error);
}
finally
{
handler.Stop(error, cost, new
{
Code = code
});
}
}
Вот журнал для этого метода по мере прохождения теста в порядке наибольшей продолжительности. Первоначально это займет всего несколько миллисекунд:
![enter image description here](https://i.stack.imgur.com/68oew.png)
Я попробовал большинство советов по производительности, то есть прямой режим, тот же регион, синглтон. Любая помощь могла бы быть полезна.
Спасибо.