Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 27|Ответ: 0

[Чаевые] Оптимизация WITH (NOLOCK) для высококонкурентных запросов EF Core

[Скопировать ссылку]
ОпубликованоВчера в 20:48 | | |
Требования: Некоторые данные допускают грязное чтение, например, содержание статей, просмотры страниц, комментарии и т.д., что не так строго, как финансовые данные. Для повышения производительности запросов могут использоваться транзакции ReadUncommed, но SqlTransaction и TransactionScope имеют ошибки уровня изоляции утечек, которые ещё не исправлены, поэтому рассмотрите возможность использования решения WITH (NOLOCK).

Обзор:
Оптимизация запросов к фреймворку сносов WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# использует SqlScriptDOM для разбора и выполнения SQL-операторов
https://www.itsvse.com/thread-11222-1-1.html

Уровни изоляции утечок 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, полный текстовый индекс
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com