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

Rodinys: 44050|Atsakyti: 3

[Šaltinis] Objekto sistemos užklausų optimizavimas SU(NOLOCK)

[Kopijuoti nuorodą]
Publikuota: 2021-1-6 14:52:16 | | | |
Visų pirma, šis straipsnis irNe pridedant WITH(NOLOCK), kad pagerintumėte užklausos našumąVietoj to, duomenys nuskaitomi per operacijos izoliavimo mechanizmą.

SQL serverio duomenų bazėse, kai ta pati duomenų bazės lentelė dažnai skaitoma ir rašoma tuo pačiu metu, kyla užrakto problema, tai yra, negalėsite skaityti, kol nebus baigta ankstesnė įterpimo, atnaujinimo ir naikinimo operacija, ir turite palaukti, kol operacija bus baigta, kad galėtumėte atlikti pasirinkimo operaciją, kad išvengtumėte lygiagrečių operacijų ir nuskaitytumėte nešvarius duomenis.

SELECT sakinys su WITH (NOLOCK), kad išspręstumėte blokavimo aklavietę.

Nata:Naudojant WITH(NOLOCK) bus nešvarūs duomenys

ef rodo sugeneruotus SQL sakinius
https://www.itsvse.com/thread-3813-1-1.html
Bandymo kodas yra toks:

Naudokite Func delegatą, kad supakuotumėte kodą taip:

Gautas SQL sakinys yra toks:

2021-01-06 14:32:09.9505 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas: SELECT TOP (1)
    [Apimtis1]. [ID] KAIP [ID],
    [Apimtis1]. [Vardas] AS [Vardas]
    IŠ [dbo]. [Itsvse] AS [1 apimtis]
    WHERE ([Apimtis1].[ Vardas] = @p__linq__0) ARBA (([Apimtis1].[ Pavadinimas] YRA NEAPIBRĖŽTAS) IR (@p__linq__0 YRA NEAPIBRĖŽTAS))
2021-01-06 14:32:09.9515 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas:

2021-01-06 14:32:09.9525 [ gija] DEBUG DEBUG LogCenter - sql teiginys: -- p__linq__0: 'itsvse.com' (tipas = eilutė, dydis = 4000)

2021-01-06 14:32:09.9525 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas: -- Vykdoma 2021-01-06 14:32:09 +08:00

2021-01-06 14:32:09.9545 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas: -- Užbaigta per 1 ms su rezultatu: SqlDataReader

2021-01-06 14:32:09.9555 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas:

2021-01-06 14:32:09.9555 [ gija] DEBUG DEBUG LogCenter - sql pareiškimas: Uždarytas ryšys 2021-01-06 14:32:09 +08:00
Pasirinkimo užklausoje nėra raktažodžio NOLOCK.

(Pabaiga)





Ankstesnis:.NET/C# įgyvendina paprastą registravimą, pagrįstą BlockingCollection
Kitą:.NET (CLS) viešosios kalbos specifikacija
 Savininkas| Publikuota: 2021-1-6 14:53:17 |
Naudokite: Pridėkite šį sakinį prie Global.cs Application_Start() ir sugeneruotas SQL bus automatiškai pridėtas su(nolock)
//ef命令拦截器
DbInterception.Add(naujas WithNoLockInterceptor());
Jei SQL sakinį reikia užrakinti, pridėkite šį plėtinį


1. Ištaisyta internete teikiamų reguliariųjų išraiškų klaidų problema ypatingomis aplinkybėmis

 Savininkas| Publikuota: 2021-1-10 10:27:32 |
SQL scenarijų testavimas:

Bandymo rezultatai:

Pagal numatytuosius nustatymus jokia operacija nepridedama, o numatytasis izoliavimo lygis yra teisingas:



Trukmė: 17561 milisekundės

IsolationLevel.ReadNepatvirtintas izoliacijos lygis, kaip parodyta šiame paveikslėlyje:



Laikas: 519 ms

Šaltinis:



 Savininkas| Paskelbta 2023-5-2 11:45:35 |
ADO.NET nustatymai leidžia nešvariai skaitytiSkaitytiNeįsipareigojo, kodas yra toks:


Yra dar vienas būdas jį parašyti, dapper kodas yra toks:

Su abiem rašymo testais problemų nėra,Pirmąjį rekomenduojama naudoti tiesiogiai!!!


Kiti rašymo būdai:



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