Minusai:
1. Tai sukels nešvarų skaitymą
2. Taikoma tik pasirinktiems užklausos teiginiams
Argumentai už:
1. Kai kurie failai sako, kad SQL užklausos efektyvumas su SU (NOLOCK) gali būti padidintas 33%.
2. Gali būti naudojamas vidiniams sujungimo teiginiams
Nešvarus skaitymas: vartotojas modifikuoja išteklius, o kitas vartotojas perskaito modifikuotą įrašą, o tada pirmasis vartotojas atsisako modifikacijos, o duomenys grįžta į ankstesnę modifikaciją, šie du skirtingi rezultatai yra nešvarūs skaitymai.
Išsami informacija:
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:
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ų, kurie yra keliose fazėse (pvz., sandoriai keliose lentelėse - >pvz., išėmimo sistemos), WITH (NOLOCK) ignoruoja 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
|