Esiteks, see artikkel jaMitte WITH(NOLOCK) lisamisega, et parandada päringute jõudlustSelle asemel loetakse andmeid läbi tehingu isoleerimismehhanismi.
SQL Serveri andmebaasides, kui sama andmebaasitabelit loetakse ja kirjutatakse sageli samaaegselt, tekib lukustusprobleem, st sa ei saa lugeda enne, kui eelmine sisestamise, uuendamise ja kustutamise tehing on lõpetatud, ning pead ootama, kuni operatsioon on lõpetatud, enne kui saad valiku operatsiooni sooritada, et vältida samaaegseid operatsioone ja lugeda musta andmet.
SELECT lause koos WITH (NOLOCK) blokeerimise ummikseisu lahendamiseks.
Märkus:WITH(NOLOCK) kasutamine põhjustab musta andmelugemise。
Testkood on järgmine:
Kasuta Func delegate'i, et pakendada kood järgmiselt:
Tulemuseks olev SQL-lause on järgmine:
2021-01-06 14:32:09.9505 [ teema] DEBUG DEBUG LogCenter - sql lause: SELECT TOP (1) [Ulatus1]. [ID] KUI [ID], [Ulatus1]. [Nimi] AS [Nimi] FROM [dbo]. [Itsvse] AS [Ulatus1] KUS ([Extent1].[ Nimi] = @p__linq__0) VÕI (([Extent1].[ Nimi] ON NULL) JA (@p__linq__0 ON NULL)) 2021-01-06 14:32:09.9515 [ teema] DEBUG DEBUG LogCenter - sql avaldus:
2021-01-06 14:32:09.9525 [ teema] DEBUG DEBUG LogCenter - sql lause: -- p__linq__0: 'itsvse.com' (tüüp = string, suurus = 4000)
2021-01-06 14:32:09.9525 [ teema] DEBUG DEBUG LogCenter - sql lause: -- Täitmine 2021-01-06 14:32:09 +08:00
2021-01-06 14:32:09.9545 [ teema] DEBUG DEBUG LogCenter - sql lause: -- Lõpetatud 1 ms jooksul, tulemus: SqlDataReader
2021-01-06 14:32:09.9555 [ teema] DEBUG DEBUG LogCenter - sql avaldus:
2021-01-06 14:32:09.9555 [ teema] DEBUG DEBUG LogCenter - sql avaldus: Suletud ühendus 2021-01-06 14:32:09 +08:00 Select Query ei sisalda NoLocki märksõna.
(Lõpp)
|