Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 10821|Atsakyti: 0

[Šaltinis] sql PASIRINKTI

[Kopijuoti nuorodą]
Paskelbta 2016-01-08 17:58:31 | | |

Aš mačiau mano vyresniųjų kūrėjų naudoti SU (NOLOCK), kai užklausa SQL Server ir įdomu, kodėl jie naudoja. Dabar aš ištyriau jį ir nustatė, kad tai naudinga pagerinti našumą vykdant užklausą. Tačiau jį naudojant yra trūkumas. Trūkumas yra tas, kad vienas gali būti netikras, kad jie gauna duomenis, kurie šiuo metu yra atnaujinami lentelėje, ty Be užrakto apsaugos, jūs negalite būti garantuoti, kad duomenys nėra keičiasi užklausos vykdymo metu. Aš nurodžiau šią nuorodą ir radau ją gana naudinga.

Norint pagerinti SQL užklausos našumą, pirmiausia reikia sukurti indeksą. Tiesą sakant, be indeksų nustatymo, kai dedame SQL komandas, prie sintaksės pridedant skyrių WITH (NOLOCK) galima pagerinti duomenų rinkinių LOCKed reiškinį aplinkoje, kurioje yra daug internetinių užklausų, taip pagerinant užklausos našumą.

Tačiau reikia atkreipti dėmesį į tai, kad SQL SELECT su (NOLOCK) gali sukelti nešvarų skaitymą.

Pavyzdžiui:




Kadangi SQL serveris atlieka atitinkamą užrakto nuoseklumo tikrinimą. Norėdami pagerinti bendrą duomenų bazės užklausos našumą, įtraukite WITH (NOLOCK) į lentelės pavadinimo pabaigą savo SELECT sintaksėje, nors (NOLOCK) taip pat priimtinas, tačiau "Microsoft" vis tiek rekomenduoja įtraukti WITH.

Be paprasto SELECT, taip pat galite naudoti SELECT sintaksę su JOIN. Tačiau IŠTRINTI, ĮTERPTI, ATNAUJINTI ir kitos komandos, kurioms reikalingos operacijos, nėra geros...

Kai kuriuose failuose teigiama, kad SQL užklausos efektyvumas gali būti padidintas 33% naudojant WITH (NOLOCK).
Pridėjus WITH (NOLOCK), SQL serveris sako, kad mūsų komandai SELECT nereikia atsižvelgti į dabartinės lentelės operacijų užrakto būseną, todėl našumas bus žymiai pagerintas, o duomenų bazės sistemos užrakto reiškinys žymiai sumažės (įskaitant aklavietę).

Vienas dalykas, į kurį reikia atkreipti dėmesį, yra tai, kad kadangi WITH (NOLOCK) neatsižvelgia į dabartinės lentelės operacijų užraktą, taigi, kai yra tam tikrų duomenų keliuose sandorio etapuose (pvz., operacija keliose lentelėse - > pvz., išėmimo sistemoje), WITH (NOLOCK) ignoruos duomenis, kurie šiuo metu apdoroja operacijos procesą...

Tiesiai šviesiai tariant, tai yra, naudojant "NoLock", jis leidžia nuskaityti duomenis, kurie buvo pakeisti, bet operacija dar nebaigta. Todėl, jei jums reikia atsižvelgti į operacijų duomenų vientisumą realiuoju laiku, turėtumėte gerai pagalvoti apie WITH (NOLOCK) naudojimą.

Jei jums nereikia svarstyti operacijų, WITH (NOLOCK) gali būti naudinga nuoroda.

1 pastaba: SU ( < table_hint > )
Nurodo lentelės nuskaitymą, vieną ar daugiau indeksų, kuriuos naudoja užklausų optimizavimo priemonė,
Arba užklausų optimizavimo priemonė, kad panaudotų šią duomenų lentelę ir naudotų šio teiginio užrakto režimą.

2 pastaba: WITH (NOLOCK) yra lygiavertis READ UNCOMMITTED

Galiausiai pakalbėkime apie keletą nedidelių skirtumų tarp nolock ir with(nolock):
1: Sinonimai SQL05, palaikomi tik su (nolock);
2: su (nolock) parašyta labai lengvai ir tada nurodykite indeksą.
Pateikdami užklausas dėl sakinių įvairiuose serveriuose, negalite naudoti su (nolock), tik nolock
Pateikiant užklausą tame pačiame serveryje, galima naudoti ir su (nolock), ir su nolock
Kaip ką
SQL kodas
pasirinkite * iš [IP].a.dbo.table1 su (nolock) Tai paragins jus su klaida pasirinkite * iš a.dbo.table1 su (nolock) Tai veiks




Ankstesnis:C# slepia vidurinį ID numerio skaitmenį
Kitą:jQuery įkelia JS su AJAX
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com