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

Rodinys: 12282|Atsakyti: 0

[Šaltinis] SQL serveris nustato operacijos izoliavimo lygį

[Kopijuoti nuorodą]
Paskelbta 2021-02-05 11:53:34 | | | |
Objekto sistemos užklausų optimizavimas SU(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Duomenų bazių užraktai NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
SQL serverio operacijų izoliavimo lygis ir jų ryšys su nešvariais skaitymais, nepakartojamais skaitymais, fantominiais skaitymais ir kt. (kodo argumentai ir laiko sekos)

Suprasdami šias problemas, kurios gali kilti tuo pačiu metu prieigai prie duomenų bazės, galime ir toliau suprasti duomenų bazės izoliacijos lygio sąvoką: kaip ir kokiu mastu norite izoliuoti lygiagrečius sandorius? Pavyzdžiui, jei nešvarūs skaitymai gali būti toleruojami arba jei nenorite, kad vienu metu atliekamos operacijos būtų nešvarios, juos galima nustatyti į izoliacijos lygį, kad izoliacija tarp lygiagrečių operacijų būtų laisva arba griežta.

Kuo aukštesnis izoliacijos lygis, tuo mažesnė tikimybė nuskaityti nešvarius duomenis arba neišsamius duomenis, tačiau tuo didesnis našumo pablogėjimas yra didelio lygiagrečiumo sistemose. Kuo žemesnis izoliacijos lygis, tuo didesnis lygiagrečios sistemos našumo pagerėjimas, tačiau patys duomenys gali būti neišsamūs.

SQL Server 2012 galite nustatyti operacijos izoliacijos lygį (nuo žemo iki aukšto) naudodami šią sintaksę:

NUSTATYTI OPERACIJOS IZOLIAVIMO LYGĮ
    { SKAITYTI NEĮSIPAREIGOJĘS
    | SKAITYTI ĮSIPAREIGOJO
    | PAKARTOJAMAS SKAITYMAS
    | MOMENTINĖ NUOTRAUKA
    | NUOSEKLIAI
    }
[ ; ]
Pirmiausia sukurkite naują testavimo scenarijų, sukurkite duomenų bazę ir įterpkite bandomuosius duomenis taip:



Sukurti naują langą A, atidarykite operaciją, atlikite atnaujinimo operaciją ir palaukite 10 sekundžių prieš įsipareigodami, kodas yra toks:

Kurti naują langą B, nustatykite operaciją READ UNCOMMITTED (neįpareigotas skaitymas, žemiausias lygis, lengva problema yra nešvarus skaitymas, nes jis gali nuskaityti duomenis, modifikuotus kitų operacijų, bet neįsipareigojo.) Jis daro tą patį, kaip ir operacijos SELECT sakinio objekto lentelės nustatymas (NOLOCK). Užklauskite duomenų, kodas yra toks:

Sukurti naują langą C, tiesiogiai pateikite duomenų užklausą, kaip nurodyta toliau.

Savo ruožtuVykdykite langus A, B ir C ir pastebėkite, kad atnaujinant duomenis langas B gali iš karto grąžinti duomenis (Gali būti, kad rodmenys yra nešvarūs duomenys), C langas turi palaukti, kol A langas baigs vykdytipateiks duomenis, kaip parodyta paveikslėlyje žemiau:


(B langas)


(C langas)

(Pabaiga)





Ankstesnis:Redis patvarumo skirtumas tarp RDB ir AOF
Kitą:MySQL eksportuoja užklausos rezultatus į failą
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