Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 27|Відповідь: 0

[Чайови] Оптимізація WITH (NOLOCK) для запитів EF Core з високою паралелізацією

[Копіювати посилання]
ОпублікованоВчора о 20:48 | | |
Вимоги: Деякі дані дозволяють брудне читання, наприклад, зміст статей, перегляди сторінок, коментарі тощо, що не є таким суворим, як фінансові дані. Для покращення продуктивності запитів можна використовувати транзакції ReadUncommitted транзакції, але 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 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, повнотекстовий індекс
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com