Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 12282|Odgovoriti: 0

[Vir] SQL Server določi stopnjo izolacije transakcij

[Kopiraj povezavo]
Objavljeno na 5. 02. 2021 11:53:34 | | | |
Optimizacija poizvedb v okviru entitete Z (NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Zaklepi baze podatkov NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Stopnja izolacije transakcij v SQL Serverju in njihov odnos do umazanih branj, neponovljivih branj, fantomskih branj itd. (argumenti kode in časovne zaporedja)

Z razumevanjem teh težav, ki se lahko pojavijo pri sočasnem dostopu do baze podatkov, lahko še naprej razumemo koncept izolacije baze podatkov, preprosto povedano: kako želite izolirati sočasne transakcije in v kolikšni meri? Na primer, če so umazana branja dovoljena ali če ne želite, da imajo sočasne transakcije umazane branja, jih lahko nastavite na raven izolacije, da je izolacija med sočasnimi transakcijami ohlapna ali huda.

Višja kot je stopnja izolacije, manjša je možnost branja umazanih ali nepopolnih podatkov, vendar je hujša degradacija zmogljivosti v sistemih z visoko sočasnostjo. Nižja kot je raven izolacije, večja je izboljšava zmogljivosti v sočasnem sistemu, vendar so podatki sami lahko nepopolni.

V SQL Server 2012 lahko nastavite stopnjo izolacije transakcije (od nizke do visoke) z uporabo te sintakse:

NASTAVITE STOPNJO IZOLACIJE TRANSAKCIJ
    { PREBERITE NEZAVEZANO
    | READ SE ZAVEZAL
    | PONOVLJIVO BRANJE
    | POSNETEK
    | SERIJSKO RAZLIČLJIVO
    }
[ ; ]
Najprej ustvarite nov testni skript, ustvarite bazo podatkov in vstavite testne podatke, kot sledi:



Ustvari novo okno A, odpri transakcijo, izvede posodobitev in počaka 10 sekund pred potrditvijo, koda je naslednja:

Ustvari novo okno B, nastavi transakcijo READ UNCOMMITTED (neobvezano branje, najnižja raven, lažja težava je umazano branje, ker lahko prebere podatke, spremenjene z drugimi transakcijami, a niso zabeležene.) Naredi enako kot nastavitev (NOLOCK) na tabeli objektov ukaza SELECT v transakciji. Poizvedite podatke, koda je naslednja:

Ustvarite novo okno C, neposredno poizveduje podatke, kot sledi:

V zameno,Zagnajte okna A, B in C ter ugotovite, da lahko ob posodobitvi podatkov okno B takoj vrne podatke (Možno je, da so podatki umazani), C okno mora počakati, da se A okno zaključibo vrnil podatke, kot je prikazano na spodnji sliki:


(Okno B)


(Okno C)

(Konec)





Prejšnji:Razlika v vztrajnosti med RDB in AOF v Redisu
Naslednji:MySQL izvozi rezultate poizvedb v datoteko
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com