В моей компании есть базовая SOA, использующая Entity Framework для доступа к базе данных.Один из наших сервисов должен взаимодействовать с устаревшей базой данных, которая использует uniqueidentifier
первичные ключи в базе данных.Производительность хорошая во время модульного и интеграционного тестирования.
Однако под нагрузкой затронутая служба начинает создавать отставание в очереди запросов.Эту очередь можно устранить, удалив разделы кода, которые используют Entity Framework для сопоставления строк с помощью уникального идентификатора PK.Затем служба снова становится производительной, сопоставляя строки по целому числу PK как часть одних и тех же подпрограмм, используя тот же ObjectContext.
Таблица базы данных хорошо выполняет запросы унаследованного приложения, для которого она была разработана.Поэтому я не считаю, что эта проблема связана с фрагментацией в базе данных / индексе.
В показанном примере кода domain
представляет собой Entity Framework ObjectContext, MetaSetting
относится к отображенному EntityObject и match.ObjectId
является Guid
.
metaSettings = domain.MetaSetting.Where(
ms => ms.AppUID.Equals(match.ObjectId)
).ToList();