Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 11079|Odpoveď: 1

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

[Kopírovať odkaz]
Zverejnené 3.4.2020 10:06:04 | | |
Nevýhody:

1. Bude to produkovať špinavé čítanie

2. Platí len pre vybrané dotazové výroky

Výhody:

1. Niektoré súbory uvádzajú, že efektivita SQL dotazov pomocou WITH (NOLOCK) môže byť zvýšená o 33 %.

2. Môže byť použitý pre vnútorné spojovacie príkazy

Špinavé čítanie: Používateľ urobí úpravu na zdroji, a iný používateľ náhodou prečíta upravený záznam, potom prvý používateľ zmenu vzdá a dáta sa vrátia na predchádzajúcu úpravu, tieto dva odlišné výsledky sú špinavé čítanie.

Podrobnosti:

Na zlepšenie výkonu SQL dotazov je vo všeobecnosti prvou úvahou vytvorenie indexu. V skutočnosti, okrem vytvorenia indexov, keď umiestňujeme SQL príkazy, pridanie sekcie WITH (NOLOCK) do syntaxe môže zlepšiť fenomén LOCKovania dátových súborov v prostredí s veľkým počtom online dotazov, čím sa zlepšuje výkon dotazov.

Avšak treba si uvedomiť, že SQL SELECT s (NOLOCK) môže spôsobiť Dirty Read.

Napríklad:

Okrem jednoduchého SELECT môžete použiť aj syntax SELECT s JOIN. Ale príkazy DELETE, INSERT, UPDATE a ďalšie príkazy, ktoré vyžadujú transakcie, nie sú dobré...


Niektoré súbory uvádzajú, že efektivita SQL dotazov sa dá zvýšiť o 33 % pomocou WITH (NOLOCK).
Pridaním WITH (NOLOCK) hovorí SQL Serveru, že náš príkaz SELECT nemusí zohľadňovať stav uzamknutia transakcie v aktuálnej tabuľke, takže výkon sa výrazne zlepší a jav zámkov databázového systému sa výrazne zníži (vrátane slepého zámku).

Jedna vec, ktorú treba poznamenať, je, že pretože WITH (NOLOCK) nezohľadňuje transakčný zámok aktuálnej tabuľky, takže keď sú niektoré dáta vo viacerých fázach (napr. transakcie cez viaceré tabuľky – >napr. systémy výberu), WITH (NOLOCK) ignoruje dáta, ktoré práve spracovávajú transakčný proces...

Jednoducho povedané, pri použití NoLocku umožňuje čítať dáta, ktoré boli upravené, ale transakcia ešte nebola dokončená. Preto, ak potrebujete zohľadniť integritu transakčných dát v reálnom čase, mali by ste dôkladne zvážiť použitie WITH (NOLOCK).

Ak nemusíte brať do úvahy transakcie, WITH (NOLOCK) môže byť užitočnou referenciou.

Poznámka 1: WITH ( < table_hint > )
Špecifikuje prehľad tabuľky, jeden alebo viac indexov používaných optimalizátorom dotazu,
Alebo optimalizátorom dotazov, ktorý využije túto dátovú tabuľku a použije režim zámku pre tento výrok.

Poznámka 2: WITH (NOLOCK) je ekvivalentné READ uncommitted





Predchádzajúci:Latencia master-slave databázy vedie k nepresnému vyriešeniu dotazov
Budúci:Vyriešený problém, že Fiddler nemohol prehľadávať lokálny localhost, 127.0.0.1 sieťové požiadavky
Zverejnené 5.4.2020 o 14:21:36 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com