See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 12282|Vastuse: 0

[Allikas] SQL Server määrab tehingute isoleerimise taseme

[Kopeeri link]
Postitatud 05.02.2021 11:53:34 | | | |
Entity Framework päringute optimeerimine WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Andmebaasi lukud NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Tehingute isoleerimise tase SQL Serveris ja nende seos räpaste lugemiste, mittekorduvate lugemiste, fantoomlugemiste jms (koodiargumendid ja ajajärjestused)

Mõistes neid probleeme, mis võivad tekkida samaaegse juurdepääsu korral andmebaasile, saame jätkata andmebaasi isolatsioonitaseme mõiste mõistmist, lihtsustatult: kuidas soovite samaaegseid tehinguid isoleerida ja kui suurel määral? Näiteks, kui räpaseid lugemisi saab taluda või kui sa ei soovi, et samaaegsetel tehingutel oleks mustad lugemised, siis saab need seada isolatsioonitasemele, et muuta samaaegsete tehingute isolatsioon lõdvemaks või tõsiseks.

Mida suurem on isolatsioonitase, seda väiksem on tõenäosus, et loetakse musta või puudulikku andmet, kuid seda tõsisem on jõudluse langus kõrge samaaegsusega süsteemides. Mida madalam on isolatsioonitase, seda suurem on paralleelsüsteemi jõudluse paranemine, kuid andmed ise võivad olla puudulikud.

SQL Server 2012-s saad määrata tehingu isoleerimistaseme (madalalt kõrgele) selle süntaksi abil:

SEA TEHINGUTE ISOLATSIOONITASE
    { LOE TÜHISTATUD
    | LOE PÜHENDUNUD
    | KORDUV LUGEMINE
    | HETKEPILT
    | SERIAALISEERITAV
    }
[ ; ]
Esmalt loo uus testskript, loo andmebaas ja sisesta testandmed järgmiselt:



Loo uus aken A, avades tehingu, teostades uuendustoimingu ja ootama 10 sekundit enne kinnitamist, on kood järgmine:

Loo uus aken B, seadista tehing READ UNCOMMITTED (uncommitted read, madalaim tase, lihtne probleem on räpane lugemine, sest see suudab lugeda teiste tehingute poolt muudetud, kuid mitte pühendunud andmeid.) See teeb sama, mis seadistada (NOLOCK) SELECT lause objektitabelis tehingus. Andmete päringu korral on kood järgmine:

Loo uus aken C, pärida andmeid otse järgmiselt:

Omakorda,Käivita aknad A, B ja C ning avasta, et andmete uuendamisel saab aken B kohe andmeid tagastada (Võimalik, et lugemine on räpane andmestik), C aken peab ootama, kuni A aken lõpetab täitmisetagastab andmed, nagu alloleval joonisel näidatud:


(Aken B)


(Aken C)

(Lõpp)





Eelmine:Redis püsivuse erinevus RDB ja AOF vahel
Järgmine:MySQL ekspordib päringu tulemused faili
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com