|
|
ОпубликованоВчера в 20:48
|
|
|

Требования: Некоторые данные допускают грязное чтение, например, содержание статей, просмотры страниц, комментарии и т.д., что не так строго, как финансовые данные. Для повышения производительности запросов могут использоваться транзакции ReadUncommed, но SqlTransaction и TransactionScope имеют ошибки уровня изоляции утечек, которые ещё не исправлены, поэтому рассмотрите возможность использования решения WITH (NOLOCK).
Обзор:
Уровни изоляции утечок SqlTransaction и TransactionScope (этот баг существует уже 8 лет и до сих пор не исправлен!) Я предполагаю, что многие могут быть затронуты, но могут не осознавать этого):Вход по гиперссылке виден.
В этой статье необходимо ссылаться на SqlScriptDOM для разбора SQL-операторов и добавления WITH(NOLOCK). См. проект с открытым исходным кодом:Вход по гиперссылке виден.
Нюгет приводит следующие цитаты:
Создайте новую функцию AllowDirtyReadAttribute.cs, закажите следующее:
Создайте новый WithNoLockInterceptor для переобозначения определённых методов в DbCommandInterceptor. Код выглядит следующим образом:
Инжекция в ядро EF со следующей конфигурацией:
Используйте для добавления его выше метода контроллера[РазрешитьГрязноЧитать]Мочь.
Raw SQL-оператор:
ВЫБЕРИТЕ [o]. [Id], [o]. [Имя клиента], [o0]. [Id], [o0]. [OrderId], [o0]. [Продукт] ОТ [Приказы] AS [o] ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ [Orderlines] AS [o0] ON [o]. [Id] = [o0]. [OrderId] ГДЕ [o]. [Id] = 1 ЗАКАЗ ОТ [o]. [Id]; Оператор, сгенерированный после добавления NOLOCK:
ВЫБЕРИТЕ [o]. [Id], [o]. [Имя клиента], [o0]. [Id], [o0]. [OrderId], [o0]. [Продукт] ОТ [Приказы] AS [o] С (NOLOCK) ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ [Orderlines] КАК [o0] С (NOLOCK) ON [o]. [Id] = [o0]. [OrderId] ГДЕ [o]. [Id] = 1 ЗАКАЗ ОТ [o]. [Id]; |
Предыдущий:(MSSQL) Полнотекстовый поиск SQL Server, полный текстовый индекс
|