Eristys. Toistettava Luku ja Sarjoitustasot
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 tietokantaan tehtäisiin muutoksia työskentelyn aikana, näet vain sen tiedon, joka oli olemassa tapahtuman alkaessa.
Repeatable Read -eristyksen aikana tapahtumat pitävät luku-lukot kaikissa viitatuissa riveissä ja kirjoituslukot riveissä, joita lisätään, päivitetään tai poistetaan. Tämä estää päivitysten katoamisen, likaiset ja ei-toistettavat luvut.
Kuitenkin yksi ongelma voi edelleen esiintyä tämän eristystason kanssa – fantomiluku.
Fantomiluku
Fantomiluku voi esiintyä, kun yksi tapahtuma lukee tietoja ja toinen tapahtuma lisää uusia tietueita tietokantaan. Tämän seurauksena kahdessa peräkkäisessä lukuoperaatiossa voidaan saada erilaiset tulosjoukot.
Ei-toistettava luku vs fantomiluku
Ei-toistettava luku 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.
Fantomiluku 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 more examples of phantom reads?
How does the Serializable isolation level prevent phantom reads?
Awesome!
Completion rate improved to 4.55
Eristys. Toistettava Luku ja Sarjoitustasot
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 tietokantaan tehtäisiin muutoksia työskentelyn aikana, näet vain sen tiedon, joka oli olemassa tapahtuman alkaessa.
Repeatable Read -eristyksen aikana tapahtumat pitävät luku-lukot kaikissa viitatuissa riveissä ja kirjoituslukot riveissä, joita lisätään, päivitetään tai poistetaan. Tämä estää päivitysten katoamisen, likaiset ja ei-toistettavat luvut.
Kuitenkin yksi ongelma voi edelleen esiintyä tämän eristystason kanssa – fantomiluku.
Fantomiluku
Fantomiluku voi esiintyä, kun yksi tapahtuma lukee tietoja ja toinen tapahtuma lisää uusia tietueita tietokantaan. Tämän seurauksena kahdessa peräkkäisessä lukuoperaatiossa voidaan saada erilaiset tulosjoukot.
Ei-toistettava luku vs fantomiluku
Ei-toistettava luku 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.
Fantomiluku 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!