Miinukset:
1. Se tuottaa likaista lukemista
2. Sovellettavissa vain valikoituihin kyselylauseisiin
Plussat:
1. Jotkut tiedostot sanovat, että SQL-kyselyjen tehokkuutta WITH (NOLOCK) avulla voidaan nostaa 33 %.
2. Voidaan käyttää sisäisten liitoslauseiden tekemiseen
Likainen luku: Käyttäjä tekee muutoksen resurssiin, ja toinen käyttäjä sattuu lukemaan muokatun tietueen, ja sitten ensimmäinen käyttäjä luopuu muokkauksesta, ja data palaa edelliseen muutokseen, nämä kaksi eri tulosta ovat likaista lukemista.
Yksityiskohdat:
SQL-kyselysuorituskyvyn parantamiseksi yleisesti ottaen ensimmäinen asia on indeksin luominen. Itse asiassa, indeksien perustamisen lisäksi, kun sijoitamme SQL-komentoja, syntaksiin lisätty osio WITH (NOLOCK) voi parantaa ilmiötä, jossa datasetit lukitaan ympäristössä, jossa on paljon verkkokyselyitä, parantaen näin kyselyjen suorituskykyä.
Kuitenkin yksi huomionarvoinen seikka on, että SQL SELECT (NOLOCK) -toiminnolla voi aiheuttaa Dirty Readin.
Esimerkiksi:
Yksinkertaisen SELECT-toiminnon lisäksi voit käyttää SELECT-syntaksia JOIN-toiminnolla. Mutta DELETE, INSERT, UPDATE ja muut transaktioita vaativat komennot eivät toimi...
Jotkut tiedostot sanovat, että SQL-kyselyjen tehokkuutta voidaan parantaa 33 % WITH (NOLOCK) -toiminnolla. WITH (NOLOCK) lisääminen kertoo SQL Serverille, että SELECT-komennon ei tarvitse ottaa huomioon nykyisen taulukon transaktiolukituksen tilaa, joten suorituskyky paranee merkittävästi ja tietokantajärjestelmän lukitusilmiö vähenee merkittävästi (mukaan lukien kuollut lukko).
Yksi huomioitava seikka on, että koska WITH (NOLOCK) ei ota huomioon nykyisen taulukon transaktiolukkoa, niin kun jokin data on useassa vaiheessa (esim. transaktiot useiden taulujen yli – >esim. nostojärjestelmät), WITH (NOLOCK) jättää huomiotta datan, joka käsittelee tapahtumaprosessia...
Suoraan sanottuna, eli NoLockia käytettäessä se mahdollistaa tietojen lukemisen, jos sitä on muokattu mutta tapahtuma ei ole vielä suoritettu. Siksi, jos sinun täytyy miettiä transaktiotietojen reaaliaikaista eheyttä, kannattaa harkita tarkkaan WITH (NOLOCK) käyttöä.
Jos sinun ei tarvitse harkita transaktioita, WITH (NOLOCK) voi olla hyödyllinen viite.
Huomautus 1: KANSSA ( < table_hint > ) Määrittelee taulukon skannauksen, yhden tai useamman hakemiston, jota kyselyoptimointi käyttää Tai kyselyoptimaattorin avulla hyödyntämään tätä datataulukkoa ja käyttämään lukitustilaa tälle lauseelle.
Huomautus 2: WITH (NOLOCK) vastaa READ UNCOMMITTED -arvoa
|