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

Вимоги: Деякі дані дозволяють брудне читання, наприклад, зміст статей, перегляди сторінок, коментарі тощо, що не є таким суворим, як фінансові дані. Для покращення продуктивності запитів можна використовувати транзакції ReadUncommitted транзакції, але SqlTransaction і TransactionScope мають помилки рівня ізоляції витоків, які ще не виправлені, тому розгляньте можливість використання рішення WITH (NOLOCK).
Огляд:
Рівні ізоляції витоків у SqlTransaction та TransactionScope (ця помилка існує вже 8 років і досі не виправлена!) Я припускаю, що багато людей можуть постраждати, але не усвідомлювати цього):Вхід за гіперпосиланням видно.
У цій статті потрібно посилатися на SqlScriptDOM для розбору SQL-операторів і додавання WITH(NOLOCK). Зверніться до відкритого проекту:Вхід за гіперпосиланням видно.
Нюгет цитує так:
Створіть нову функцію AllowDirtyReadAttribute.cs, запрограмуйте наступним чином:
Створіть новий WithNoLockInterceptor для перевизначення певних методів у 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] ЯК [o0] З (NOLOCK) ON [o]. [Id] = [o0]. [OrderId] ДЕ [o]. [Id] = 1 ЗАМОВЛЕННЯ ВІД [o]. [Id]; |
Попередній:(MSSQL) Повнотекстовий пошук SQL Server, повнотекстовий індекс
|