Først og fremmest, denne artikel ogIkke ved at tilføje WITH(NOLOCK) for at forbedre forespørgselsydelsenI stedet læses dataene gennem transaktionens isolationsmekanisme.
I SQL Server-databaser, når den samme databasetabel ofte læses og skrives samtidig, vil der opstå et låseproblem, det vil sige, at du ikke kan læse, før den forrige indsættelse, opdatering og sletning er gennemført, og du skal vente, til operationen er fuldført, før du kan udføre select-operationen for at forhindre samtidige operationer og læsning af beskidte data.
SELECT-sætningen med WITH (NOLOCK) for at løse blokeringsdeadlocken.
Seddel:Brug af WITH(NOLOCK) vil resultere i ukrypteret datalæsning。
Testkoden er som følger:
Brug Func delegate til at pakke koden som følger:
Den resulterende SQL-sætning er som følger:
2021-01-06 14:32:09.9505 [ tråd] DEBUG DEBUG LogCenter - sql-sætning: SELECT TOP (1) [Omfang1]. [ID] SOM [ID], [Omfang1]. [Navn] AS [Navn] FRA [dbo]. [Itsvse] AS [Extent1] HVOR ([Extent1].[ Navn] = @p__linq__0) ELLER (([Omfang1].[ Navn] ER NULL) OG (@p__linq__0 ER NULL)) 2021-01-06 14:32:09.9515 [ tråd] DEBUG DEBUG LogCenter - sql-sætning:
2021-01-06 14:32:09.9525 [ tråd] DEBUG DEBUG LogCenter - sql-sætning: -- p__linq__0: 'itsvse.com' (type = streng, size = 4000)
2021-01-06 14:32:09.9525 [ tråd] DEBUG DEBUG LogCenter - sql-sætning: -- Udfører kl. 2021-01-06 14:32:09 +08:00
2021-01-06 14:32:09.9545 [ tråd] DEBUG DEBUG LogCenter - sql-sætning: -- Færdiggjort på 1 ms med resultat: SqlDataReader
2021-01-06 14:32:09.9555 [ tråd] DEBUG DEBUG LogCenter - sql-sætning:
2021-01-06 14:32:09.9555 [ tråd] DEBUG DEBUG LogCenter - sql-sætning: Lukket forbindelse kl. 2021-01-06 14:32:09 +08:00 Select Query indeholder ikke Nolock-nøgleordet.
(Slut)
|