Eristys. Toistettava Luku- ja Sarjoitettavuustasot
Repeatable Read
Repeatable Read -eristystaso tietokannoissa varmistaa, että kun aloitat tapahtuman, näet tietokannan tilannekuvan, joka pysyy samana koko tehtävän ajan.
Tämä tarkoittaa, että vaikka muutoksia tapahtuisi tietokantaan työskentelysi aikana, näet vain sen datan, joka oli olemassa tapahtuman alkaessa.
Repeatable Read -eristyksen alaiset tapahtumat pitävät luku-lukot kaikissa viittaamissaan riveissä ja kirjoituslukot riveissä, joita ne lisäävät, päivittävät tai poistavat. Tämä estää päivitysten katoamisen, likaiset ja ei-toistettavat luvut.
Kuitenkin yksi ongelma voi edelleen esiintyä tämän eristystason käytössä – phantom read.
Phantom read
Phantom read voi tapahtua, kun yksi tapahtuma lukee dataa ja toinen tapahtuma lisää uusia tietueita tietokantaan. Tämän seurauksena voimme saada kaksi peräkkäistä lukutapahtumaa, jotka palauttavat erilaiset tulosjoukot.
Non-repeatable read vs phantom read
Non-repeatable read tapahtuu, kun käyttäjän A suorittama sama kysely palauttaa eri arvot samalle riville peräkkäisissä luissa, tyypillisesti käyttäjän B tekemien muutosten vuoksi.
Phantom read puolestaan tapahtuu, kun käyttäjän A suorittama sama kysely palauttaa eri rivijoukot peräkkäisissä luissa, vaikka yksittäisiä rivejä ei olisi päivitetty.
Voimme määrittää tämän eristystason SQL-kyselyssämme seuraavalla komennolla:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Serializable
Serializable-eristystaso on korkein tietokantojen eristystaso, tarjoten tiukimman samanaikaisuuden hallinnan.
Tällä tasolla tapahtumat suoritetaan ikään kuin ne olisi käsitelty sarjallisesti, yksi kerrallaan, vaikka ne todellisuudessa voisivatkin olla käynnissä samanaikaisesti. Tämä varmistaa, että tapahtumien lopputulos on sama kuin jos ne olisi suoritettu jossain sarjallisessa järjestyksessä, säilyttäen johdonmukaisuuden ja estäen kaikki tunnetut samanaikaisuuden poikkeamat.
Huomio
Tämän eristystason käyttö voi johtaa suorituskyvyn heikkenemiseen lisääntyneen lukituksen vuoksi.
Voimme käyttää seuraavaa komentoa tämän eristystason asettamiseen SQL-kyselyssämme:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
What is the difference between phantom read and non-repeatable read?
Can you give an example of how phantom reads occur in practice?
How does the Serializable isolation level prevent phantom reads?
Awesome!
Completion rate improved to 4.35
Eristys. Toistettava Luku- ja Sarjoitettavuustasot
Pyyhkäise näyttääksesi valikon
Repeatable Read
Repeatable Read -eristystaso tietokannoissa varmistaa, että kun aloitat tapahtuman, näet tietokannan tilannekuvan, joka pysyy samana koko tehtävän ajan.
Tämä tarkoittaa, että vaikka muutoksia tapahtuisi tietokantaan työskentelysi aikana, näet vain sen datan, joka oli olemassa tapahtuman alkaessa.
Repeatable Read -eristyksen alaiset tapahtumat pitävät luku-lukot kaikissa viittaamissaan riveissä ja kirjoituslukot riveissä, joita ne lisäävät, päivittävät tai poistavat. Tämä estää päivitysten katoamisen, likaiset ja ei-toistettavat luvut.
Kuitenkin yksi ongelma voi edelleen esiintyä tämän eristystason käytössä – phantom read.
Phantom read
Phantom read voi tapahtua, kun yksi tapahtuma lukee dataa ja toinen tapahtuma lisää uusia tietueita tietokantaan. Tämän seurauksena voimme saada kaksi peräkkäistä lukutapahtumaa, jotka palauttavat erilaiset tulosjoukot.
Non-repeatable read vs phantom read
Non-repeatable read tapahtuu, kun käyttäjän A suorittama sama kysely palauttaa eri arvot samalle riville peräkkäisissä luissa, tyypillisesti käyttäjän B tekemien muutosten vuoksi.
Phantom read puolestaan tapahtuu, kun käyttäjän A suorittama sama kysely palauttaa eri rivijoukot peräkkäisissä luissa, vaikka yksittäisiä rivejä ei olisi päivitetty.
Voimme määrittää tämän eristystason SQL-kyselyssämme seuraavalla komennolla:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Serializable
Serializable-eristystaso on korkein tietokantojen eristystaso, tarjoten tiukimman samanaikaisuuden hallinnan.
Tällä tasolla tapahtumat suoritetaan ikään kuin ne olisi käsitelty sarjallisesti, yksi kerrallaan, vaikka ne todellisuudessa voisivatkin olla käynnissä samanaikaisesti. Tämä varmistaa, että tapahtumien lopputulos on sama kuin jos ne olisi suoritettu jossain sarjallisessa järjestyksessä, säilyttäen johdonmukaisuuden ja estäen kaikki tunnetut samanaikaisuuden poikkeamat.
Huomio
Tämän eristystason käyttö voi johtaa suorituskyvyn heikkenemiseen lisääntyneen lukituksen vuoksi.
Voimme käyttää seuraavaa komentoa tämän eristystason asettamiseen SQL-kyselyssämme:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Kiitos palautteestasi!