Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 12282|Vastaus: 0

[Lähde] SQL Server asettaa transaktioiden eristystason

[Kopioi linkki]
Julkaistu 5.2.2021 11.53.34 | | | |
Entity Frameworkin kyselyoptimointi KANSSA(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Tietokantalukot NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Transaktioiden eristämisen taso SQL Serverissä ja niiden suhde likaisiin lukuihin, ei-toistettaviin lukuihin, haamulukemiin jne. (koodiargumentit ja aikajaksot)

Ymmärtämällä nämä ongelmat, joita voi ilmetä samanaikaisessa tietokantaan pääsyssä, voimme jatkaa tietokannan eristystason käsitteen ymmärtämistä yksinkertaisella kielellä: miten haluat eristää samanaikaiset transaktiot ja missä määrin? Esimerkiksi, jos likaiset lukemat voidaan sietää tai jos et halua samanaikaisten transaktioiden olevan likaisia lukemia, ne voidaan asettaa eristystasolle, jotta samanaikaisten transaktioiden eristäminen on löyhä tai vakava.

Mitä korkeampi eristystaso on, sitä pienempi riski lukea likaista tai keskeneräistä dataa, mutta sitä vakavampi suorituskyvyn heikkeneminen on korkean samanaikaisuuden järjestelmissä. Mitä alhaisempi eristystaso, sitä suurempi suorituskyvyn parannus rinnakkaisessa järjestelmässä, mutta itse data voi olla puutteellista.

SQL Server 2012:ssa voit asettaa transaktion eristystason (matalasta korkeaan) tällä syntaksilla:

ASETA TRANSAKTIOIDEN ERISTYSTASO
    { LUE SITOUTUMATON
    | LUETTU SITOUTUNUT
    | TOISTETTAVAA LUKUA
    | SNAPSHOT
    | SARJOITETTAVANA
    }
[ ; ]
Luo ensin uusi testiskripti, luo tietokanta ja lisää testitiedot seuraavasti:



Luo uusi ikkuna A, avaa transaktio, suorittaa päivitysoperaatio ja odottaa 10 sekuntia ennen sitoutumista, koodi on seuraava:

Luo uusi ikkuna B, aseta transaktioksi LUKU SITOUTUMATON (sitoutumaton luku, alin taso, helppo ongelma on likainen lukeminen, koska se voi lukea muiden transaktioiden muokattuja mutta sitoutumattomia tietoja.) Se tekee saman kuin asettamalla (NOLOCK) SELECT-lauseen objektitaululle transaktiossa. Kysy dataa, koodi on seuraava:

Luo uusi ikkuna C, hakea tietoja suoraan seuraavasti:

Vastavuoroisesti,Suorita ikkunat A, B ja C ja huomaa, että dataa päivittäessä ikkuna B voi välittömästi palauttaa tiedot (On mahdollista, että lukema on likaista dataa), C-ikkunan täytyy odottaa, että A ikkuna suorittaapalauttaa tiedot, kuten alla olevassa kuvassa on esitetty:


(Ikkuna B)


(Ikkuna C)

(Loppu)





Edellinen:Redis Persistenssin ero RDB:n ja AOF:n välillä
Seuraava:MySQL vie kyselytulokset tiedostoon
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com