Slabosti:
1. To bo povzročilo umazano branje
2. Velja samo za izbrane poizvedbene stavke
Prednosti:
1. Nekatere datoteke pravijo, da se učinkovitost SQL poizvedb z WITH (NOLOCK) lahko poveča za 33 %.
2. Lahko se uporablja za stavke inner join
Umazano branje: Uporabnik naredi spremembo na viru, nato drug uporabnik prebere spremenjen zapis, nato prvi uporabnik opusti spremembo in se podatki vrnejo na prejšnjo spremembo, ti dve različni rezultati pa sta umazano branje.
Podrobnosti:
Za izboljšanje zmogljivosti SQL poizvedb je na splošno prva stvar ustvariti indeks. Pravzaprav lahko poleg vzpostavitve indeksov, ko postavimo SQL ukaze, dodajanje razdelka WITH (NOLOCK) v sintakso izboljša pojav zaklepanja podatkovnih nizov v okolju z velikim številom spletnih poizvedb, s čimer se izboljša zmogljivost poizvedb.
Vendar pa je treba vedeti, da lahko SQL SELECT z (NOLOCK) povzroči umazano branje.
Na primer:
Poleg preprostega SELECT lahko uporabite tudi sintakso SELECT z JOIN. Ampak DELETE, INSERT, UPDATE in drugi ukazi, ki zahtevajo transakcije, niso dobri...
Nekatere datoteke pravijo, da se učinkovitost SQL poizvedb lahko poveča za 33 % z WITH (NOLOCK). Dodajanje WITH (NOLOCK) pove SQL Serverju, da naš ukaz SELECT ne potrebuje upoštevati stanja zaklepanja transakcij v trenutni tabeli, zato bo zmogljivost bistveno izboljšana, pojav zaklepanja v podatkovnem sistemu pa znatno zmanjšan (vključno z mrtvo zaklepanostjo).
Pomembno je vedeti, da ker WITH (NOLOCK) ne upošteva zaklepa transakcije trenutne tabele, zato ko so nekateri podatki v več fazah (npr. transakcije v več tabelah – >npr. sistemi za dvig), WITH (NOLOCK) ignorira podatke, ki trenutno obdelujejo transakcijski proces...
Preprosto povedano, pri uporabi NoLocka omogoča branje podatkov, ki so bili spremenjeni, vendar transakcija še ni bila zaključena. Zato, če morate upoštevati integriteto transakcijskih podatkov v realnem času, dobro premislite o uporabi WITH (NOLOCK).
Če transakcij ni treba upoštevati, je lahko koristna referenca WITH (NOLOCK).
Opomba 1: WITH ( < table_hint > ) Določa pregled tabele, enega ali več indeksov, ki jih uporablja optimizator poizvedb, Ali pa z optimizatorjem poizvedb, da izkoristiš to podatkovno tabelo in uporabiš način zaklepanja za to izjavo.
Opomba 2: WITH (NOLOCK) je ekvivalent READ UNCOMMITTED
|