Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 11079|Odpověď: 1

[Zdroj] MSSQL S (NOLOCK) špinavým čtením

[Kopírovat odkaz]
Zveřejněno 3. 4. 2020 10:06:04 | | |
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





Předchozí:Latence master-slave databáze vede k nepřesnému řešení dotazů
Další:Vyřešeno problém, že Fiddler nemohl procházet lokální localhost, síťové požadavky 127.0.0.1
Zveřejněno 5. 4. 2020 14:21:36 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com