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

Изисквания: Някои данни позволяват мръсно четене, като съдържание на статии, прегледи на страници, коментари и др., което не е толкова строго, колкото финансовите данни. За подобряване на производителността на заявките може да се използват транзакции ReadUncommed, но SqlTransaction и TransactionScope имат грешки на ниво изолация от изтичане, които все още не са поправени, затова обмислете използването на решението WITH (NOLOCK).
Преглед:
Нива на изолация на течове в SqlTransaction и TransactionScope (този бъг съществува вече 8 години и все още не е оправен!) Оценявам, че много хора може да са засегнати, но може и да не го осъзнават):Входът към хиперлинк е видим.
Тази статия трябва да се позовава на SqlScriptDOM за парсиране на SQL оператори и добавяне на WITH(NOLOCK). Вижте проекта с отворен код:Входът към хиперлинк е видим.
Нюгет цитира по следния начин:
Създайте нова функция за AllowDirtyReadAttribute.cs, кодирайте по следния начин:
Създайте нов WithNoLock Interceptor, който да презапише определени методи в DbCommandInterceptor. Кодът е следният:
Инжектиране в EF Core със следната конфигурация:
Използвай го да го добавиш над метода с контролера[ПозволиМръсно Четене]Мога.
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] AS [o0] С (NOLOCK) ON [o]. [id] = [o0]. [OrderId] КЪДЕТО [o]. [Id] = 1 ПОРЪЧКА ОТ [o]. [Id]; |
Предишен:(MSSQL) SQL Server Пълнотекстово търсене, Пълен текстов индекс
|