Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Eristys. Toistettava Luku ja Sarjoitustasot | Acid
Quizzes & Challenges
Quizzes
Challenges
/
SQL-optimointi ja kyselyominaisuudet

bookEristys. 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;

question-icon

Yhdistä eristystasot niiden kuvauksiin.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 7

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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?

bookEristys. 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;

question-icon

Yhdistä eristystasot niiden kuvauksiin.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 7
some-alt