Pirmkārt, šis raksts unNevis pievienojot WITH(NOLOCK), lai uzlabotu vaicājuma veiktspējuTā vietā dati tiek nolasīti, izmantojot darījuma izolācijas mehānismu.
SQL Server datu bāzēs, ja viena un tā pati datu bāzes tabula bieži tiek lasīta un rakstīta vienlaicīgi, rodas bloķēšanas problēma, tas ir, jūs nevarat lasīt, kamēr nav pabeigta iepriekšējā ievietošanas, atjaunināšanas un dzēšanas transakcija, un jums ir jāgaida, līdz operācija ir pabeigta, pirms varat veikt atlases operāciju, lai novērstu vienlaicīgas darbības un lasītu netīrus datus.
SELECT paziņojumu ar WITH (NOLOCK), lai atrisinātu bloķēšanas strupceļu.
Piezīme:Izmantojot WITH(NOLOCK), datu nolasīšana būs netīra。
Testa kods ir šāds:
Izmantojiet Func pārstāvi, lai iepakotu kodu šādi:
Iegūtais SQL paziņojums ir šāds:
2021-01-06 14:32:09.9505 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums: SELECT TOP (1) [Apjoms1]. [ID] KĀ [ID], [Apjoms1]. [Vārds] AS [Nosaukums] NO [dbo]. [Itsvse] AS [1. apjoms] WHERE ([Apjoms1].[ Nosaukums] = @p__linq__0) VAI (([Apjoms1].[ Nosaukums] IR NULL) UN (@p__linq__0 IR NULL)) 2021-01-06 14:32:09.9515 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums:
2021-01-06 14:32:09.9525 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums: -- p__linq__0: 'itsvse.com' (tips = virkne, izmērs = 4000)
2021-01-06 14:32:09.9525 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums: -- Izpilde 2021-01-06 14:32:09 +08:00
2021-01-06 14:32:09.9545 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums: -- Pabeigts 1 ms laikā ar rezultātu: SqlDataReader
2021-01-06 14:32:09.9555 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums:
2021-01-06 14:32:09.9555 [ pavediens] DEBUG DEBUG LogCenter - sql paziņojums: Slēgts savienojums 2021-01-06 14:32:09 +08:00 Atlases vaicājums neietver atslēgvārdu Nolock.
(Beigas)
|