Nevýhody:
1. Bude to produkovat špinavé čtení
2. Platí pouze pro vybrané dotazové příkazy
Klady:
1. Některé soubory uvádějí, že efektivita SQL dotazů pomocí WITH (NOLOCK) může být zvýšena o 33 %.
2. Lze použít pro vnitřní spojení
Špinavé čtení: Uživatel provede úpravu na zdroji, jiný uživatel náhodou přečte upravený záznam, a pak první uživatel změnu vzdá a data se vrátí k předchozí úpravě, tyto dva různé výsledky jsou nekvalitní čtení.
Podrobnosti:
Pro zlepšení výkonu SQL dotazů je obecně prvním cílem vytvořit index. Ve skutečnosti, kromě nastavení indexů, když umístíme SQL příkazy, může přidání sekce WITH (NOLOCK) do syntaxe zlepšit fenomén LOCKování datových sad v prostředí s velkým počtem online dotazů, čímž se zlepšuje výkon dotazů.
Nicméně je třeba vědět, že SQL SELECT s (NOLOCK) může způsobit Dirty Read.
Například:
Kromě jednoduchého SELECT můžete také použít syntaxi SELECT s JOIN. Ale příkazy DELETE, INSERT, UPDATE a další příkazy, které vyžadují transakce nejsou dobré...
Některé soubory uvádějí, že efektivitu SQL dotazů lze zvýšit o 33 % pomocí WITH (NOLOCK). Přidání WITH (NOLOCK) říká SQL Serveru, že příkaz SELECT nemusí zohledňovat stav uzamčení transakce v aktuální tabulce, takže výkon bude výrazně zlepšen a jevy zámků databázového systému budou výrazně sníženy (včetně mrtvého zácpu).
Jedna věc, kterou je třeba poznamenat, je, že protože WITH (NOLOCK) nezohledňuje zámek transakce v aktuální tabulce, takže když jsou některá data ve více fázích (např. transakce přes více tabulek – >např. systémy výběru), WITH (NOLOCK) ignoruje data, která právě zpracovávají proces transakce...
Jednoduše řečeno, při použití NoLocku umožňuje číst data, která byla upravena, ale transakce ještě nebyla dokončena. Pokud tedy potřebujete zvážit integritu transakčních dat v reálném čase, měli byste pečlivě zvážit použití WITH (NOLOCK).
Pokud nemusíte brát v úvahu transakce, může být užitečným zdrojem WITH (NOLOCK).
Poznámka 1: WITH ( < table_hint > ) Specifikuje skenování tabulky, jeden nebo více indexů používaných optimalizátorem dotazu, Nebo optimalizátorem dotazů, který využívá tuto datovou tabulku a používá režim zámku pro tento výrok.
Poznámka 2: WITH (NOLOCK) je ekvivalentní READ UNCOMMITTED
|