Transaktioiden eristyvyys

Samankaltaiset tiedostot
R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

Muita transaktioiden hallintamenetelmiä

Tietokantarakenteet ja -algoritmit 6. harjoitus

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus

5.2 Samanaikaisuuden hallinta

Samanaikaisuuden hallinta Snapshot Isolationin avulla

D B. Transaktionhallinta - samanaikaisuus

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus

Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Looginen tietokanta ja transaktiot

HELIA 1 (14) Outi Virkki Tiedonhallinta

Web-palveluiden transaktionaalinen koostaminen

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Transaktionhallinta. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

5.2 Samanaikaisuuden hallinta

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

Tietokantarakenteet ja -algoritmit 3. harjoitus

CSE-A1200 Tietokannat

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

Hajautettujen transaktioiden hallinta

Transaktiot - kertausta

Transaktioiden samanaikaisuuden hallinta

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Sisältö. Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat. Abstrakti tietokantamalli. Tietoalkio ACID. Transaktion tilat. Abstrakti tietokantamalli

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Tietohakemisto ja Transaktionkäsittely

T Transaktionhallinta tietokantajärjestelmissä

2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}?

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2.

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2:

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

SELECT-lauseen perusmuoto

10 Matriisit ja yhtälöryhmät

Tietokanta (database)

Funktiot. funktioita f : A R. Yleensä funktion määrittelyjoukko M f = A on jokin väli, muttei aina.

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141

Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

isomeerejä yhteensä yhdeksän kappaletta.

2 exp( 2u), kun u > 0 f U (u) = v = 3 + u 3v + uv = u. f V (v) dv = f U (u) du du f V (v) = f U (u) dv = f U (h(v)) h (v) = f U 1 v (1 v) 2

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

811120P Diskreetit rakenteet

Keskusmuistitietokantojen samanaikaisuuden hallinta

Salausmenetelmät LUKUTEORIAA JA ALGORITMEJA. Veikko Keränen, Jouko Teeriaho (RAMK, 2006) 3. Kongruenssit. à 3.4 Kongruenssien laskusääntöjä

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Lineaarialgebra ja differentiaaliyhtälöt Laskuharjoitus 1 / vko 44

Predikaattilogiikan malli-teoreettinen semantiikka

2 Konveksisuus ja ratkaisun olemassaolo

LUKUTEORIA johdantoa

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

Analyysi I (sivuaineopiskelijoille)

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Seuraavana tavoitteena on osoittaa, että binääristen neliömuotojen ekvivalenssiluokat

Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä. Vesa Tähkävuori

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

T Syksy 2003 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

Mikäli huomaat virheen tai on kysyttävää liittyen malleihin, lähetä viesti osoitteeseen

Taulun avoimista haaroista saadaan kelvolliset lausejoukot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Lineaarinen toisen kertaluvun yhtälö

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

TIEDONHALLINTA - SYKSY Luento 12. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

MS-A0402 Diskreetin matematiikan perusteet

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) OT

Y ja

Transkriptio:

Transaktioiden eristyvyys H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on Management of Data, 1 10, kohdat 1 (introduction), 2 (isolation definitions) ja 3 (analyzing ANSI SQL isolation levels). A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 617 624, luvun 15 (transactions) kohta 15.4 (concurrent executions) ja kohdan 15.5 (serializability) alakohta 15.5.1 (conflict serializability); sivut 626 630, kohdat 15.6 (recoverability) ja 15.8 (testing for serializability). 177

Transaktioiden ajoitukset, s. 179. Transaktioiden eristyvyyden takaaminen, s. 185. Sitoutumaton päivitys, s. 187. Eristyvyysanomaliat, s. 190. Eristyvyysanomaliat ja tietokannan eheysrajoitteet, s. 193. SQL:n eristyvyystasot, s. 198. Eristyvyys ja peruuntuvuus, s. 201. Sarjallistuvuus, s. 208. 178

Transaktioiden ajoitukset Tietokantajärjestelmän keskeisiä periaatteita on tietokannan tietojen samanaikainen yhteiskäyttö. Useat transaktiot voivat hallitusti yhtäaikaa tai vuorotellen operoida tietokannan tietoalkioihin. Hienorakeisessa transaktioiden hallinnassa transaktio T 2 yleensä voi lukea tai päivittää sivulla p sijaitsevaa tietoalkiota y, vaikka toinen, vielä aktiivinen transaktio T 1 olisi lukenut tai päivittänyt samalla sivulla p sijaitsevan toisen tietoalkion x. Tämän mahdollistaa aiemmin selostettu salpauskäytäntö, jonka mukaisesti sivu pidetään salvattuna ainoastaan luku- tai päivitysoperaation keston ajan. Transaktion T 2 tulisi ilman muuta voida lukea tietoalkio x, jonka toinen, vielä aktiivinen transaktio T 1 on lukenut, mikäli kumpikaan ei päivitä x:ää. Transaktioiden operaatioiden samanaikainen (limittäinen) suoritus ei saa rikkoa tietokannan eheyttä eikä estää tietokannan elvytystä häiriöstä. Vain tietyt transaktioiden operaatioiden keskinäiset limittäiset suoritusjärjestykset voidaan sallia. 179

Määritellään yleisesti transaktiojoukon mielivaltainen ajoitus eli transaktioiden operaatioiden limittäinen suoritusjärjestys. Transaktiomalliemme mukainen transaktio voi sisältää tietokantaoperaatioidensa (R, I, D, W, I 1, D 1, W 1 ) argumentteina vakioita ja muuttujia ja näistä muodostettuja lausekkeita. Muuttujia voi esiintyä operaatioiden tulosparametrien paikalla. Syöteparametrinkin paikalla voi esiintyä muuttuja tai muuttujia sisältävä lauseke, jos muuttuja on sidottu, ts. se esiintyy jossakin edeltävässä lukuoperaatiossa tulosparametrin paikalla niin, että transaktion suorituksessa kaikille muuttujille määräytyy arvo. Transaktiossa BR[x, x,u]w[x,u,u t]r[y, y,v]w[y,v,v +t]c x:n, y:n ja t:n täytyy olla vakioita, mutta u ja v voivat olla joko vakioita tai muuttujia. Sama muuttuja tarkoittaa samaa arvoa kaikkialla saman transaktion sisällä. Eri transaktioiden muuttujat ovat eri muuttujia (vaikka olisivat saman nimisiä). Transaktio on muuttujaton, jos siinä ei esiinny muuttujia. 180

Olkoon T transaktio ja v 1,...,v n kaikki sen eri muuttujat. T :n sijoitus σ on joukko {(v 1,a 1 ),...,(v n,a n )}, missä a 1, a 2,..., a n ovat vakioita. T σ on se muuttujaton transaktio, joka saadaan T :stä korvaamalla jokainen muuttujan v i esiintymä vakiolla a i, i = 1,...,n. T σ kuvaa T :n suoritusta jokaisessa sellaisessa tietokannassa D, jossa T σ voidaan ajaa. Esim. transaktion T = BR[x,u]W[x,u,u t]r[y,v]w[y,v,v +t]c sijoituksella σ = {(u, 500),(v, 600)} saadaan T σ = BR[x,500]W[x,500,500 t]r[y,600]w[y,600,600 +t]c. T σ voidaan ajaa jokaisessa tietokannassa, joka sisältää monikot (x,500) ja (y,600). 181

Olkoot T 1,...,T n transaktioita. Joukossa voi olla eteneviä, sitoutuneita, peruuntuvia ja peruutuksensa päättäneitä transaktioita, ja transaktiot voivat sisältää osittaisperuutuksia. Transaktiojoukon {T 1,...,T n } ajoitus (schedule) eli historia (history) H on muuttujattomien transaktioiden T 1 σ 1,..., T n σ n limite (shuffle), missä σ i on T i :n jokin sijoitus, i = 1,...,n. Ts. H on seuraavat ehdot täyttävä operaatiojono: (1) H on operaatiojonon T 1 σ 1...T n σ n permutaatio, so. sisältää täsmälleen transaktioiden T 1 σ 1,...,T n σ n operaatiot, mutta mahdollisesti eri järjestyksessä. (2) Jokaisen transaktion T i σ i operaatiot esiintyvät H:ssa samassa järjestyksessä kuin T i σ i :ssä. 182

Sarjallinen ajoitus (serial schedule) H on transaktioiden permutaatio. Siinä kunkin transaktion T i σ i operaatiot esiintyvät kaikki välittömästi peräkkäin, ts. H on muotoa T i1 σ i1...t in σ in, missä {i 1,...,i n } = {1,...,n}. Ajoitus, joka ei ole sarjallinen, on epäsarjallinen eli rinnakkainen ajoitus (nonserial schedule). Esimerkki kolmen transaktion rinnakkaisesta ajoituksesta: T 1 : T 2 : T 3 : BR[1, 1] BR[2, 2] W[1,0]C BR[3, 3] W[2,0] W[3,0]C C Eräs samojen transaktioiden sarjallinen ajoitus: T 1 : BR[1, 1]W[1,0]C T 2 : T 3 : BR[3, 3]W[3,0]C BR[2, 2]W[2,0]C 183

Transaktiojoukon {T 1,...,T n } ajoituksessa H transaktion T i operaatiota o[ x] merkitään o i [ x]. Esimerkiksi em. ajoituksia merkitään: B 1 R 1 [1, 1]B 2 R 2 [2, 2]W 1 [1,0]C 1 B 3 R 3 [3, 3]W 2 [2,0]W 3 [3,0]C 3 C 2. B 3 R 3 [3, 3]W 3 [3,0]C 3 B 1 R 1 [1, 1]W 1 [1,0]C 1 B 2 R 2 [2, 2]W 2 [2,0]C 2. Merkintä (o i o i)[ x] tarkoittaa operaatiota o i [ x] tai operaatiota o i[ x]. Sanomme: T i :n operaatio R[x, z] lukee avainvälin [z,x]. T i :n operaatio R[x,>z] lukee avainvälin (z,x]. T i :n operaatio (I D W I 1 D 1 W 1 )[x] päivittää avainarvoa x. Luku-kirjoitusmallin lukuoperaatio R[x] tarkoittaa samaa kuin avainvälimallin operaatio R[x, x]; operaatio siis lukee avainvälin [x,x]. 184

Transaktioiden eristyvyyden takaaminen Kuten aiemmin on jo todettu, transaktiot tulee voida ohjelmoida ottamatta huomioon muita samanaikaisia transaktioita. Tietokantasovelluksen ohjelmoijalta edellytetään ainoastaan, että kukin transaktio säilyttää loogisen tietokannan eheyden, kun transaktio suoritetaan yksinään häiriöttömässä tilassa. Tietokannan hallintajärjestelmän samanaikaisuuden hallinnan (concurrency control) pitää huolehtia siitä, että järjestelmään tulevien transaktioiden operaatiot suoritetaan sellaisen ajoituksen mukaisesti, että (sitoutuneiden) transaktioiden eristyvyys säilyy (halutulla tasolla). Transaktion T täydellinen eristyvyys (isolation) tarkoittaa: Vaikka useampia transaktioita on suorituksessa samanaikaisesti, transaktiosta T näyttää, että jokainen toinen transaktio T joko on suoritettu kokonaisuudessaan ennen T :tä tai suoritetaan kokonaisuudessaan vasta T :n jälkeen. Jokainen sarjallinen ajoitus, jossa kaikki transaktiot ovat sitoutuneita tai peruuntuneita, takaa triviaalisti kaikille transaktioille täyden eristyvyyden. Sitä vastoin eristyvyys voi rikkoutua eri tavoin, jos ajoitus on rinnakkainen tai siinä on sitoutumattomia transaktioita. 185

Samanaikaisuuden hallintamenetelmät voidaan luokitella pessimistisiin ja optimistisiin. Pessimistisessä samanaikaisuuden hallinnassa millekään transaktiolle ei sallita eristyvyysrikkomusta (eli ns. eristyvyysanomaliaa), joka on kielletty transaktiolle asetetulla eristyvyystasolla. Mikäli transaktion operaation suoritus johtaisi kiellettyyn eristyvyysrikkomukseen, operaation suorittamista lykätään laittamalla transaktio odottamaan hetkeä, jolloin operaation suoritus ei enää johda rikkomukseen, tai sitten transaktio keskeytetään ja peruutetaan välittömästi. Optimistisessa samanaikaisuuden hallinnassa etenevän transaktion sallitaan syyllistyvän eristyvyysrikkomuksiin, mutta transaktion sitoutumispisteessä tarkistetaan, onko rikkomuksia sattunut, ja jos on, niin transaktion ei sallitakaan sitoutua, vaan se keskeytetään ja peruutetaan. 186

Sitoutumaton päivitys Tietoalkio x on likainen (dirty) eli sitoutumaton (uncommitted) tietyllä hetkellä, jos sitä viimeksi päivittänyt transaktio T on vielä aktiivinen ja on mahdollista, että T vielä muuttaa x:n arvoa. Määritellään käsite täsmällisesti suhteessa transaktiomalleihimme. Avainarvolla x on ajoituksen H aktiivisen transaktion T likainen eli sitoutumaton päivitys (dirty update, uncommitted update), jos jompikumpi seuraavista ehdoista pätee: (1) x:n viimeinen päivitys H:ssa on T :n etenemisoperaatio I[x], D[x] tai W[x]. (2) x:n viimeinen päivitys H:ssa on T :n käänteisoperaatio I 1 [x], D 1 [x] tai W 1 [x], jota vastaavan T :n etenemisoperaation I[x], D[x] tai W[x] edellä H:ssa on x:llä vielä peruuttamaton päivitys T :n etenemisoperaatiolla. Ts. x:n päivitys H:ssa T :n käänteisoperaatiolla I 1 [x], D 1 [x] tai W 1 [x] ei vielä palauta x:lle sitä arvoa, joka x:llä oli juuri ennen kuin T sitä ensi kerran päivitti. Heti kun T :n kaikki x:n päivitykset on peruutettu, x:ää pidetään sitoutuneena. 187

Tarkastellaan peruuntuneen transaktion T 1 ajoitusta H = B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]a 1 I 1 1 [x,v]d 1 1 [x,u]i 1 1 [y,w]c 1. Avainarvolla y on T 1 :n sitoutumaton päivitys H:n alkuosassa B 1 I 1 [y,w]. Avainarvoilla y ja x on T 1 :n sitoutumaton päivitys seuraavissa H:n alkuosissa: B 1 I 1 [y,w]d 1 [x,u]. B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]. B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]a 1. B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]a 1 I 1 1 [x,v]. Avainarvolla y on T 1 :n sitoutumaton päivitys H:n alkuosassa B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]a 1 I1 1 [x,v]d 1 1 [x,u]. Sitä vastoin x on tässä jo sitoutunut, sillä x:n viimeinen päivitys on käänteisoperaatio D 1 1 [x,u], jota vastaava etenemisoperaatio D 1[x,u] on x:n ensimmäinen päivitys T 1 :ssä. H:n alkuosassa H = B 1 I 1 [y,w]d 1 [x,u]i 1 [x,v]a 1 I 1 1 [x,v]d 1 1 [x,u]i 1 1 [y,w] ovat y ja x molemmat sitoutuneita. 188

Määritelmän mukaan etenevän transaktion T 1 osittaisperuutus voi muuttaa likaisen avainarvon x sitoutuneeksi, minkä jälkeen transaktio voi uudestaan päivittää x:ää ja siis muuttaa x:n likaiseksi, minkä jälkeen uusi osittaisperuutus voi jälleen muuttaa x:n sitoutuneeksi. B 1 S 1 [P]W 1 [x]. B 1 S 1 [P]W 1 [x]a 1 [P]W1 1 [x]. B 1 S 1 [P]W 1 [x]a 1 [P]W1 1 [x]c 1 [P]S 1 [Q]W 1 [x]. B 1 S 1 [P]W 1 [x]a 1 [P]W1 1 [x]c 1 [P]S 1 [Q]W 1 [x]a 1 [Q]W1 1 [x]. B 1 S 1 [P]W 1 [x]a 1 [P]W1 1 [x]c 1 [P]S 1 [Q]W 1 [x]a 1 [Q]W1 1 [x]c 1 [Q]W 1 [x]. B 1 S 1 [P]W 1 [x]a 1 [P]W1 1 [x]c 1 [P]S 1 [Q]W 1 [x]a 1 [Q]W1 1 [x]c 1 [Q]W 1 [x]c 1. 189

Eristyvyysanomaliat Rinnakkaisessa ajoituksessa transaktioiden eristyvyys voi rikkoutua kolmen eristyvyysanomalian (isolation anomaly) vaikutuksesta. Näitä voidaan transaktiomallia tarkemmin kiinnittämättä luonnehtia seuraavasti: (1) Transaktio T 2 kirjoittaa likaisesti (does a dirty write): T 2 päivittää ehdon C täyttävät tietoalkiot, kun jossakin ehdon C täyttävässä tietoalkiossa on transaktion T 1 sitoutumaton päivitys. (2) Transaktio T 2 lukee likaisesti (does a dirty read): T 2 lukee ehdon C täyttävät tietoalkiot, kun jossakin ehdon C täyttävässä tietoalkiossa on transaktion T 1 sitoutumaton päivitys. (3) Transaktio T 1 lukee toistokelvottomasti (does an unrepeatable read): T 1 lukee ehdon C täyttävät tietoalkiot, minkä jälkeen toinen transaktio T 2 päivittää jonkin ehdon C täyttävän tietoalkion T 1 :n ollessa vielä etenevä. T 1 :n lukuoperaatio on toistokelvoton, sillä sen toisto T 2 :n sitoutumisen jälkeen saattaa antaa toisen tuloksen. 190

Avainvälimallissa eristyvyysanomaliat ilmenevät seuraavasti: (1) Kirjoitetaan likainen eli sitoutumaton avainarvo. Esim. T 2 :n likainen kirjoitus I 2 [x] ajoituksessa B 1 D 1 [x]b 2 I 2 [x]... (2) Luetaan likainen avainväli. Esim. T 2 :n likainen luku R 2 [3,> 1] ajoituksessa B 1 D 1 [2]B 2 R 2 [3,>1]... (3) Luetaan avainväli toistokelvottomasti. Esim. T 1 :n toistokelvoton luku R 1 [3,>1] ajoituksessa B 1 R 1 [3,>1]B 2 I 2 [2]... Lukuoperaatiota R 1 [3,> 1] ei voida toistaa T 1 :ssä T 2 :n sitoutumisen jälkeen, vaan R 1 [x,>1] toteutuisi muodossa R 1 [2,>1]. 191

Avainvälimallin eristyvyysanomaliat täsmällisesti määriteltyinä: (1) Transaktion T 2 avainarvon x päivitysoperaatio o 2 [x] on likainen kirjoitus (dirty write) ajoituksessa H 1 o 2 [x]h 2, jos x:llä on toisen transaktion T 1 sitoutumaton päivitys H 1 :ssä. (2) Transaktion T 2 lukuoperaatio R 2 [x,θz] on likainen luku (dirty read) ajoituksessa H 1 R 2 [x,θz]h 2, jos jollakin ehdon x y θ z täyttävällä avainarvolla y on toisen transaktion T 1 :n sitoutumaton päivitys H 1 :ssä. (3) Transaktion T 1 lukuoperaatio R 1 [x,θz] on toistokelvoton luku (unrepeatable read) ajoituksessa H 1 R 1 [x,θz]h 2 o 2 [y]h 3, jos T 1 on etenevä H 1 R 1 [x,θz]h 2 :ssa ja o 2 [y] on toisen transaktion T 2 ehdon x y θ z täyttävän avainarvon y päivitysoperaatio. Huomaa, ettei lukuoperaatiota R 1 [x,θz] pidetä toistokelvottomana siinä tapauksessa, että T 1 on peruuntuva H 1 R 1 [x,θz]h 2 :ssa, sillä T 1 lopulta peruuttaa kaikki päivityksensä, mukaan lukien ne, jotka mahdollisesti perustuvat luettuun avainarvoon. Transaktion peruutusvaiheessahan ei myöskään voi esiintyä lukuoperaatioita. 192

Eristyvyysanomaliat ja tietokannan eheysrajoitteet Seuraava esimerkki osoittaa, että likainen kirjoitus voi helposti rikkoa tietokannan eheyden. Tietokannan eheysrajoite lausuu, että tietokannassa pitää olla avainarvoilla x ja y varustetut monikot ja niillä aina sama arvo. Transaktiot T 1 = BW[x,u,1]W[y,v,1]C ja T 2 = BW[x,u,2]W[y,v,2]C ovat kumpikin eheysrajoitteen suhteen oikeellisia: kumpikin transaktio yksinään suoritettuna vie tietokannan eheästä tilasta eheään tilaan. Transaktioiden rinnakkainen ajoitus B 1 W 1 [x,0,1]b 2 W 2 [x,1,2]w 2 [y,0,2]c 2 W 1 [y,2,1]c 1 voidaan ajaa jokaisessa monikot (x, 0) ja (y, 0) sisältävässä tietokannassa ja tuottaa tietokannan, jossa avainarvoin x ja y varustetut monikot ovat (x,2) ja (y,1). Ajoitus siis rikkoo tietokannan eheyden. W 2 [x,1,2] on likainen kirjoitus. Tämä on ajoituksen ainoa eristyvyysanomalia. 193

Seuraava esimerkki osoittaa, kuinka likainen luku voi rikkoa tietokannan eheyden. Tietokannan eheysrajoite lausuu, että tietokannassa pitää olla avainarvoilla x ja y varustetut monikot ja niillä aina positiiviset arvot. Transaktiot T 1 = BW[x,u,0]W[x,0,1]C ja T 2 = BR[x,u]W[y,v,u]C ovat kumpikin eheysrajoitteen suhteen oikeellisia. Transaktioiden ajoitus B 1 W 1 [x,1,0]b 2 R 2 [x,0]w 2 [y,1,0]c 2 W 1 [x,0,1]c 1 voidaan ajaa jokaisessa monikot (x, 1) ja (y, 1) sisältävässä tietokannassa ja tuottaa tietokannan, jossa avainarvoin x ja y varustetut monikot ovat (x,1) ja (y,0). Ajoitus siis rikkoo tietokannan eheyden. Ajoituksen ainoa eristyvyysanomalia on likainen luku R 2 [x,0]. T 2 luki arvon, joka ei vielä ollut lopullinen, sitoutunut arvo, ja käytti sitä tietokannan päivittämiseen. 194

Toinen esimerkki. Sama eheysrajoite: avainarvoilla x ja y varustetuilla monikoilla positiiviset arvot. T 2 kuten edellä: T 2 = BR[x,u]W[y,v,u]C. Transaktio T 3 = BW[x,u,0]AW 1 [x,u,0]c on peruuntunut ja siis triviaalisti oikeellinen minkä tahansa eheysrajoitteen suhteen. Transaktioiden T 2 ja T 3 ajoitus B 3 W 3 [x,1,0]b 2 R 2 [x,0]w 2 [y,1,0]c 2 A 3 W 1 3 [x,1,0]c 3 kuitenkin rikkoo tietokannan eheyden. Ajoituksen ainoa eristyvyysanomalia on likainen luku R 2 [x,0]. Tässäkin T 2 luki arvon, joka ei jäänytkään lopulliseksi, ja käytti sitä tietokannan päivittämiseen. 195

Seuraava esimerkki osoittaa, kuinka toistokelvoton luku voi rikkoa tietokannan eheyden. Tietokannan eheysrajoite lausuu, että avainarvoilla x ja y varustetuissa monikoissa (x,u) ja (y,v) pitää olla u + v 0 ( tilien x ja y saldojen summa ei saa olla negatiivinen ). Transaktiot T 1 = BR[y,v]W[x,u, v]c ( saldojen summan u + v otto tililtä x ), T 2 = BR[x,u]W[y,v, u]c ( saldojen summan u + v otto tililtä y ) nollaavat summan u + v ja ovat siis kumpikin eheysrajoitteen suhteen oikeellisia. Ajoitus B 1 R 1 [y,v]b 2 R 2 [x,u]w 2 [y,v, u]c 2 W 1 [x,u, v]c 1 kuitenkin rikkoo eheysrajoitteen, kun u + v > 0. Ajoituksen ainoa eristyvyysanomalia on toistokelvoton luku R 1 [y,v]. Transaktion T 1 olisi pitänyt ennen x:n päivitystä lukea y:n tuore arvo, jotta tietokanta olisi pysynyt eheänä. Operaation R 1 [y,v] toisto T 1 :ssä T 2 :n sitouduttua olisikin toteutunut muodossa R 1 [y, u], jolloin W 1 [x,u, v] olisi toteutunut muodossa W 1 [x,u,u]. 196

Toinen esimerkki. Tietokannan eheysrajoite lausuu, että avainarvolla 0 varustetun monikon arvon pitää olla kahden peräkkäisillä avainarvoilla varustettujen monikoiden arvojen summa. Eheysrajoite on voimassa esim. tietokannassa D = {(0, 4),(1, 1),(3, 3)}. Transaktiot T 1 = BR[x, 1,u]R[y,>x,v]W[0,w,u + v]c ja T 2 = BI[2,2]R[x,>2,u]W[0,w,2 + u]c ovat kumpikin eheysrajoitteen suhteen oikeellisia. Ajoitus B 1 R 1 [1, 1,1]R 1 [3,>1,3]B 2 I 2 [2,2]R 2 [3,>2,3]W 2 [0,4,5]C 2 W 1 [0,5,4]C 1 voidaan ajaa D:ssä ja tuottaa tietokannan D = {(0,4),(1,1),(2,2),(3,3)}, joka ei täytä eheysrajoitetta. Ajoituksen ainoa eristyvyysanomalia on toistokelvoton luku R 1 [3,> 1,3]. T 2 :n lisäämää monikkoa (2,2) kutsutaan haamumonikoksi (phantom tuple) tai lyhyesti haamuksi. Kirjallisuudessa tällaista toistokelvottoman luvun erikoistapausta kutsutaan yleisesti haamuilmiöksi (phantom phenomenon). 197

SQL:n eristyvyystasot SQL-kielessä on set transaction -lause, jolla sovellusohjelmassa voidaan mm. asettaa seuraavaksi käynnistettävän transaktion eristyvyystaso (isolation level) eli eristyvyysaste (degree of isolation). Eristyvyysasteiden määrittelyn pohjana olevat eristyvyysanomaliat eivät täysin vastaa edellä määrittelemiämme anomalioita. SQL:n toistokelvoton luku ei näet sisällä toistokelvottomia haamulukuja. SQL:ssä määriteltyjä eristyvyysasteita on neljä (lueteltuina vaativuudeltaan nousevassa järjestyksessä): sitoutumattoman lukeminen, sitoutuneen lukeminen, toistokelpoinen luku ja sarjallistuva. Eristyvyysasteiden merkitys selostetaan seuraavassa BERENSONin ja kumppanien (1995) korjaamien määritelmien mukaisesti. 198

1 Sitoutumattoman lukeminen (read uncommitted): transaktio ei kirjoita likaista, mutta saattaa lukea likaista tai toistokelvottomasti ja kohdata haamuja. 2 Sitoutuneen lukeminen (read committed): transaktio ei kirjoita eikä lue likaista, mutta saattaa lukea toistokelvottomasti ja kohdata haamuja. 3 Toistokelpoinen luku (repeatable read): transaktio ei kirjoita likaista eikä lue likaista tai toistokelvottomasti, mutta saattaa kohdata haamuja. 4 Sarjallistuva (serializable; oletus): transaktio ei kirjoita likaista eikä lue likaista tai toistokelvottomasti eikä myöskään kohtaa haamuja. Tällä tasolla kaikki määritelmämme mukaiset likaiset kirjoitukset, likaiset luvut ja toistokelvottomat luvut on estetty. 199

DB2-järjestelmässä käytetyt eristyvyysasteiden nimitykset vastaavat paremmin tällä kurssilla esitettyjä määritelmiä kuin SQL:n eristyvyysasteet. DB2:ssa eristyvyysasteen 3 nimenä on luvun vakaus (read stability). Toistokelpoisen luvun eristyvyysaste tarkoittaa DB2:ssa SQL:n eristyvyysastetta 4. Tietokannan hallintajärjestelmät pystyvät yleensä takaamaan transaktioille vähintään asteen 3. Samanaikaisuuden lisäämiseksi voidaan joillekin transaktioille sallia normaalia heikompi eristyvyysaste. Transaktiolle voidaan taata haluttu eristyvyysaste (1 4 ), jos kaikilta muilta transaktioilta vaaditaan vähintään aste 1. 200

Eristyvyys ja peruuntuvuus Olkoon H transaktiojoukon {T 1,...,T n } ajoitus, joka voidaan ajaa tietokannassa D ja tuottaa tietokannan D. Joukossa on eteneviä, sitoutuneita, peruuntuvia ja peruutuksensa päättäneitä transaktioita. Tarkastellaan H:n etenevää transaktiota T i = Bα i. Siis H:ssa esiintyy limitettynä T i σ i, jollakin T i :n sijoituksella σ i. Nyt T i haluaakin keskeytyä. T i σ i pitää siis täydentää peruutuksensa päättäneeksi transaktioksi (Bα i Aα 1 i C)σ i. Luonnollinen vaatimus on, että peruutuksen pitää olla mahdollista H:ssa, ts. täydennetty ajoitus H(Aα 1 i C)σ i on voitava ajaa D:ssä, eli täydennysjono (Aα 1 i C)σ i on voitava ajaa D :ssa. 201

Tarkastellaan transaktioiden T 1 = BW[x,u,1] ja T 2 = BD[x,u]C ajoitusta B 1 W 1 [x,0,1]b 2 D 2 [x,1]c 2, joka voidaan ajaa monikon (x, 0) sisältävässä tietokannassa D ja tuottaa tietokannan D = D \ {(x,0)}. Nyt T 1 haluaa keskeytyä, joten B 1 W 1 [x,0,1] täydennetään transaktioksi B 1 W 1 [x,0,1]a 1 W 1 1 [x,0,1]c 1. Vastaavaa täydennettyä ajoitusta B 1 W 1 [x,0,1]b 2 D 2 [x,1]c 2 A 1 W 1 1 [x,0,1]c 1 ei kuitenkaan voida ajaa D:ssä. Operaatio D 2 [x,1] on sitoutuneen transaktion T 2 tekemä likainen kirjoitus. 202

Vastaavanlainen tilanne syntyy transaktioiden T 1 = BD[x,u] ja T 2 = BI[x,u]C sekä ajoituksen H = B 1 D 1 [x,0]b 2 I 2 [x,0]c 2 tapauksessa: täydennettyä ajoitusta HA 1 D 1 1 [x,0]c 1 = B 1 D 1 [x,0]b 2 I 2 [x,0]c 2 A 1 D 1 1 [x,0]c 1 ei voida ajaa missään tietokannassa D, jossa H voidaan ajaa. H:n sitoutuneen transaktion T 2 :n operaatio I 2 [x,0] on likainen kirjoitus. 203

Tarkastellaan vielä kahden etenevän transaktion T 1 = BW[x,u,1] ja T 2 = BW[x,u,2] ajoitusta B 1 W 1 [x,0,1]b 2 W 2 [x,1,2]. Tässä W 2 [x,1,2] on likainen kirjoitus. Nyt molemmat transaktiot haluavat keskeytyä. Peruutus onnistuu, jos käänteisoperaatiot suoritetaan tarkalleen kirjoitusten kronologisen järjestyksen käänteisjärjestyksessä: B 1 W 1 [x,0,1]b 2 W 2 [x,1,2]a 2 W 1 2 [x,1,2]c 2 A 1 W 1 1 [x,0,1]c 1 (operaatioiden A 1 ja A 2 tai C 1 ja C 2 keskinäisellä järjestyksellä ei tässä ole väliä). Sitä vastoin T 1 :n kirjoituksen peruuttaminen ensin johtaisi ajoitukseen, joka ei määritelmämme mukaan ole ajettavissa: B 1 W 1 [x,0,1]b 2 W 2 [x,1,2]a 1 W 1 1 [x,0,1]c 1 A 2 W 1 2 [x,1,2]c 2. Jos taas määrittelisimme, että W[x,u,v] on aina ajettavissa tietokannassa, joka sisältää avainarvolla x varustetun monikon (vaikka sen arvo olisikin u:sta poikkeava), tuottaisi peruutus alkuperäisestä poikkeavan tietokannan. 204

Olkoon H ajoitus, jossa yksikään sitoutunut tai peruutuksensa päättänyt transaktio ei kirjoita likaista. Voidaan näyttää: Operaatiojonot, joilla H:n aktiiviset transaktiot täydennetään peruutuksensa päättäneiksi transaktioiksi, voidaan limittää jonoksi γ niin, että täydennetty ajoitus Hγ voidaan ajaa jokaisessa tietokannassa, jossa H voidaan ajaa. Eräässä tällaisessa γ:ssa kirjoitusten käänteisoperaatiot ovat täsmälleen kirjoitusten kronologisen järjestyksen käänteisjärjestyksessä. 205

On järkevää vaatia, että normaalin transaktionkäsittelyn aikana useammat transaktiot voivat peruuntua ja että tämä voi tapahtua rinnakkaisesti satunnaisessa järjestyksessä. Likaiset kirjoitukset on siten kokonaan estettävä. Järjestelmä ei saa tuottaa yhtään ajoitusta, jossa jokin transaktio kirjoittaisi likaista. Käytännössä ei voitaisikaan rajoittua estämään ainoastaan sitoutuneitten tai peruutuksensa päättäneiden transaktioiden likaisia kirjoituksia. Kirjallisuudessa kutsutaan ankaraksi (strict) sellaista ajoitusta, jossa yksikään sitoutunut tai peruutuksensa päättänyt transaktio ei kirjoita likaista ja jossa lisäksi mikään transaktio ei lue likaista. 206

Olkoon H ajoitus, jossa yksikään transaktio ei kirjoita likaista. Olkoon γ mikä tahansa niiden operaatiojonojen limite, joilla H:n aktiiviset transaktiot täydennetään peruutuksensa päättäneiksi transaktioiksi. Voidaan näyttää: (1) Täydennetty ajoitus Hγ voidaan ajaa missä tahansa tietokannassa, jossa H voidaan ajaa. (2) Yksikään Hγ:n transaktio ei kirjoita likaista. (3) Yksikään Hγ:n transaktio ei lue likaista, ellei jokin H:n transaktio lue likaista. (4) Yksikään Hγ:n transaktio ei lue likaista eikä toistokelvottomasti, ellei jokin H:n transaktio lue likaista tai toistokelvottomasti. 207

Sarjallistuvuus Transaktiojoukon {T 1,...,T n } ajoitukset H ja H ovat yhtäpitävät eli ekvivalentit, jos jokaisella tietokannalla D, jolla toinen ajoituksista voidaan ajaa, myös toinen ajoitus voidaan ajaa ja kumpikin ajoitus tuottaa saman tietokannan H(D) = H (D). Transaktiojoukon {T 1,...,T n } ajoitusta sanotaan yleisesti sarjallistuvaksi (serializable), jos se on yhtäpitävä saman transaktiojoukon jonkin sarjallisen ajoituksen kanssa. Tarkastellaan, miten tämä yleinen sarjallistuvuuden käsite rinnastuu SQL:n sarjallistuvaan eristyvyystasoon. 208

Olkoot T 1 ja T 2 ajoituksen H kaksi eri transaktiota. Määrittelemme, että T 1 konfliktoi T 2 :n kanssa, merk. T 1 < T 2, jos jokin seuraavista ehdoista on voimassa H:ssa: (1) T 1 päivittää avainarvoa x ja sitten myös T 2 päivittää x:ää (kirjoitus-kirjoitus-konflikti, write-write conflict). (2) T 1 päivittää avainarvoa x ja sitten T 2 lukee x:n sisältävän avainvälin (kirjoitus-luku-konflikti, write-read conflict). (3) T 1 lukee avainvälin ja sitten T 2 päivittää tälle avainvälille kuuluvaa avainarvoa x (luku-kirjoitus-konflikti, read-write conflict). 209

Oletetaan, että ajoituksessa H kaikille transaktioille T 1 ja T 2 pätee seuraava ehto: Jos T 1 < T 2, niin T 2 T 1. Ts. konfliktoivuussuhde < luo H:n transaktioiden joukkoon osittaisjärjestyksen. Tätä osittaisjärjestystä kutsutaan H:n transaktioiden sarjallistuvuusjärjestykseksi (serializability order). Silloin H on yhtäpitävä jokaisen sellaisen sarjallisen ajoituksen kanssa, jossa H:n transaktiot ovat niiden sarjallistuvuusjärjestyksessä. Esimerkiksi transaktioiden T 1 = BR[x, x]r[y, y] ja T 2 = BR[x, x]i[y]c rinnakkainen ajoitus H 1 = B 1 R 1 [x, x]b 2 R 2 [x, x]i 2 [y]c 2 R 1 [y, y] on yhtäpitävä sarjallisen ajoituksen H 2 = B 2 R 2 [x, x]i 2 [y]c 2 B 1 R 1 [x, x]r 1 [y, y] kanssa, kun x y. Transaktioiden sarjallistuvuusjärjestys on T 2 < T 1. 210

Olkoon H ajoitus, jossa ei esiinny päivitysten käänteisoperaatioita I 1, D 1 ja W 1. Jos H:ssa joillekin transaktioille T 1 ja T 2 pätee T 1 < T 2 ja T 2 < T 1, niin H:ssa esiintyy vähintään yksi eristyvyysanomalia (likainen kirjoitus, likainen luku tai toistokelvoton luku) T 1 :n ja T 2 :n kesken. Tämä nähdään seuraavasti. Olkoon konfliktin T 1 < T 2 aiheuttava operaatiopari o 1, o 2. Jos tämä ei aiheuta eristyvyysanomaliaa, niin H:n täytyy olla muotoa H =...o 1...C 1...o 2... Olkoon konfliktin T 2 < T 1 aiheuttava operaatiopari o 2, o 1. Jos tämä ei aiheuta eristyvyysanomaliaa, niin H:n täytyy olla muotoa H =...o 2...C 2...o 1... Edellisessä tapauksessa T 1 sitoutuu ennen T 2 :ta ja jälkimmäisessä tapauksessa T 2 sitoutuu ennen T 1 :tä. Jommankumman konflikteista T 1 < T 2 ja T 2 < T 1 täytyy siis aiheuttaa eristyvyysanomalia. 211

Välttämätön ehto SQL:n sarjallistuvuudelle eli eristyvyysanomalioiden esiintymättömyydelle on siis, ettei ajoituksen millekään eri transaktioille ehdot T 1 < T 2 ja T 2 < T 1 ole samanaikaisesti voimassa (olettaen, ettei ajoituksessa esiinny päivitysten käänteisoperaatioita). Ehto ei kuitenkaan ole riittävä, sillä esim. ajoituksessa B 1 W 1 [x]b 2 W 2 [x] T 1 < T 2 mutta T 2 T 1, vaikka ajoituksessa esiintyy likainen kirjoitus. Oletetaan, että ajoituksen H kaikki transaktiot ovat sitoutuneita ja ettei niissä esiinny osittaisperuutuksia ja että kunkin transaktion T i sitoutumisoperaatio C i on H:ssa välittömästi T i :n viimeisen luku- tai päivitysoperaation jälkeen. Silloin H:ssa esiintyy eristyvyysanomalioita silloin ja vain silloin kun joillekin H:n transaktioille T 1 ja T 2 pätee T 1 < T 2 ja T 2 < T 1. Osittaisperuutuksia ja peruuntuneita transaktioita sisältäville ajoituksille voidaan johtaa vastaava tulos modifioimalla konfliktoivuuden määritelmää sopivasti. 212