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

Samankaltaiset tiedostot
Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

D B. Transaktionhallinta - samanaikaisuus

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

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

5.2 Samanaikaisuuden hallinta

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

D B. Transaktionhallinta

5.2 Samanaikaisuuden hallinta

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

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

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

Transaktioiden eristyvyys

Transaktiot - kertausta

Tietohakemisto ja Transaktionkäsittely

Web-palveluiden transaktionaalinen koostaminen

Tietokantarakenteet ja -algoritmit 6. harjoitus

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

CSE-A1200 Tietokannat

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

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

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

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

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

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

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat

Samanaikaisuuden hallinta Snapshot Isolationin avulla

Muita transaktioiden hallintamenetelmiä

D B. Tietokannan hallinta kertaus

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

Keskusmuistitietokantojen samanaikaisuuden hallinta

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

Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat

Tietokanta (database)

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

D B. Tiedostojen käsittely

Tietokantarakenteet ja -algoritmit 3. harjoitus

Looginen tietokanta ja transaktiot

Hajautettujen transaktioiden hallinta

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Transaktioiden samanaikaisuuden hallinta

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

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

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

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

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

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tietokantakurssit / TKTL

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Hajautettujen järjestelmien perusteet. Replikointi. Kari Systä

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

T Transaktionhallinta tietokantajärjestelmissä

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

HELIA 1 (15) Outi Virkki Tiedonhallinta

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

TIETOKANTOJEN PERUSTEET MARKKU SUNI

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (14) Outi Virkki Tiedonhallinta

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

OPI-Maksut - Käyttötapaukset

Kortinhaltijat joilla on maksukeskeytys Maksuryhmään liitettyjen kortinhaltijoiden lukumäärä, joiden maksut ovat tilapäisesti keskeytetty.

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Tarkennamme geneeristä painamiskorotusalgoritmia

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

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

Algoritmit 2. Luento 14 Ke Timo Männikkö

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

isomeerejä yhteensä yhdeksän kappaletta.

Ohjelmoinnin perusteet Y Python

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

811120P Diskreetit rakenteet

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

2 Konekieli, aliohjelmat, keskeytykset

811120P Diskreetit rakenteet

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Transkriptio:

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

Transaktionhallinta ~ samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (prosesseja). On toivottavaa, että: Yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin. Yhdenkään käyttäjän toiminta ei ainakaan saisi estyä kokonaan Tietokanta säilyy eheänä eli, että jokaisen transaktion toiminnot pysyvät periaatteessa loogisesti erillään muiden transaktioiden toiminnoista (eristyvyys; välttämätön ominaisuus). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 2

Transaktionhallinta Transaktionhallinta (transaction management) on keskeinen tekijä tietokannan samanaikaisen käytön ja virheistä toipumisen kannalta. Useat prosessit voivat käsitellä tietokantaa samanaikaisesti Jos tietokoneessa on vain yksi prosessori, samanaikaiset prosessit toimivat limittäin (interleaved) ja jakavat prosessorikapasiteettia. Jos koneessa on monta prosessoria, prosessit voivat toimia aidosti yhtä aikaa eri prosessoreilla (parallel). Jatkossa tarkastellaan limittäisyyteen perustuvaa samanaikaisuutta. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 3

Transaktionhallinta Tietokantatransaktio on tietokantaa käsittelevä prosessin osa, jonka vaikutusten halutaan muodostavan yhden jakamattoman (atomisen) kokonaisuuden. voi sisältää hakuja, lisäyksiä, poistoja muutoksia Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2: begin transaction update tili set saldo=saldo x where tilinro=t1; update tili set saldo=saldo+x where tilinro=t2; insert into tilitapahtumat values (pvm, time, siirto, x, t1, t2,...); commit; end transaction; 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 4

Transaktionhallinta Esimerkissä jakamattomuus merkitsee sitä, että kaikki 3 tietokantaoperaatiota suoritetaan eikä vain osaa niistä. Miksei sitten suoritettaisi? Käsittelyssä voi sattua häiriöitä missä vaiheessa tahansa. Nämä voivat johtua ulkoisista syistä tai olla tkhj:n itse aiheuttamia, jotta se voisi jatkaa toimintaansa (syntyy lukkiutuma, joka pitää purkaa). Voisi siis käydä siten, että tilin t1 sivu on kirjoitettu levylle ja tilin t2 sivu jää kirjoittamatta tällöin operaatio ei olisi jakamaton. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 5

Transaktionhallinta Tietokantatransaktioilta edellyteään 4 perusominaisuutta (ACID vaatimukset): Atomisuus (atomicity): kaikki transaktion tietokantamuutokset suoritetaan tai ei mitään niistä. Eheyden säilyttäminen (consistency): transaktio siirtää tietokannan ehyestä tilasta toiseen ehyeen tilaan. Ehyt tila on tila, jossa tietokantaan liittyvät eheysehdot ovat voimassa. Tämän vaatimuksen toteutuminen on käyttäjän vastuulla. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 6

Transaktionhallinta Eristyvyys (isolation) Muut samanaikaiset transaktiot eivät sotke transaktion suoritusta. Transaktio suoritetaan ikään kuin muita samanaikaisia transaktioita ei olisikaan. Transaktion kannalta näyttää siltä, että kaikki muut transaktiot on suoritettu joko ennen sitä tai sen jälkeen. Pysyvyys (durability) Kun tkhj ilmoittaa käyttäjälle, että transaktio on menestyksekkäästi päätetty, sen tekemät muutokset tietokantaan jäävät voimaan (kunnes jokin toinen transaktio ne kumoaa). Mikään häiriö ei niitä hävitä. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 7

Transaktionhallinta Yleisesti kannan käsitttely muodostuu luku ja kirjoitusoperaatioista. read(x,v) lukee tietoalkion X muuttujaan v write(x,v) kirjoita tietoalkio X muuttujasta v E&N: käyttää muotoa (read_item(x), ja write_item(x) 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 8

Transaktionhallinta read(x,v): Selvitä X:n sisältävän sivun osoite p. Pyydä puskurienhallintaa lataamaan sivu p (lukee, jos sivu ei ole jo puskurissa). Puskurienhallinta naulitsee sivun puskuriin (fix) ja palauttaa puskurin osoitteen b. Kopioi tietoalkio X puskurista b muuttujaan v. Ilmoita puskurienhallinnalle sivun vapautuksesta (unfix). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 9

Transaktionhallinta write(x,v) Selvitä X:n sisältävän sivun osoite p. Pyydä puskurienhallintaa lataamaan sivu p muutosta varten (lukee, jos sivu ei ole jo puskurissa). Puskurienhallinta naulitsee sivun puskuriin (fix) ja palauttaa puskurin osoitteen b. Kopioi tietoalkio X muuttujasta v puskuriin b. Ilmoita puskurienhallinnalle sivun muuttamisesta ja vapautuksesta (unfix). Puskurienhallinta kirjoittaa aikanaan muuttuneet sivut levylle. Sekä lukuun että kirjoitukseen liittyy yllä kuvatun lisäksi samanaikaisuuden hallintaan liittyviä toimia (lukituksia). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 10

Esim: tililtä nosto sama proseduuri tilinosto(x, summa) : (X = tietyn tilin saldo tili relaatiossa, alussa esim. 2000) T1 read(x, v) v:=v 500; write(x, v) T2 read(x, u) u:=u 1000; write(x, u) Jos T1 ja T2 alkavat suunnilleen samaan aikaan ja etenevät vuorotellen huonossa kontrollissa, voi tilin X saldo olla lopussa 1500, 1000 tai 500 (oikea). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 11

Sarjallinen suoritus Kontrolloitu suoritus olisi sarjallinen suoritus (serial schedule), jossa joko T1 suoritetaan kokonaan ennen kuin T2 aloitetaan tai päinvastoin. Tällöin lopputulos molempien jälkeen on 500, mutta välitulos on joko 1000 tai 1500. Yleisesti sarjallinen suoritus aiheuttaa joidenkin transaktioiden huomattavaa viivästymistä ja saattaa jopa estää suorituksen (edellinen epäonnistuu, joten seuraavaa ei voida aloittaa). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 12

Sarjallinen ajoitus Esim. sarjallinen ajoitusjärjestys: T1: read (x1, v1) : T1: write(x1, v2) T1: commit; T2: read(x2, u2) T2: read(x1, u1) T2: write(x1, u3) T2: commit; Transaktiojoukon jokainen sarjallinen ajoitusjärjestys on oikea; vrt. eristyvyyden määrittely. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 13

Esimerkki Tilisiirto Tarkastellaan tilisiirto (1234, 5678, 5000) operaatiota: 1. transaktion aloitus(pyyntö) begin 2. lukuoperaatioita tietohakemiston sivuihin 3. lukuoperaatioita tili relaation hakemistoon 4. luetaan puskuriin b se tili relaation sivu p, jossa on monikko 1234 ohjelmallisesti varsinainen tililtäotto ja siihen mahdollisesti liittyvät tarkistukset + lisätoimet 5. kirjoitetaan muutetun monikon sisältö sivulle p 6. 9. vastaavat operaatiot tilin 5678 sivulle (tilillepano) 10. lukuoperaatioita tietohakemistoon 11. luetaan tilitapahtuma relaation viimeinen sivu (oletusrakenne kasa) 12. lisätään tilitapahtuma tietue tilitapahtumasivulle 13. transaktion sitoutumispyyntö (commit). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 14

Riippumattomuus Huom. Kahden sarjallisen ajoituksen tulos ei ole aina sama, jos tapahtumat eivät ole toisistaan riippumattomia. Esim: T1=Lyhennys(Laina,s): read(laina,v), write(laina,v s) T2=Lisääkorko(Laina,p): read(laina,u), write(laina,u+p*u) Olkoon alkuarvo 2000, s=500, p=0.1 Lyhennys(Laina,500), Lisääkorko(Laina,0.1) antaa tuloksen 1650 ja Lisääkorko(Laina,0.1), Lyhennys(Laina,500) antaa tuloksen 1700. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 15

Rinnakkaisuus Rinnakkaisessa ajoituksessa on ainakin jokin vaihe, jossa on samanaikaisesti kesken enemmän kuin yksi transaktio. Rinnakkaisia ajoituksia on tyypillisesti monia: transaktion vuoro voi päättyä melkein missä kohdassa tahansa (käytännössä esim. siirräntäoperaation kohdalla; vrt. käyttöjärjestelmätason prosessinhallinta). Rinnakkainen ajoitus on oikea, jos se on ekvivalentti jonkin sarjallisen ajoituksen kanssa. Ajoitusta kutsutaan tällöin sarjallistuvaksi (serializable) 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 16

Konfliktiekvivalenssi Ekvivalenssi voidaan määritellä eri tavoilla, mutta yleisesti käytetään konfliktiekvivalenssia, jossa keskenään konfliktoivien operaatioiden järjestys on sama kuin sarjallisessa ajoituksessa Operaatiot konfliktoivat, jos 1) ne kuuluvat eri transaktioihin, 2) ne kohdistuvat samaan tietoalkioon, ja 3) ainakin toinen operaatio on write operaatio. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 17

Operaatioiden järjestys Esimerkiksi ajoitus T1: read(x1, v1) T2: read(x2, v2) T1: write(x1, v3) T1: commit; T2: read(x1, v4) T2: write(x1, v5) T2: commit; on konfliktiekvivalentti ajoituksen (T1; T2), mutta ei ajoituksen (T2; T1) kanssa 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 18

Eristyvyysanomaliat Eristyvyysrikkomuksissa on kolme päätyyppiä eli eristyvyysanomaliaa: 1 likainen kirjoitus (dirty write) transaktio kirjoittaa toisen, sitoutumattoman, transaktion kirjoittaman tietoalkion päälle 2 likainen luku (dirty read) transaktio lukee likaisen eli ei pysyvän tietoalkion arvon (sitoutumattoman kirjoittaman arvon) 3 toistokelvoton luku (unrepeatable read) toinen transaktio kirjoittaa T1:n lukeman tietoalkion ennen kuin T1 sitoutuu 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 19

Haamut Haamu: erikoistapaus, joka syntyy, kun tietokantaan lisätään transaktiossa T rivi, joka täyttää toisen transaktion S käsittelemien rivien valintaehdon. Esim. T: insert into employee values (, dno=5) S: select sum(salary) where dno=5 Ajoitus (T,S) ottaa mukaan myös uuden työntekijän palkan, ajoitus (S,T) sitä vastoin ei. Jos S ehtii ottaa relaation käyttöönsä ennen lisäystä, kesken laskennan ilmestyvä rivi on ns. haamu. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 20

Eristyvyyden takaamismenetelmiä Asettamalla tietoalkioille lukkoja (locks): operointi on sallittu vain transaktiolle, joka on saanut haltuunsa tietoalkion lukon (käyttöoikeuden). Seuraamalla transaktioiden ajoitusta niihin liittyvien aikaleimojen (timestamp) avulla. Ylläpitämällä tietoalkioiden useita arvoja ( vanha ja uusi ): moniversiotekniikalla. Optimistisilla menetelmillä: antamalla transaktioiden suorittaa varsinaiset operaationsa ja tarkistamalla sitten validointivaiheessa, ettei suoritukseen sisälly ristiriitaisia tilanteita. Operaatiot kohdistuvat tietoalkioiden tilapäisiin kopioihin, joten menetelmä on tavallaan moniversioinen. Lukitus on yleisimmin käytössä. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 21

Lukitusmenetelmä Lukko (lock) on tietoalkion käyttöä valvova muuttuja. Lukulukko (read lock; shared lock) antaa oikeuden lukea tietoalkion, mutta ei kirjoittaa sitä. Usealla transaktiolla voi samanaikaisesti olla lukulukko tiettyyn tietoalkioon (lukuoperaatiot eivät häiritse toisiaan, shared ) Kirjoituslukko (write lock, exclusive lock) antaa oikeuden kirjoittaa (ja lukea) tietoalkion arvon. Kirjoituslukko on poissulkeva eli vain yhdellä transaktiolla voi olla samanaikaisesti kirjoituslukko tietoalkioon X. Muilla transaktioilla ei voi olla edes lukulukkoa tietoalkioon X. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 22

Lukko operaatiot Lukkojen käyttöön liittyviä operaatioita read_lock(x): lukulukon pyyntö write_lock(x): kirjoituslukon pyyntö unlock(x): X:n lukon vapautus Lukkoja valvoo tkhj:n lukonhallitsin (lock manager). Transaktiolla on enintään yksi lukko tietoalkioon kerrallaan. Lukot vapautetaan viimeistään sitoutumisen yhteydessä 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 23

Tietorakenteita Lukkojen hallinnan keskeiset tietorakenteet: lukkotaulu (lock table), joka on organisoitu tietoalkiokohtaisesti: Tietoalkion X tunniste. X:n lukon haltijoiden tiedot: transaktion tunniste ja lukon tyyppi. X:n lukkoa haluavien transaktioiden jono. Lukkotaulusta saadaan nopeasti selville tietoalkion lukituksen tilanne. Organisointina voi olla esim. hajautusrakenne. transaktiotaulu Jokaiselle transaktiolle tietue, josta alkaa transaktion hallussa olevien lukkojen (tietoalkioiden tunnisteiden) ketju. Taulun avulla löydetään transaktion sitoutuessa tai peruuntuessa sen hallussa mahdollisesti olevat lukot, jotka on vapautettava. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 24

Read_lock(X) read_lock(x): ( rl(x) = X:n lukulukkojen määrä ) 1. hae X:ää lukkotaulusta 2. jos X ei ole taulussa, vie X tauluun, aseta rl(x) := 0 ja mene askeleeseen 5 3. jos transaktiolla T on jo lukko X:ään, palaa 4. jos jollakin toisella transaktiolla on jo kirjoituslukko X:ään, aseta T lukon vapautumista odottavien transaktioiden jonoon lukkotaulussa. 5. kirjaa lukkotauluun T:lle lukulukko X:ään (ja liitä X T:n lukkojen ketjuun transaktiotaulussa), aseta rl(x) := rl(x) +.1 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 25

Write_lock(x) write_lock(x): 1. hae X:ää lukkotaulusta. 2. jos X ei ole taulussa, vie X tauluun ja mene askeleeseen 5 3. jos transaktiolla T on jo kirjoituslukko X:ään, palaa 4. jos jollakin toisella transaktiolla on jo luku tai kirjoituslukko X:ään, aseta T lukon vapautumista odottavien transaktioiden jonoon. 5. jos T:llä on jo lukulukko X:ään, korota (upgrade) se kirjoituslukoksi ja aseta rl(x) := 0; muuten kirjaa T:lle uusi lukko, kirjoituslukko, lukkotauluun. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 26

Unlock(x) unlock(x): 1. etsi X:ää vastaava tietue lukkotaulusta 2. jos X:ään on kirjoituslukko transaktiolla T, poista T lukonhaltijain joukosta ja, jos jonossa on odottavia transaktioita, herätä niistä ensimmäinen muuten (T:llä on lukulukko) aseta rl(x) := rl(x) 1; Jos rl(x) = 0, herätä ensimmäinen odottavista transaktioista, jos niitä on 3. jos odottavien jono oli tyhjä, poista X:n tietue lukkotaulusta 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 27

2PL Kaksivaiheinen lukituskäytäntö (2PL, two phase locking) Kaksivaiheisen lukituksen perusajatus: mitään lukkoa ei vapauteta ennen kuin kaikki transaktion tarvitsemat lukot on varattu. Transaktio jakaantuu kahteen vaiheeseen: Kasvuvaiheeseen, jonka aikana kaikki lukot varataan aina kun operaatio tehdään, Lukulukon korotus kirjoituslukoksi tulkitaan lukon varaukseksi eli on tehtävä kasvuvaiheen aikana. Kutistumisvaiheeseen, jonka aikana lukot vapautetaan. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 28

Transaktionhallinta samanaikaisuus Esim. seuraavat transaktiot toteuttavat 2PL ehdon: T1 T2 read_lock(y); read_lock(x); read(y); read(x); write_lock(x); write_lock(y); unlock(y); unlock(x); read(x); read(y); X:= X + Y; Y:= X + Y; write(x); write(y); commit; commit; unlock(x); unlock(y); 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 29

Ankara 2PL Ankara 2PL (Strict Two phase Locking, Strict 2PL): Jokaisen transaktion tulee pyytää lukulukko objektiin ennen lukemista ja kirjoituslukko ennen kirjoitusta. Transaktio pitää kaikki lukot sitoutumiseen asti, jonka yhteydessä kaikki lukot vapautetaan. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 30

Ankara 2PL 1 likainen kirjoitus Esim T1: write_lock(x); T1: write(x, u); T2: write_lock(x); T2: write(x, v); T1: commit; (tai rollback;) T1: unlock(x); Ajoitus ei ole mahdollinen, koska T2 ei voi saada X:n kirjoituslukkoa eikä siten tehdä likaista kirjoitusta. Olennaista on, että T1:n kirjoituslukko on pitkäaikainen; 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 31

Ankara 2PL 2 likainen luku Esim. T1: write_lock(x); T1: write(x, u); T2: read_lock(x); T2: read(x, v); T1: commit; (tai rollback;) T1: unlock(x); T2 ei voi saada edes lukulukkoa, kun X:llä on pitkäaikainen kirjoituslukko. On helppo nähdä, että ankara 2PL rajoittaa usein liian paljon samanaikaisuutta: tietyn tietoalkion lukko voitaisiin vapauttaa heti, kun siihen kohdistuvat operaatiot on tehty. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 32

Ankara 2PL 3 toistokelvoton luku Esim. T1: read_lock(x); T1: read(x, u); T2: write_lock(x); T2: write(x, v); T1: commit; (tai: rollback;) T1: unlock(x);... Toistokelvoton luku estyy: T2 ei voi saada kirjoituslukkoa X:ään eli ei voi muuttaa X:n arvoa, kun T1:llä on pitkäaikainen lukulukko. (Lyhytaikainen lukulukko ei riitä.) 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 33

Transaktionhallinta Transaktion sisäisiä vaiheita hallitaan määrittelemällä transaktion tilasiirtymämalli ja seuraavat tilat: 1. alkutila: transaktio syntyy (generoidaan) oma tunniste, jne. 2. aktiivinen: transaktio suorittaa varsinaisia operaatioitaan (read(), write() ) 3. osittain sitoutunut (partially committed): transaktion ohjelmakoodi on suoritettu ja se on pyytänyt sitoutumista (commit operaatiolla) 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 34

Transaktionhallinta 4. sitoutunut (committed): tkhj on vahvistanut transaktion tietokantaan tekemät muutokset pysyviksi eli sitoutuminen on onnistunut Tietokannan muutokset eivät ole enää peruttavissa (ilman uutta transaktiota). Tiedot eivät kuitenkaan ole välttämättä levyllä asti (vahvistus vain looginen ), mutta vastaava lokitieto on levyllä 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 35

Transaktionhallinta 5. epäonnistunut (failed): sitoutuminen on epäonnistunut (esim. samanaikaisuuden hallintaan liittyvien tarkistusten takia) tai transaktio itse on suorittanut keskeytysoperaation rollback (abort) 6. keskeytetty: epäonnistunut transaktio on peruutettu eli tietokanta on palautettu ennen transaktion aloitusta vallinneeseen tilaan 7. päättynyt (terminated): transaktion olemassaolo lakkaa 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 36

Transaktionhallinta Keskeytetty transaktio voidaan aloitaa uudelleen päättynyttä ei voida. Alla tilasiirtymäkaavio: read, write alkutila uudelleenaloitus begin aktiivinen rollback pyyntö commit pyyntö epäonnistunut commit hylätty osittain sitoutunut commit hyväksytty sitoutunut rollback toteutus keskeytetty päättynyt 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 37

Transaktionhallinta SQL:ssä transaktio päätetään normaalisti commitlauseella. Samalla commit aloittaa uuden transaktion. Joissain ympäristöissä (esim. sulautettu SQL) voi käyttää myös begin transaction ja end transaction lauseita. Transaktion voi lopettaa myös rollback lauseella. Rollback peruuttaa pääsääntöisesti koko transaktion. Osittainen peruutus saatavissa aikaan jatkoaloituskohdilla (savepoint). 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 38

Transaktionhallinta commit; muutoksia 1 /* tallenna tilanne, nimeä kohta = p1 */ savepoint p1; muutoksia 2 /*peruuta transaktiossa pisteeseen p1, muutoksia 1 säilyy */ rollback to savepoint p1; 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 39

Ajoittaja Samanaikaisten toimintojen salliminen ja häiriöiden vaikutusten eliminointi muodostavat monimutkaisen toiminnallisen kokonaisuuden, joka on ajoittajan tehtävänä. Pelisääntönä on karkeasti se, että samanaikaisuutta rajoitetaan vain niin paljon, ettei normaalitilanteessa jouduta usein korjaamaan sen aiheuttamia (tulossa olevia) vaurioita. Rajoituskeinoja: lukitaan tietoalkioita muilta lukoilla (lock); pitkä lukinta aika rajoittaa hankalasti muiden transaktioiden etenemistä; voi syntyä lukkiutuma, jolloin mikään transaktio ei pääse etenemään optimistisia menetelmiä: annetaan mennä; tarkistetaan; korjataan, jos tarpeen 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 40

Sarjallistuvuusteoria Sarjallistuvuusteoria on matemaattinen menetelmä, jonka avulla voidaan todistaa toimiiko ajoittaja oikein. Ajoittaja on se ohjelmapalikka, jonka tehtävänä on rinnakkaisten operaatioiden suorittaminen. Käytännössä rinnakkaiset transaktioiden suoritukset kuvataan historian avulla. Teoria antaa täsmälliset ominaisuudet, jotka historian tulee täyttää jotta se olisi sarjallistuva. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 41

Transaktio Transaktio T i koostuu operaatioista, joita ovat lukuja kirjoitusoperaatiot sekä joko peruutusoperaatio tai sitoutumisoperaatio siten että luku ja kirjoitusoperaatiot edeltävät peruutus tai sitoutumisoperaatiota. Jos transaktio T i sisältää sekä luku että kirjoitusoperaation samaan tietoalkioon, on operaatioille määritelty järjestys. Eli joko lukuoperaatio ennen kirjoitusoperaatiota tai päinvastoin. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 42

Historia Historia kuvaa missä järjestyksessä operaatiot on suoritettu. Koska osa operaatioista voidaan suorittaa rinnakkain, historia määritellään osittaisena järjestyksenä. Transaktio määrittelee omien operaatioidensa järjestyksen. Lisäksi historian tulee määritellä konfliktoivien operaatioiden järjestyksen. Kaksi operaatiota sanotaan olevan konfliktissa keskenään jos ne operoivat samaan tietoalkioon ja vähintään toinen on kirjoitusoperaatio. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 43

Operaatiot b i :Transaktio i alkaa. r i [x]: Transaktio i lukee tietoalkion x arvon. w i [x]: Transaktio i kirjoittaa uuden arvon tietoalkioon x. c i : Transaktio i sitoutuu. a i : Transaktio i peruuntuu. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 44

Esimerkki T 1 = r 1 [x] w 1 [x] c 1 T 3 = r 3 [x] w 3 [y] w 3 [x] c 3 T 4 = r 4 [y] w 4 [x] w 4 [y] w 4 [z] c 4 {T 1,T 3,T 4 }:n täydellinen historia on: H 1 = r 1 [x] w 1 [x] c 1 r 4 [y] w 4 [x] w 4 [y] w 4 [z] c 4 r 3 [x] w 3 [y] w 3 [x] c 3. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 45

Sarjallistuvat historiat Historia on sarjallinen jos jokaiselle transaktioparille T i ja T j historiassa H, joko kaikki T i :n operaatiot esiintyvät yhtäkään T j :n operaatiota tai päinvastoin. Historia on sarjallistuva jos täydellinen historia on ekvivalentti jonkin sarjallisen historian kanssa. Historian sarjallistuvuutta voidaan tutkia muodostamalla historiasta sarjallistuvuusverkko. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 46

Sarjallistuvuusverkko Olkoon H historia tapahtumajoukolle T = {T 1,T 2,,T n }. Sarjallistuvuusverkko H:lle, merkitään SG(H), on suunnattu verkko, jonka solmuina ovat kaikki transaktiot T:stä ja särminä ovat kaikki T i < T j (i < j) siten että yksi T i :n operaatio edeltää ja konfliktoi yhtä T j :n operaatiota H:ssa. 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 47

Esimerkki H 1 = r 2 [x] r 1 [x] w 1 [x] r 3 [x] w 2 [y] c 2 w 1 [y] w 3 [x] c 3 c 1 R2[x ] R 3[x] W 3[x] R1[x ] W 1[x ] W 2[y] W 1[y] 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 48

Esimerkki 2 Ajoitus, joka ei ole sarjallistuva: T1: R(A), W(A), R(B), W(B) T2: R(A), W(A), R(B), W(B) T1 A T2 Sarjallistuvuusverkko B 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 49