Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 12282|Atbildi: 0

[Avots] SQL Server iestata transakciju izolācijas līmeni

[Kopēt saiti]
Publicēts 05.02.2021 11:53:34 | | | |
Entītiju struktūras vaicājumu optimizācija ar(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Datu bāzes slēdzenes NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Darījumu izolācijas līmenis SQL serverī un to saistība ar netīriem lasījumiem, neatkārtojamiem lasījumiem, fantoma lasījumiem utt.

Izprotot šīs problēmas, kas var rasties vienlaicīgas piekļuves datu bāzei gadījumā, mēs varam turpināt izprast datu bāzes izolācijas līmeņa jēdzienu: kā jūs vēlaties izolēt vienlaicīgus darījumus un cik lielā mērā? Piemēram, ja var pieļaut netīrus lasījumus vai ja nevēlaties, lai vienlaicīgām transakcijām būtu netīri lasījumi, tos var iestatīt izolācijas līmenī, lai izolācija starp vienlaicīgām transakcijām būtu brīva vai smaga.

Jo augstāks izolācijas līmenis, jo mazāka iespēja nolasīt netīrus datus vai nepilnīgus datus, bet jo smagāka ir veiktspējas pasliktināšanās sistēmās ar augstu vienlaicīgumu. Jo zemāks izolācijas līmenis, jo lielāks ir veiktspējas uzlabojums vienlaicīgajā sistēmā, bet paši dati var būt nepilnīgi.

Programmā SQL Server 2012 var iestatīt transakcijas izolācijas līmeni (no zema līdz augstam), izmantojot šādu sintaksi:

TRANSAKCIJU IZOLĀCIJAS LĪMEŅA IESTATĪŠANA
    { LASĪT NESAISTĪTU
    | LASĪT APŅEMŠANOS
    | ATKĀRTOJAMA LASĪŠANA
    | MOMENTUZŅĒMUMS
    | SĒRIJVEIDA IZVEIDE
    }
[ ; ]
Vispirms izveidojiet jaunu testa skriptu, izveidojiet datu bāzi un ievietojiet testa datus šādi:



Izveidot jaunu logu A, atveriet darījumu, veiciet atjaunināšanas darbību un pagaidiet 10 sekundes pirms apņemšanās, kods ir šāds:

Jauna loga B izveide, iestatiet darījumu READ UNCOMMITTED (nesaistītā lasīšana, zemākais līmenis, vienkāršā problēma ir netīra lasīšana, jo tā var nolasīt datus, ko modificējuši citi darījumi, bet nav saistīti.) Tas dara to pašu, kas iestatījums (NOLOCK) SELECT priekšraksta objekta tabulā transakcijā. Vaicājiet datus, kods ir šāds:

Izveidojiet jaunu logu C, tieši vaicājiet datus šādi:

SavukārtIzpildiet logus A, B un C un konstatējiet, ka, atjauninot datus, B logs var nekavējoties atgriezt datus (Iespējams, ka rādījums ir netīri dati), C logam ir jāgaida, līdz A logs pabeidz izpildiatgriezīs datus, kā parādīts zemāk redzamajā attēlā:


(B logs)


(C logs)

(Beigas)





Iepriekšējo:Redis noturības atšķirība starp RDB un AOF
Nākamo:MySQL eksportē vaicājuma rezultātus failā
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com