Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 27|Atsakyti: 0

[Patarimai] SU (NOLOCK) optimizavimas didelio lygiagrečio EF Core užklausoms

[Kopijuoti nuorodą]
PaskelbtaVakar 20:48 | | |
Reikalavimai: Kai kurie duomenys leidžia skaityti nešvariai, pvz., straipsnių turinį, puslapių peržiūras, komentarus ir kt., o tai nėra taip griežtai kaip finansiniai duomenys. Siekiant pagerinti užklausos našumą, gali būti naudojamos "ReadUncommitted transactions", tačiau "SqlTransaction" ir "TransactionScope" turi nutekėjimo izoliacijos lygio klaidų, kurios dar nebuvo ištaisytos, todėl apsvarstykite galimybę naudoti sprendimą WITH (NOLOCK).

Peržiūra:
Objekto sistemos užklausų optimizavimas SU(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# naudoja SqlScriptDOM SQL sakiniams analizuoti ir vykdyti
https://www.itsvse.com/thread-11222-1-1.html

SqlTransaction ir TransactionScope nuotėkio izoliacijos lygiai (ši klaida egzistuoja 8 metus ir vis dar nebuvo ištaisyta!) Manau, kad daugelis žmonių gali būti paveikti, bet gali to nesuvokti):Hipersaito prisijungimas matomas.

Šiame straipsnyje reikia nurodyti SqlScriptDOM, kad būtų galima išanalizuoti SQL sakinius ir pridėti WITH(NOLOCK). Nuoroda į atvirojo kodo projektą:Hipersaito prisijungimas matomas.

Nuget citatos taip:
Sukurkite naują AllowDirtyReadAttribute.cs funkciją, koduokite taip:
Sukurkite naują WithNoLockInterceptor, kad nepaisytumėte tam tikrų DbCommandInterceptor metodų. Kodas yra toks:
Įpurkškite į EF šerdį tokia konfigūracija:
Naudokite norėdami pridėti jį virš valdiklio metodo[LeistiDirtyRead]Galėti.

Neapdorotas SQL sakinys:
PASIRINKITE [o]. [Id],
         [o]. [Kliento vardas],
         [o0]. [Id],
         [o0]. [Užsakymo ID],
         [o0]. [Produktas]
FROM [Užsakymai] AS [o]
             KAIRYSIS IŠORINIS SUJUNGIMAS
         [Užsakymo eilutės] AS [o0]
         ON [o]. [Id] = [o0]. [Užsakymo ID]
KUR [o]. [id] = 1
UŽSAKYMAS PAGAL [o]. [Id];

Išrašas, sugeneruotas pridėjus NOLOCK:
PASIRINKITE [o]. [Id],
         [o]. [Kliento vardas],
         [o0]. [Id],
         [o0]. [Užsakymo ID],
         [o0]. [Produktas]
FROM [Orders] AS [o] WITH (NOLOCK)
         KAIRYSIS IŠORINIS SUJUNGIMAS
         [Užsakymo eilutės] AS [o0] SU (NOLOCK)
         ON [o]. [Id] = [o0]. [Užsakymo ID]
KUR [o]. [id] = 1
UŽSAKYMAS PAGAL [o]. [Id];




Ankstesnis:(MSSQL) SQL serverio viso teksto ieška, viso teksto rodyklė
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com