Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 11079|Válasz: 1

[Forrás] MSSQL (NOLOCK) piszkos olvasattal

[Linket másol]
Közzétéve: 2020-4-3 10:06:04 | | |
Hátrányok:

1. Rossz olvasmányt eredményez

2. Csak kiválasztott lekérdezési utasításokra vonatkozik

Előnyök:

1. Néhány fájl szerint az SQL lekérdezések hatékonysága WITH (NOLOCK) segítségével 33%-kal növelhető.

2. Használható belső csatlakozási utasításokhoz

Piszkos olvasmány: Egy felhasználó módosít egy erőforráson, egy másik felhasználó véletlenül elolvassa a módosított rekordot, majd az első felhasználó feladja a módosítást, és az adatok visszatérnek az előző módosításhoz, ezek a két különböző eredmény koszos olvasás.

Részletek:

Az SQL lekérdezések teljesítményének javítása érdekében általánosságban az első szempont egy index létrehozása. Valójában az indexek létrehozásán túl, amikor SQL parancsokat helyezünk el, egy WITH (NOLOCK) szakasz hozzáadása a szintaxishoz javíthatja azt a jelenséget, hogy az adathalmazok LOCK-olnak egy olyan környezetben, ahol sok online lekérdezés van, így javítva a lekérdezések teljesítményét.

Azonban egy dolog, amit érdemes megjegyezni, hogy az SQL SELECT (NOLOCK)-val is előfordulhat Dirty Read-et.

Például:

Az egyszerű SELECT mellett használhatod a SELECT szintaxist is a JOIN segítségével. De a DELETE, INSERT, UPDATE és más tranzakciókat igénylő parancsok nem jó...


Néhány fájl szerint az SQL lekérdezések hatékonysága 33%-kal növelhető WITH (NOLOCK) segítségével.
A WITH (NOLOCK) hozzáadása azt jelzi, hogy a SELECT parancsnak nem kell figyelembe vennie a jelenlegi tábla tranzakciós zárolásának állapotát, így a teljesítmény jelentősen javul, és az adatbázis rendszer zárolási jelensége jelentősen csökken (beleértve a holtzárat is).

Egy fontos dolog, hogy mivel a WITH (NOLOCK) nem veszi figyelembe az aktuális tábla tranzakciós zárolását, így amikor van egy adat, amely több fázisban van (pl. tranzakciók több táblán keresztül – >pl. kivonási rendszerek), a WITH (NOLOCK) figyelmen kívül hagyja azokat az adatokat, amelyek éppen a tranzakciós folyamatot dolgozzák...

Őszintén szólva, a NoLock használata esetén lehetővé teszi az adatok olvasását, amelyeket módosítottak, de a tranzakció még nem fejeződött be. Ezért, ha figyelembe kell venned a tranzakciós adatok valós idejű integritását, alaposan gondold át a WITH (NOLOCK) használatát.

Ha nem kell tranzakciókat fontolóra venni, a WITH (NOLOCK) hasznos hivatkozás lehet.

1. megjegyzés: WITH ( < table_hint > )
Megadja a táblázat vizsgálatát, egy vagy több indexet, amelyet a lekérdezésoptimalizáló használ,
Vagy a lekérdezésoptimalizáló segítségével ezt az adattáblát használhatod és a lock módot használhatod ehhez az utasításhoz.

2. megjegyzés: WITH (NOLOCK) egyenértékű a OLVASÁS ELKÖTELEZETÉVEL





Előző:Az adatbázis-mester-slave késleltetés pontatlan lekérdezési megoldáshoz vezet
Következő:Megoldotta azt a problémát, hogy a fiddler nem tudta befuttatni a helyi localhost, 127.0.0.1 hálózati kéréseket
Közzétéve: 2020-4-5 14:21:36 |
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com