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。
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)
|