Transaktioiden samanaikaisuuden hallinta

Koko: px
Aloita esitys sivulta:

Download "Transaktioiden samanaikaisuuden hallinta"

Transkriptio

1 Transaktioiden samanaikaisuuden hallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging. ACM Transactions on Database Systems 17:1 (1992), ; kohta 1.3 (finegranularity locking). C. Mohan: Concurrency control and recovery methods for B+-tree indexes: ARIES/KVL and ARIES/IM. Performance of Concurrency Control Mechanisms in Centralized Database Systems (V. Kumar, toim.). Prentice Hall, 1996, ; kohta (locks and latches); kohdat 10.3 (a simple locking algorithm) ja 10.4 (ARIES/KVL). A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006; sivut , luvun 15 (transactions) kohta 15.7 (implementation of isolation); sivut , luvun 16 (concurrency control) kohdan 16.1 (lock-based protocols) alakohdat (locks), (granting of locks), (the two-phase locking protocol) ja (implementation of locking); sivut , kohta 16.4 (multiple granularity); sivut , kohdat 16.6 (deadlock handling), 16.7 (insert and delete operations) ja 16.8 (weak levels of consistency). 213

2 Lukot, s Lukkotaulu, s Lukon varaus ja vapautus, s Lukituskäytäntö, s Ankara kaksivaihelukitus, s Avainvälilukitus, s Monirakeisen tietokannan avainvälilukitus, s Aikomuslukot ja monirakeisuuslukitus, s Looginen vs. fyysinen lukitus, s Lukkiumat, s Lukkiumien havaitseminen, s Ehdolliset lukkopyynnöt, s Relaation avainväliselauksen toteutus, s

3 Lukot Useimmiten käytetty menettely transaktioiden eristyvyyden takaamiseksi on lukitus (locking). Lukko (lock) on aktiiviselle transaktiolle kuuluva keskusmuistialkio, joka antaa transaktiolle pääsyn tietokannan tiettyyn osaan. Transaktio voi suorittaa tietokantaan kohdistuvan operaation (luvun tai päivityksen) vain, jos se on lukinnut operaation koskettaman osan tietokannasta asianmukaisella lukolla. Lukkoon liittyy sen nimi, tyyppi, kestoaika ja omistava transaktio. Lukon nimi (lock name) ilmaisee lukituksen kohteena olevan tietoalkion tai tietoalkiojoukon tietokannasta. Lukon nimen perusteella lukko voidaan luokitella loogiseksi tai fyysiseksi. Loogisen lukon nimi ilmaisee loogisen tietokannan osan, kuten yksittäisen monikon jossakin relaatiossa tai kokonaisen relaation. 215

4 Relaation r(x,v ) monikon (x,v) loogisen lukon nimenä on yksilöivän avaimen arvo x, kun looginen tietokanta koostuu vain relaatiosta r, tai relaation tunnisteen ja avainarvon muodostama pari (r, x), jos loogisessa tietokannassa on useampia relaatioita. Lukko x lukitsee avainarvolla x varustetun monikon siitä riippumatta, onko relaatiossa r lukintahetkellä sellaista monikkoa vai ei. Fyysisen lukon nimi ilmaisee fyysisen tietokannan osan, kuten tietyllä tietosivulla sijaitsevan tietuepaikan tai kokonaisen sivun tai tiedoston tai tietyn solun hakemistorakenteessa. Sivun p tietuepaikan i fyysisen lukon nimenä on monikkotunniste (p,i). Lukko lukitsee tietuepaikan (p, i) siitä riippumatta, onko siinä lukintahetkellä tietuetta vai ei. 216

5 Lukkojen käsittely on tehokkaampaa, jos lukon nimi on vakiomittainen, lyhyt arvo, esim. nelitavuinen lukuarvo. Vaihtelevanmittaisen tai rakenteeltaan monimutkaisen lukonnimen sijasta käytetäänkin yleensä nimestä x jollakin hajauttimella h laskettua hajautusarvoa h(x). Monikon avainarvoon x varattu lukko lukitsee silloin kaikki ehdon h(y) = h(x) täyttävät, avainarvolla y varustetut monikot. Lukon tyyppi (lock mode) ilmaisee, minkä tyyppiseen operaatioon lukko oikeuttaa. Tietoalkion x lukemista varten transaktion on hankittava x:ään vähintään lukulukko (read lock) eli S-lukko (S-lock). Tietoalkion x kirjoittamista varten transaktion on hankittava x:ään kirjoituslukko eli X-lukko (X-lock). 217

6 Lukulukko on yhteiskäyttöinen (shared): useammalla transaktiolla voi samanaikaisesti olla lukulukko x:ään. Kirjoituslukko on poissulkeva (exclusive): kun transaktiolla on kirjoituslukko x:ään, muille transaktioille ei myönnetä mitään lukkoja x:ään. Kirjoituslukko tietoalkioon x oikeuttaa transaktion myös lukemaan x:n. Käytännössä S- ja X-lukkojen lisäksi on käytössä myös muita lukkotyyppejä, kuten päivitykseen varautumislukko U sekä monirakeisuuden hallintaan tarvittavat aikomuslukot IS, IX ja SIX, joiden merkitys selostetaan myöhemmin. 218

7 Kestoajaltaan (duration) lukko voi olla pitkä- tai lyhytkestoinen. Transaktion sitoutumiseen tai peruutuksen päättymiseen asti pidettävää lukkoa kutsutaan pitkäkestoiseksi lukoksi (long-duration lock) eli sitoutumiskestoiseksi lukoksi (commit-duration lock). Transaktion T hallussa olevien pitkäkestoisten lukkojen vapautus sisältyy transaktion sitoutumis- ja peruutuksen päättämiskäytäntöihin, so. operaation C suoritukseen sen viimeisenä vaiheena, lokitietueen T,C kirjaamisen ja lokin levylle pakotuksen jälkeen. Aikaisemmin vapautettavat lukot ovat lyhytkestoisia (shortduration). Lyhytkestoinen lukko vapautetaan välittömästi operaation varsinaisten toimintojen jälkeen, operaation viimeisenä toimintona, siis välittömästi sen jälkeen, kun operaation kohteena olevan tietoalkion sisältävän sivun salpaus on vapautettu. 219

8 Lukon omistaja (lock owner) on aina jokin transaktio. Vrt. että salvan omistaja on prosessi tai prosessin säie. Lukon täydellinen esitys on siis nelikko (T,x,m,d), missä x on lukon nimi, m on lukon tyyppi (S, X, IS, IX, SIX, U), d on lukon kestoaika (commit-duration, short-duration) ja T on lukon omistavan transaktion tunniste. Yleensä oletetaan, että transaktiolla T on kerrallaan samaan tietoalkioon x vain yksi annetun kestoajan d lukko, ts. yhtä aikaa ei voi olla varattuna kahta lukkoa (T,x,m 1,d) ja (T,x,m 2,d). Transaktiolla voi kyllä olla samaan tietoalkioon yhtäaikaa lyhytkestoinen lukko ja pitkäkestoinen lukko, esim. (T, x, S, long-duration) ja (T, x, X, short-duration). 220

9 Lukkotaulu Lukkoja (T, x, m, d) säilytetään lukkotauluksi (lock table) kutsutussa keskusmuistitietorakenteessa, jota ylläpitää tietokannan hallintajärjestelmän lukonhallitsin. Lukkotaulu perustetaan ja alustetaan tyhjäksi järjestelmää käynnistettäessä. Lukkotaulu on olemassa ainoastaan tietokantajärjestelmän ilmentymän (instanssin) ollessa käynnissä; häiriötilanteessa tai järjestelmää suljettaessa lukkotaulu samoin kuin muutkin järjestelmän keskusmuistirakenteet (mm. puskurit) katoavat. Lukkotaulu organisoidaan hajautustauluksi (tai tasapainoiseksi binääripuurakenteeksi), jota indeksoidaan lukon nimellä. Näin saadaan nopeasti selville, mitä lukkoja tietoalkioon on ja keiden hallussa ne ovat. 221

10 Lisäksi linkitetään erikseen kunkin transaktion T hallussa olevat (pitkäkestoiset) lukot ketjuksi, joka alkaa transaktiotaulun T :tä vastaavasta alkiosta. Lyhytkestoinen lukko on transaktiolla yleensä kerrallaan vain yhteen tietoalkioon. Transaktio näet suorittaa kerrallaan vain yhtä operaatiota. Pitkäkestoisia lukkoja kertyy transaktiolle sitoutumispisteeseen mennessä yleensä yhtä monta kuin on eri tietoalkioita, joihin transaktio on operoinut (kun sovelletaan täyden eristyvyyden takaavaa lukituskäytäntöä). 222

11 Lukon varaus ja vapautus Olkoon m lukkotyyppi. d-kestoisen m-lukon asetus eli varaus transaktiolle T tietoalkioon x tapahtuu operaatiolla lock(t,x,m,d) ja lukon vapautus operaatiolla unlock(t, x, d). Lukon asetus ja vapautus ovat atomisia operaatioita. Tietokannan hallintajärjestelmässä käytettävälle lukkotyyppijoukolle määritellään yhteensopivuus (compatibility). Olkoot m 1 ja m 2 lukkotyyppejä. Oletetaan, että transaktio T 2 pyytää m 2 -lukkoa tietoalkioon x, johon toisella transaktiolla T 1 on parhaillaan m 1 -lukko. Jos transaktiolle T 2 voidaan heti myöntää m 2 -lukko x:ään riippumatta T 1 :n m 1 -lukosta, sanomme, että lukkotyyppi m 2 on yhteensopiva (compatible) lukkotyypin m 1 kanssa. 223

12 Lukkotyyppien yhteensopivuudet esitetään yhteensopivuusmatriisissa. Lukkotyyppijoukon {S, X} yhteensopivuusmatriisi: Comp m 1 -lukko m 2 -lukko S X S true false X false false Comp[m 2, m 1 ] = true m 2 yhteensopiva m 1 :n kanssa. 224

13 Oletetaan, että transaktiolla T on ennestään d-kestoinen m-lukko tietoalkioon x. T pyytää x:ään d-kestoista m -lukkoa. Mikäli lukko voidaan myöntää, tapahtuu lukon korotus (lock upgrade) m -lukoksi, missä m on (yleensä vähiten poissulkeva) lukkotyyppi, joka on vähintään yhtä poissulkeva kuin m ja m. Lukkotyyppien S ja X keskinäinen poissulkevuusjärjestys on S < X, ts. X on poissulkevampi kuin S, eli X oikeuttaa T :lle x:ään laajemman operaatiojoukon (eli luvun ja päivityksen) kuin S (joka oikeuttaa vain luvun). 225

14 Lukkojen mahdolliset korotukset esitetään lukonkorotusmatriisissa. Lukkotyyppijoukon {S, X} lukonkorotusmatriisi: Upgr omistama pyytämä S X S S X X X X Upgr[m, m] = m m on vähiten poissulkeva lukkotyyppi, joka on vähintään yhtä poissulkeva kuin m ja m. 226

15 Lukon varausoperaation lock(t,x,m,d) toteutus transaktiossa T : 1. Selvitetään lukkotaulusta, mitä lukkoja tietoalkioon x ennestään on. 2. Jos millään toisella transaktiolla ei ole x:ään lukkotyypin m kanssa yhteensopimatonta lukkoa, myönnetään T :n pyytämä lukko välittömästi seuraavasti: (a) Jos T :llä ei ole ennestään x:ään d-kestoista lukkoa, viedään lukkotauluun lukko (T,x,m,d) ja palataan. (b) Jos T :llä on ennestään x:ään d-kestoinen m -lukko (T,x,m,d), muutetaan se lukoksi (T,x,m,d), missä m = Upgr[m,m ], ja palataan. 3. Jos jollakin toisella transaktiolla T on x:ään lukko, joka on yhteensopimaton lukkotyypin m kanssa, transaktiota T tuottava prosessi pannaan odottamaan yhteensopimattoman lukon vapautumista. 227

16 Lukon vapautusoperaation unlock(t,x,d) toteutus transaktiossa T : 1. Haetaan lukkotaulusta tietue (T,x,m,d) ja poistetaan se. 2. Jos x:ään pääsyä odottavien prosessien jono on epätyhjä, herätetään jonon ensimmäinen prosessi (joka nyt jatkaa kesken jäänyttä lock-kutsuaan). 228

17 Lukituskäytäntö Tietokantasovelluksen ohjelmoijan tai kyselyjä tekevän käyttäjän ei tarvitse huolehtia tietoalkioiden lukituksesta, vaan järjestelmä varaa tarvittavat lukot automaattisesti järjestelmässä sovellettavan lukituskäytännön mukaisesti. Lukituskäytäntö (locking protocol) sanoo, mitä lukkoja varataan mitäkin operaatiota varten ja milloin mikäkin lukko varataan ja vapautetaan. Lukituskäytännön tulee olla sellainen, että sen noudattaminen takaa transaktioiden eristyvyyden, ts. lukituskäytännön mahdollistamissa ajoituksissa transaktiot ovat niille asetetulla eristyvyystasolla. 229

18 Täyden eristyvyyden takaavassa lukituskäytännössä pääosa lukoista on pitkäkestoisia eli vapautetaan vasta transaktion sitouduttua tai päätettyä peruutuksensa. Tietokantasovelluksen suunnittelija voi vaikuttaa lukkojen varausaikaan yleensä vain määräämällä sovellusprosessin transaktiorajat (SQL-operaatiot commit ja rollback) sopivasti tai määrittämällä transaktion eristyvyystason sarjallistuvaa tasoa heikommaksi. Transaktiot pitäisi suunnitella mahdollisimmat lyhyiksi. 230

19 Ankara kaksivaihelukitus Luku-kirjoitusmalliin liittyvässä ankarassa kaksivaiheisessa lukituskäytännössä (strict two-phase locking protocol, strict 2PL) transaktion T operaatioiden R ja W suoritukseen sisältyy lukkojen varauksia ja vapautuksia seuraavasti. T :n etenemisoperaatiossa R[x, v] varataan pitkäkestoinen S-lukko luettavan monikon (x,v) avainarvoon x. T :n etenemisoperaatiossa W[x, u, v] varataan pitkäkestoinen X- lukko kirjoitettavan monikon avainarvoon x. Käänteisoperaatioitaan varten ei peruuntuvan tai osittaisperuutusta suorittavan transaktion tarvitse hankkia mitään uusia lukkoja. Käänteisoperaation W 1 [x,u,v] transaktio T saa suorittaa avainarvoon x hankitun pitkäkestoisen X-lukon turvin. 231

20 Käytäntö estää eristyvyysanomaliat, sillä selvästikin (1) pitkäkestoiset X-lukot estävät likaiset kirjoitukset...w 1 [x]...w 2 [x]...c 1, (2) pitkäkestoiset X-lukot ja lyhytkestoiset S-lukot estävät likaiset luvut...w 1 [x]...r 2 [x]...c 1 ja (3) lyhytkestoiset X-lukot ja pitkäkestoiset S-lukot estävät toistokelvottomat luvut...r 1 [x]...w 2 [x]...c

21 Samanaikaisuudenhallinnan kirjallisuudessa perinteisesti esitetty kaksivaihelukitus (two-phase locking, 2PL), siis ilman ankara - attribuuttia, tarkoittaa seuraavanlaista luku-kirjoitusmalliin liittyvää lukituskäytäntöä. Transaktion on operaatiota R[x] varten varattava S-lukko x:ään ja operaatiota W[x] varten X-lukko x:ään. Lukkojen ei kuitenkaan tarvitse olla pitkäkestoisia, kunhan vain T ei jonkin lukon vapautettuaan enää varaa mitään uusia lukkoja. Tällaista käytäntöä noudattavan transaktion T lukonkäsittelyoperaatiot jakaantuvat siten kahteen erilliseen vaiheeseen: (1) lukkojoukon kasvuvaiheeseen, jossa varataan lukkoja, ja (2) lukkojoukon supistumisvaiheeseen, jossa vapautetaan lukkoja. Käytäntö ei estä eristyvyysanomalioita, mutta takaa, että ajoituksen mille tahansa transaktioille T 1 ja T 2 korkeintaan toinen ehdoista T 1 < T 2 ja T 2 < T 1 on voimassa. 233

22 Avainvälilukitus Avainvälilukituskäytännössä (key-range locking protocol) eli avainarvolukituskäytännössä (key-value locking protocol) transaktion T operaatioiden R, I ja D suoritukseen sisältyy lukkojen varauksia ja vapautuksia seuraavasti. T :n etenemisoperaatiossa R[x, θz, v] varataan pitkäkestoinen S- lukko luettavan monikon (x,v) avainarvoon x. T :n etenemisoperaatiossa I[x, v] varataan pitkäkestoinen X-lukko lisättävän monikon avainarvoon x ja lyhytkestoinen X-lukko x:n seuraajaan y, so. pienimpään ehdon y > x täyttävään avainarvoon y tietokannassa (tai avainarvoon, mikäli x on tietokannan suurin avainarvo). Kun (x,v) on saatu lisätyksi, y:n lukko vapautetaan. T :n etenemisoperaatiossa D[x, v] varataan lyhytkestoinen X-lukko poistettavan monikon avainarvoon x ja pitkäkestoinen X-lukko x:n seuraajaan y. Kun (x,v) on saatu poistetuksi, x:n lukko vapautetaan. 234

23 Käänteisoperaatioita varten ei avainvälilukituksessakaan varata mitään uusia lukkoja. Käänteisoperaation I 1 [x,v] transaktio saa suorittaa avainarvoon x hankitun pitkäkestoisen X-lukon turvin. Käänteisoperaation D 1 [x,v] transaktio saa suorittaa avainarvon x seuraajaan y hankitun pitkäkestoisen X-lukon turvin. Transaktion peruutuksesta tai osittaisperuutuksesta ei siten koskaan voi aiheutua lukkiumaa. 235

24 Esimerkiksi tietokannassa D = {(1,10)} ajetussa transaktioiden T 1 = BR[x, 1,u]R[y,>x,v]C ja T 2 = BR[x, 1,u]I[2,u + 10]C ajoituksessa H = B 1 R 1 [1, 1,10]B 2 R 2 [1, 1,10]I 2 [2,20]C 2 R 1 [2,>1,20]C 1 varataan ja vapautetaan lukkoja seuraavasti: R 1 [1, 1,10]: pitkäkestoinen S-lukko T 1 :lle avainarvoon 1. R 2 [1, 1,10]: pitkäkestoinen S-lukko T 2 :lle avainarvoon 1. I 2 [2,20]: T 2 :lle pitkäkestoinen X-lukko avainarvoon 2 ja lyhytkestoinen X-lukko avainarvoon. C 2 : vapautetaan sitoutumiskäytännön lopuksi T 2 :n hallussa vielä olevat lukot (so. avainarvojen 1 ja 2 pitkäkestoiset lukot). R 1 [2,>1,20]: pitkäkestoinen S-lukko T 1 :lle avainarvoon 2. C 1 : vapautetaan sitoutumiskäytännön lopuksi T 1 :n hallussa vielä olevat lukot (so. avainarvojen 1 ja 2 lukot). Kaikki lukot voidaan myöntää välittömästi niiden pyyntöjärjestyksessä, joten ajoitus H on siis mahdollinen avainvälilukituskäytännössä. 236

25 Voidaan näyttää, että avainvälilukituskäytäntö estää kaikki eristyvyysanomaliat. Esimerkiksi seuraava ajoitus, jossa on toistokelvoton luku, ei ole mahdollinen avainvälilukituskäytännössä: B 1 R 1 [3,>1,w]B 2 I 2 [2,v] Tietokannan sisältönä on tässä aluksi {(1,u),(3,w)}. Lukkoja varattaisiin tässä seuraavasti: R 1 [3,>1,w]: T 1 :lle pitkäkestoinen S-lukko avainarvoon 3. I 2 [2,v]: T 2 :lle pitkäkestoinen X-lukko avainarvoon 2 ja lyhytkestoinen X-lukko avainarvon 2 seuraajaan 3. Jälkimmäisen X-lukon varaus ei onnistu, vaan T 2 joutuu odottamaan T 1 :n varaaman S-lukon vapautumista, ts. T 1 :n sitoutumista (tai peruutuksen päättymistä). 237

26 Monirakeisen tietokannan avainvälilukitus Monirakeisen loogisen tietokannan tapauksessa avainvälilukituskäytäntöä sovelletaan kaikilla rakeisuustasolla. Lukkoja voidaan nyt varata (1) koko järjestelmään s, (2) järjestelmän tietokantoihin b, (3) tietokannan b relaatioihin r ja (4) tietokannan b relaation r monikoiden avainarvoihin x. Lukkojen nimet ovat vastaavasti s, b, (b,r) ja (b,r,x) (tai niistä lasketut hajautusarvot). Tietokannan b relaatioiden kaavioiden selailua R[b,r,θr,R ] varten transaktion T on varattava pitkäkestoinen S-lukko relaatioon (b,r ). Relaation luontia I[b, r, R] varten T :n on varattava pitkäkestoinen X-lukko relaatioon (b,r) ja lyhytkestoinen X-lukko relaatioon (b,r ), missä r on relaation r seuraaja tietokannassa b. Relaation poistoa D[b, r, R] varten T :n on varattava lyhytkestoinen X-lukko relaatioon (b,r) ja pitkäkestoinen X-lukko seuraajaan (b,r ). Näin estetään relaatioiden likaiset luonnit ja poistot sekä likaiset ja toistokelvottomat kaavioselailut (haamurelaatioineen). 238

27 Järjestelmän tietokantojen b tunniste- ja omistajatietojen selailua R[b,θb,w ] varten T :n on varattava pitkäkestoinen S-lukko tietokantaan b. Tietokannan luontia I[b, w] varten T :n on varattava pitkäkestoinen X-lukko tietokantaan b ja lyhytkestoinen X-lukko b:n seuraajaan b. Tietokannan hävitystä D[b, w] varten T :n on varattava lyhytkestoinen X-lukko tietokantaan b ja pitkäkestoinen X-lukko seuraajaan b. Näin estetään tietokantojen likaiset luonnit ja hävitykset sekä likaiset ja toistokelvottomat tietokantojen tunniste- ja omistajatietojen selailut (haamutietokantoineen). 239

28 Eristyvyysanomaliat on nyt määriteltävä myös kokonaisuuteen ja sen osiin kohdistuvien operaatioiden välille. Esim. transaktio T 1 luo tietokantaan b uuden relaation r tai poistaa relaation r. T 1 :n ollessa vielä aktiivinen toinen transaktio T 2 lukee relaation r monikon tai lisää r:ään monikoita tai poistaa r:stä monikoita. T 2 :n lukuoperaatio pitää määritellä likaiseksi luvuksi ja lisäys- ja poisto-operaatiot likaisiksi kirjoituksiksi. T 1 suojaa operaationsa varaamalla asianmukaiset X-lukot relaatioon (b,r) ja seuraajaan (b,r ). T 1 :n hankkiman X-lukon relaatioon (b,r) täytyy merkitä, että T 1 on X-lukinnut (implisiittisesti) myös kaikki r:n monikot. Vastaavasti relaatioon (b, r) hankitun S-lukon täytyy merkitä, että kaikki r:n monikot on S-lukittu. 240

29 Miten havaitaan relaatioon (b, r) ja avainarvoon (b, r, x) otettujen lukkojen yhteensopimattomuus? Lukkotaulu voitaisiin yrittää organisoida tietorakenteeksi, joka säilyttää rakeisuushierarkian polut: Kun transaktio T pyytää m-lukkoa relaatioon (b, r), lukonhallitsin tarkistaa, ettei millään toisella transaktiolla ennestään ole m:n kanssa yhteensopimatonta lukkoa tietoalkioihin s, b, (b,r) tai (b,r,x), missä x on jokin r:stä parhaillaan lukittuna oleva avainarvo. Tällaista järjestelyä ei ole mahdollista saada riittävän tehokkaaksi. Olemme sitä paitsi jo aiemmin todenneet, että tehokkuussyistä monikon avainarvoonkin varattavan lukon nimenä käytetään mieluummin avainarvosta laskettua lyhyttä (nelitavuista) hajautusarvoa kuin alkuperäistä (vaihtelevanmittaista) avainarvoa. 241

30 Aikomuslukot ja monirakeisuuslukitus Lähtökohtana on pidettävä, että kaikkia lukkoja säilytetään yhdessä ja samassa, lukittavan tietoalkion nimen mukaan indeksoidussa yksinkertaisessa hajautusrakenteessa. Rakeisuushierarkian eri tasoilla varattavien lukkojen yhteensopimattomuuden havaitsemiseksi otetaan käyttöön uusia lukkotyyppejä, ns. aikomuslukot (intention locks). Aikomuslukkotyyppejä on kolme: IS (lukuaikomuslukko), IX (kirjoitusaikomuslukko) ja SIX (kirjoitusaikomus- ja lukulukko). 242

31 (1) Aikomusyhteiskäyttöinen eli lukuaikomuslukko (intentionshared) IS: T :n IS-lukko kokonaisuuteen c merkitsee, että T :n on lupa varata c:n yksittäisiin osiin S-lukkoja (ja IS-lukkoja, mikäli c:n osatkin jakaantuvat vielä osiin). (2) Aikomuspoissuljettu eli kirjoitusaikomuslukko (intention-exclusive) IX: T :n IX-lukko kokonaisuuteen c merkitsee, että T :n on lupa varata c:n yksittäisiin osiin X- ja S-lukkoja (ja IX-, IS- ja SIX-lukkoja, mikäli c:n osatkin jakaantuvat vielä osiin). (3) Yhteiskäyttöinen ja aikomuspoissuljettu eli kirjoitusaikomus- ja lukulukko (shared and intention-exclusive) SIX: Lukko on S-lukon ja IX-lukon yhdelmä. T :n SIX-lukko kokonaisuuteen c merkitsee, että T :n on lupa lukea koko c (SIX:iin sisältyvän S-lukon turvin) ja hankkia c:n yksittäisiin osiin X- ja IX-lukkoja (SIX:iin sisältyvän IX-lukon turvin). 243

32 Kokonaisuuteen c varattu X-lukko lukitsee implisiittisesti X-lukolla kaikki c:n osat hienojakoisimpaan osaan asti ilman, että niitä tarvitsisi lukita eksplisiittisesti. Vastaavasti kokonaisuuteen c varattu S-lukko lukitsee implisiittisesti S-lukolla kaikki c:n osat hienojakoisimpaan osaan asti ilman, että niitä tarvitsisi lukita eksplisiittisesti. Monirakeisuuslukituskäytäntö (multiple-granularity locking protocol) yhdistettynä avainvälilukitukseen toimii seuraavasti. Kullakin rakeisuushierarkian tasolla noudatetaan avainvälilukituskäytäntöä. Kun transaktio T haluaa eksplisiittisesti lukita kokonaisuuden c d- kestoisella lukolla, täytyy sen ensin hankkia asianmukaiset d-kestoiset aikomuslukot jokaiseen kokonaisuuteen rakeisuushierarkian juuresta c:hen johtavalla polulla. 244

33 Esim. järjestelmän s tietokannan b relaation r avainarvolla x varustettu monikko X-lukitaan T :lle d-kestoisella lukolla operaatioin lock(t,s,ix,d); lock(t,(s,b),ix,d); lock(t,(s,b,r),ix,d); lock(t,(s,b,r,x),x,d). Lukot hankitaan siis aina ensin suurempaan kokonaisuuteen ja sitten vasta pienempään, rakeisuushierarkiaa noudattaen. T voi vapauttaa kokonaisuuteen c hankkimansa d-kestoisen lukon vain, jos T :llä ei ole c:n osiin enää yhtään d-kestoista lukkoa. Lukot vapautetaan siis rakeisuushierarkian käänteisjärjestyksessä: unlock(t,(s,b,r,x),d); unlock(t,(s,b,r),d); unlock(t,(s,b),d); unlock(t, s, d). 245

34 Monirakeisuuslukituksen lukkotyyppien yhteensopivuusmatriisi: Comp m 1 -lukko m 2 -lukko IS IX S SIX X IS true true true true false IX true true false false false S true false true false false SIX true false false false false X false false false false false 246

35 Lukonkorotusmatriisi: Upgr omistama pyytämä IS IX S SIX X IS IS IX S SIX X IX IX IX SIX SIX X S S SIX S SIX X SIX SIX SIX SIX SIX X X X X X X X Lukkotyyppien keskinäinen poissulkevuusjärjestys on osittaisjärjestys, tarkemmin sanottuna hila, jonka huipulla on X (poissulkevin lukkotyyppi) ja pohjalla IS (vähiten poissulkeva lukkotyyppi). IS < IX < SIX < X. IS < S < SIX < X. Lukkotyyppien IX ja S välillä ei ole järjestysrelaatiota; niiden pienin yhteinen yläraja hilassa on SIX. 247

36 Esimerkiksi seuraavat kaksi tilannetta ovat sallittuja monirakeisuuslukituskäytännössä: (1) Transaktiolla T 1 on IS-lukko relaatioon r ja S-lukko r:n monikon avainarvoon x. Samanaikaisesti transaktiolla T 2 on IX-lukko r:ään, S- lukko x:ään ja X-lukko r:n toisen monikon avainarvoon y, ja transaktiolla T 3 on IX-lukko r:ään ja X-lukko r:n kolmannen monikon avainarvoon z. T 1 : IS(r). T 2 : IX(r). T 3 : IX(r). T 1 : S(r,x). T 2 : S(r,x). T 2 : X(r,y). T 3 : X(r,z). (2) Transaktioilla T 1 ja T 2 on IS-lukot relaatioon r ja S-lukot r:n monikon avainarvoon x. Transaktiolla T 3 on samaan aikaan SIX-lukko r:ään ja X-lukko r:n toisen monikon avainarvoon y. T 1 : IS(r). T 2 : IS(r). T 3 : SIX(r). T 1 : S(r,x). T 2 : S(r,x). T 3 : X(r,y). 248

37 Esimerkki kielletystä tilanteesta: (3) Transaktiolla T 1 on IX-lukko relaatioon r ja X-lukko r:n monikon avainarvoon x. Samaan aikaan T 2 :lla on SIX-lukko r:ään. T 1 : IX(r). T 2 : SIX(r). T 1 : X(r,x). 249

38 Rakeisuushierarkia voi myös koostua fyysisen tietokannan osakokonaisuuksista tai sekaisin loogisista ja fyysisistä osakokonaisuuksista. Esim. järjestelmä, tietokanta, tiedosto, sivu, monikko. Yleensä ei aikomuslukkoja vaadita aivan hierarkian juuresta eli tietokantajärjestelmästä asti. Mikäli tietokannan luonti ja hävitys ovat käyttäjän transaktioiden ulkopuolisia, tietokannan valvojan toimintoja, ei tietokantatasokaan kuulu käyttäjän transaktion monirakeisuuslukituksen piiriin. Järjestelmän tietokannan valvojan oppaasta yleensä ilmenee, mihin kokonaisuuksiin minkäkintyyppisiä lukkoja varataan mitäkin operaatiota varten. 250

39 Looginen vs. fyysinen lukitus Looginen lukitus on luonnollinen, koska lukituksen tehtävänä on suojata transaktioiden loogisen tietokannan tietoalkioihin kohdistamat luku- ja päivitysoperaatiot. Looginen lukko ei millään tavoin riipu lukitun tietoalkion sijaintipaikasta fyysisessä tietokannassa. Loogisesti lukittua tietoalkiota voidaan siirrellä paikasta toiseen tarvitsematta tehdä mitään muutosta lukkoon: lukon nimi säilyy. Kun transaktion T loogisesti lukitsema monikko (x, v) B-puun lehtisivulla siirtyy joko T :n itsensä tai jonkin toisen transaktion aiheuttamassa rakennemuutoksessa toiselle sivulle T :n ollessa vielä aktiivisena, säilyy T :n lukko avainarvoon x muuttumattomana. 251

40 Tarvittava looginen lukko voidaan usein myös varata ennen kuin itse tietoalkio on paikannettu fyysisessä tietokannassa. Kirjoitusperaatiota W[x, u, v] varten tarvittava pitkäkestoinen X- lukko voidaan varata heti operaation suorituksen alkaessa, ennen kuin monikon (x,u) sijaintipaikka on selvitetty. Lisäysoperaatiota I[x, v] varten tarvittava pitkäkestoinen X-lukko voidaan sekin varata heti operaation suorituksen alkaessa, mutta avainarvon x seuraajaan tarvittava lyhytkestoinen X-lukko saadaan vasta, kun avainarvon x peittävä tietosivu on naulittu ja kirjoitussalvattu ja x:n seuraaja on selvitetty. Looginen lukitus voidaan perustaa monikon varsinaisen attribuuttiarvon sijasta myös järjestelmän tuottamaan loogiseen keinoavaimeen (surrogate), jollaisena voi olla esimerkiksi järjestysnumero, joka ilmoittaa, monentenako monikko on relaatioon lisätty. Keinoavaimeen perustuvassa lukituksessa lukko voidaan kuitenkin varata vasta, kun monikko on saatu kokonaisuudessaan esille ja keinoavainattribuuttiin päästy käsiksi. 252

41 Monissa järjestelmissä sovelletaan kuitenkin fyysistä lukitusta: lukitaan esim. tietosivuja tai tietosivuilla sijaitsevia tietuepaikkoja. Sivulukituksessa (page locking) lukon nimenä on sivutunniste tai siitä laskettu hajautusarvo. Tietosivuun p varattu lukko lukitsee kaikki sivulla p sijaitsevat tai sille kuuluvat loogisen tietokannan tietoalkiot. Tietuelukituksessa (record locking) eli tietuetunnistelukituksessa (RID locking) lukon nimenä on tietuetunniste, siis sivutunnisteen ja tietuepaikan indeksin muodostama pari (p, i), tai siitä laskettu hajautusarvo. Tietuetunnisteeseen (p, i) varattu lukko lukitsee sivun p tietuepaikassa i olevan tai siihen kuuluvan tietoalkion. Tietuelukitus vastaa rakeisuudeltaan yksilöivän avaimen lukitusta. Sivulukitus on tarpeettoman karkearakeista, mikäli operoinnin kohteena on vain yksittäinen tietue sivulla. 253

42 Sivu- tai tietuelukko voidaan varata vasta, kun operoinnin kohteena olevan tietoalkion sijaintipaikka on selvitetty. Transaktion T omistamia sivu- tai tietuelukkoja on muutettava, jos tietoalkioita siirretään toiseen paikkaan T :n ollessa aktiivisena. Esim. T lisää joukon monikoita relaatioon, jonka rakenteena on harva B-puu. Lehtisivun täytyttyä osa sivun monikoista siirretään toiselle sivulle. Hienorakeista fyysistä lukitusta (tietuelukitusta) käytettäessä monikot on syytä sijoittaa sellaiseen perusrakenteeseen (esim. kasaan), jossa niiden sijainti ei muutu normaaleissa päivitysoperaatioissa. Perusrakenteeseen luodaan tiheä hakemisto, esim. tiheä B-puu, jonka lehtisivut sisältävät monikoihin osoittavia tietueita. Perusrakenteen uudelleen järjestelyä varten taas varataan tietueiden sijainnista riippumaton karkearakeinen lukko (relaatiolukko). 254

43 Lukkiumat Lukitukseen perustuvassa samanaikaisuuden hallintakäytännössä voi esiintyä lukkiumia (deadlock). Olkoot T 1 ja T 2 aktiivisia transaktioita. 1. T 1 lukee tietoalkion x; sitä varten T 1 varaa S-lukon x:ään. 2. T 2 lukee tietoalkion y; sitä varten T 2 varaa S-lukon y:hyn. 3. T 1 haluaa päivittää y:tä; sitä varten T 1 pyytää X-lukkoa y:hyn. Lukkoa ei voida myöntää välittömästi, vaan T 1 joutuu odottamaan T 2 :n varaaman lukon vapautumista. 4. T 2 haluaa päivittää x:ää; sitä varten T 2 pyytää X-lukkoa x:ään. Lukkoa ei voida myöntää välittömästi, vaan T 2 joutuu odottamaan T 1 :n varaaman lukon vapautumista. Kumpikin transaktio joutuu odottamaan toistaan ikuisesti. Tässä lukkiuma johtuu siitä, että kaksi transaktiota operoi kahteen monikkoon eri järjestyksissä ja lukitsee tietoalkiot yhteensopimattomilla lukoilla. 255

44 Myös lukon korotus lukulukosta kirjoituslukoksi voi johtaa lukkiumaan: 1. T 1 lukee tietoalkion x; sitä varten T 1 varaa S-lukon x:ään. 2. Myös T 2 lukee x:n; sitä varten T 2 varaa S-lukon x:ään. 3. T 1 haluaa päivittää x:ää; sitä varten T 1 pyytää S-lukkonsa korotusta X-lukoksi. Korotusta ei voida myöntää välittömästi, vaan T 1 joutuu odottamaan T 2 :n varaaman lukon vapautumista. 4. Myös T 2 haluaa päivittää x:ää; sitä varten T 2 pyytää S-lukkonsa korotusta X-lukoksi. Korotusta ei voida myöntää välittömästi, vaan T 2 joutuu odottamaan T 1 :n varaaman lukon vapautumista. 256

45 Itse asiassa lukon korotus on käytännössä tärkein lukkiuman syy. Seuraava toimintosarja näet esiintyy transaktioissa hyvin usein. 1. Varataan S-lukko monikon tietoalkioon x ja luetaan monikko. 2. Tutkitaan, pitääkö tietoalkiota päivittää. 3. Jos tietoalkiota pitää päivittää, korotetaan x:n S-lukko X-lukoksi ja suoritetaan päivitys. Jos tietoalkio on ns. hotspot-tietoalkio eli sitä päivitetään hyvin usein eri transaktioista, on lukkiuman vaara suuri. 257

46 Yleisesti: järjestelmä on lukkiutunut (in deadlock), jos joillekin aktiivisille transaktioille T 1,..., T n pätee: T 1 odottaa pääsyä T 2 :n varaamaan tietoalkioon. T 2 odottaa pääsyä T 3 :n varaamaan tietoalkioon. T n odottaa pääsyä T 1 :n varaamaan tietoalkioon. Tällainen toisiaan odottavien transaktioiden sykli voi syntyä ainoastaan lukituskäytännöissä. Aikaleimakäytännöissä (timestamp protocol) ei lukkiumia voi esiintyä, koska myöhästyneet operaatiot ratkaistaan peruuttamalla operaatiota yrittävä transaktio. Lukkiuman sattuessa jokin lukkiutuneista transaktioista täytyy peruuttaa. Lukkiumien käsittelyssä on kaksi peruslähestymistapaa: (1) Lukkiuman havaitsemis- ja purkumenetelmä (deadlockdetection and recovery scheme). (2) Lukkiumat estävä käytäntö (deadlock-prevention protocol). 258

47 Lukkiumien havaitseminen Tarkastellaan lukkiuman havaitsemismenetelmiä. Perusratkaisuna on pitää yllä toisiaan odottavien transaktioiden odotusverkkoa (wait-for graph). Odotusverkkoon lisätään kaari T T, kun transaktio T pyytää lukkoa transaktion T varaamaan tietoalkioon ja joutuu odottamaan. Verkosta poistetaan kaari T T, kun T ei enää odota pääsyä mihinkään T :n varaamaan tietoalkioon. Järjestelmä on lukkiutunut silloin ja vain silloin, kun odotusverkko on syklinen. Lukkiuman havaitsemiseksi on aika ajoin käynnistettävä algoritmi, joka tutkii, onko odotusverkossa syklejä. Lukkiuma puretaan peruuttamalla sykleihin sisältyviä transaktioita, kunnes odotusverkossa ei enää ole syklejä. 259

48 Esimerkki lukkiuman sisältävästä odotusverkosta: T 1 T 2 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 T

49 Ehdolliset lukkopyynnöt Transaktioiden tietokannan tietoalkioihin varaaminen lukkojen ohella tietokantajärjestelmän lukkiuman syynä voivat olla myös transaktioita tuottavien prosessien varaamat salvat tietokannan sivuihin. Esim. transaktiota T 1 tuottava palvelinprosessin säie lukusalpaa sivun p ja transaktiota T 2 tuottava säie lukusalpaa sivun q. Sitten T 1 :tä tuottava säie pyytää kirjoitussalpaa q:hun ja T 2 :ta tuottava säie kirjoitussalpaa p:hen. 261

50 Lukkiumia voi syntyä myös lukkojen ja salpojen kesken. Esim. T 1 on suorittanut tietosivulle p operaation I[x,v] ja sitä varten lukinnut avainarvon x pitkäkestoisella X-lukolla; T 1 :tä tuottava säie on vapauttanut p:n kirjoitussalvan. T 2 haluaa suorittaa operaation R[x,> z,v]. Sen vuoksi T 2 :tä tuottava säie lukusalpaa p:n, määrää hakuehdon täyttävän avainarvon x ja pyytää sitten T 2 :lle S-lukkoa x:ään. Koska x on X-lukittu T 1 :lle, T 2 :ta tuottava säie joutuu odottamaan. T 1 on vielä aktiivinen ja haluaa suorittaa operaation I[y,w], missä avainarvon y peittävä tietosivu on sekin p. Sen vuoksi T 1 :ta tuottava säie pyytää kirjoitussalpaa p:hen. Koska p on lukusalvattuna T 2 :ta tuottavalle säikeelle, T 1 :tä tuottava säie joutuu odottamaan. 262

51 Salpojen varauksen ja vapautuksen täytyy olla mahdollisimman nopeata. Sen vuoksi normaali käytäntö on, ettei prosessien varaamista salvoista pidetä yllä odotusverkkoa mahdollisten lukkiumien havaitsemiseksi. Prosessien noudattaman salpauskäytännön täytyy siis olla lukkiumat estävä. Jos prosessi tai säie joutuu pitämään samalla kertaa useampaa kuin yhtä sivua salvattuna (esim. B-puussa isä- ja lapsisivua), on salvat varattava aina samassa järjestyksessä (isäsivun salpa ensin lapsisivun salpaa). Salpojen ja lukkojen keskiset lukkiumat estetään vaatimalla, ettei prosessi (tai säie) saa koskaan pitää hallussaan salpaa mihinkään sivuun silloin, kun prosessin (tai säikeen) tuottama transaktio jotain lukkoa pyydettyään joutuu odottamaan. Transaktiota tuottavalle prosessille (tai säikeelle) sallitaan siis lukon odotus vain, jos sillä ei ole hallussaan yhtään salpaa. 263

52 Menettely vaatii, että lukonhallitsin pystyy käsittelemään tavanomaisten ehdottomien (ja niin muodoin mahdollisesti odotukseen johtavien) lukkopyyntöjen lisäksi myös ehdollisia lukkopyyntöjä (conditional lock request): Transaktiota T tuottava säie voi kutsulla conditionally-lock(t, x, m, d) pyytää T :lle ehdollisesti d-kestoista m-lukkoa tietoalkioon x, jolloin lukko myönnetään vain, jos se voidaan myöntää välittömästi, ts. x ei ole parhaillaan lukittuna m:n kanssa yhteensopimattomalla lukolla millekään toiselle transaktiolle. Muutoin lukonhallitsin vastaa T :n pyyntöön, ettei pyydettyä lukkoa voida myöntää. 264

53 Relaation avainväliselauksen toteutus Oletetaan, että looginen tietokanta jakaantuu relaatioihin ja että jokaisen relaation fyysisenä rakenteena on relaation pääavaimeen perustuva harva B-puu (sparse primary B-tree), jonka lehtisivut ovat relaation tietosivut eli siis sisältävät r:n monikot. Lehtisivut on linkitetty sivuttaissuunnassa vasemmalta oikealle niin, että kunkin lehtisivun otsikkotietueessa on sivun seuraajasivun tunniste. Tarkastellaan luku- tai päivitysoperaatiota, joka kohdistuu relaation r(x,v ) tietylle avainvälille (x,y). Kun relaation tunniste r ja avainarvo x on annettu, kutsu traversefor-read(r, x, p) konttaa r:n B-puussa lukusalvoin avainarvon x peittävälle lehtisivulle p; kutsusta palattaessa p on lukusalvattu. Kutsu traverse-for-update(r, x, p) konttaa r:n B-puussa lukusalvoin avainarvon x peittävälle lehtisivulle p siten, että sivulle p varataan lukusalvan asemesta kirjoitussalpa. 265

54 Avainväliselausta varten asiakassovellusta palveleva palvelinprosessin säie luo keskusmuistiin kohdistinrakenteen (cursor structure) c, joka sisältää mm. seuraavat komponentit: (1) Selattavan relaation tunniste c.relation. (2) Selausvuorossa olevan sivun tunniste c.page-id. (3) Selausvuorossa olevan sivun Page-LSN c.page-lsn. (4) Selausvuorossa oleva avainarvo c.key-value. Näitä tietoja tarvitaan, kun selausvuorossa olevan sivun salpa joudutaan selauksen kuluessa välillä vapauttamaan. Näin tapahtuu, kun ehdollinen lukkopyyntö ei johda lukon varaamiseen tai kun selausvuorossa olevan monikon päivittäminen riippuu sovellusohjelmassa laskettavasta ehdosta. 266

55 Tarkastellaan transaktion T suorittamaa SQL-kyselyä, jossa luetaan kaikki avainvälin (y,z) monikot: select from r where y < X and X < z Kysely tuottaa jonon monikoiden lukuoperaatioita: R[x 1,> y,v 1 ]R[x 2,> x 1,v 2 ]...R[x n, x n 1,v n ]. Oletetaan, että kyselynoptimoija on arvioinut luettavien monikoiden lukumäärän niin pieneksi, että monikkorakeista lukintaa kannattaa käyttää. 267

56 1. Lock(T, r, IS, commit-duration). Luo kohdistin c relaation r selausta varten; c.relation := r; c.key-value := y. 2. Traverse-for-read(r, y, p). 3. c.page-id := p; c.page-lsn := Page-LSN(p). 4. Suorita jokaiselle ehdon y < x < z täyttävälle sivun p avainarvolle x kutsu conditionally-lock(t, (r, x), S, commit-duration). Jos sivu p peittää välin (y,z) seuraajan z, suorita lisäksi kutsu conditionallylock(t, (r,z ), S, commit-duration) (tässä z =, jos avainarvoavaruus luettiin loppuun). Jos jokin näistä kutsuista ei johda lukon myöntämiseen, niin ul(p) ja suorita kutsu lock(t, (r, x), S, commit-duration) kyseisille avainarvoille x ja siirry askeleeseen Tulosta sivulta p ehdon y < x < z täyttävillä avainarvoilla x varustetut monikot. Aseta c.key-value := x, missä x on suurin palautettu avainarvo. 6. Jos väli (y,z) on luettu loppuun, niin ul(p) ja lopeta. Muutoin q := p:n seuraajasivun page-id, rl(q), ul(p), p := q ja siirry askeleeseen p := c.page-id; rl(p); y := c.key-value. Jos Page-LSN(p) = c.page-lsn tai jos p on edelleen r:n tietosivu ja p:n nähdään peittävän y:n, niin siirry askeleeseen 4. Muutoin ul(p) ja siirry askeleeseen

57 Tarkastellaan sitten transaktion T päivitysoperaatiota, jossa luetaan relaation r(x,v ) avainvälin (y, z) monikot ja päivitetään niistä joitakin. exec sql declare c cursor for select from r where :y < X and X < :z for update; exec sql open c; while (true) { exec sql fetch c into :x, :v; if (sqlstate = monikoita riittää ) if ((:x, :v) täyttää ehdon C(:x, :v)) exec sql update r set V = E(:v) where current of c; else break }. 269

58 Oletetaan, että kyselynoptimoija on arvioinut välin (y, z) monikoiden lukumäärän niin pieneksi, että relaatioon kannattaa varata IXlukko SIX-lukon asemesta. Lauseen exec sql open c toteutus: 1. Lock(T, r, IX, commit-duration). Luo kohdistin c relaation r selausta varten; c.relation := r; c.key-value := y. 2. Traverse-for-update(r, y, p). 3. c.page-id := p; c.page-lsn := Page-LSN(p); ul(p). 270

59 Lauseen exec sql fetch c into :x, :v toteutus: 1. y := c.key-value; p := c.page-id; wl(p). Jos Page-LSN(p) = c.page-lsn tai jos p on edelleen r:n tietosivu ja p:n nähdään peittävän y:n, niin siirry askeleeseen ul(p); traverse-for-update(r,y, p). 3. c.page-id := p; c.page-lsn := Page-LSN(p). 4. Määrää pienin ehdon y < x < z täyttävä avainarvo x sivulla p. Mikäli tällainen avainarvo x löytyy, siirry askeleeseen Jos välin (y, z) monikoita voi olla p:n seuraajasivulla q, niin wl(q), ul(p), p := q ja siirry askeleeseen 3. Muutoin x := välin (y,z) seuraaja (mahdollisesti ) ja conditionally-lock(t, (r, x), S, commit-duration). Jos lukko myönnetään, aseta sqlstate := monikot loppu, ul(p) ja lopeta. Muutoin ul(p), lock(t, (r,x), S, commit-duration) ja siirry askeleeseen Conditionally-lock(T,(r,x),S,commit-duration). Jos lukko myönnetään, (x, v) := avainarvolla x varustettu monikko sivulta p, ul(p), c.key-value := x, c.page-lsn := Page-LSN(p), aseta sqlstate := monikoita riittää ja palauta (x,v). Muutoin ul(p), lock(t, (r,x), S, commitduration) ja siirry askeleeseen

60 Lauseen exec sql update r set V = E(:v) where current of c toteutus: 1. x := c.key-value; lock(t,(r, x),x,commit-duration); p := c.pageid; wl(p). 2. Jos Page-LSN(p) = c.page-lsn tai jos p on edelleen avainarvolla x varustetun monikon sisältävä r:n tietosivu, niin siirry askeleeseen ul(p); traverse-for-update(r,x, p). 4. c.page-id := p; c.page-lsn := Page-LSN(p). 5. Korvaa sivulla p tietuepaikassa i oleva monikko (x, v) monikolla (x,v ), missä v = E(:v). 6. log(n, T,W, p,i,x,v,v,n ), missä n = Undo-Next-LSN(T ); Undo-Next-LSN(T ) := n; Page-LSN(p) := n; ul(p). 272

Tietokantarakenteet ja -algoritmit 6. harjoitus

Tietokantarakenteet ja -algoritmit 6. harjoitus Tietokantarakenteet ja -algoritmit 6. harjoitus Malliratkaisut 1.. a) T1 = B I[b, r 2, 0, 0] IX-lukitaan järjestelmä s, tietokanta b ja relaatio (b, r 2 ) (tässä järjestyksessä), X-lukitaan (b, r 2, 0)

Lisätiedot

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

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo. Tietokantarakenteet ja -algoritmit 5. harjoitus Malliratkaisut 1. B 1 : T 1 alkaa. I 1 [1]: T 1 :lle pitkäkestoinen X-lukko avaimeen 1 ja lyhytkestoinen X-lukko avaimen 1 seuraajaan. B 2 : T 2 alkaa. I

Lisätiedot

Muita transaktioiden hallintamenetelmiä

Muita transaktioiden hallintamenetelmiä Muita transaktioiden hallintamenetelmiä 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

Lisätiedot

Transaktioiden peruutus ja tietokannan elvytys häiriöstä

Transaktioiden peruutus ja tietokannan elvytys häiriöstä Transaktioiden peruutus ja tietokannan elvytys häiriöstä C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial

Lisätiedot

Tietokantarakenteet ja -algoritmit 3. harjoitus

Tietokantarakenteet ja -algoritmit 3. harjoitus Tietokantarakenteet ja -algoritmit 3. harjoitus Malliratkaisut 1. Analyysivaiheen alussa alustetaan aktiivisten transaktioiden taulu (tyhjä) ja päivitettyjen sivujen taulu (samoin tyhjä) tarkistuspisteestä.

Lisätiedot

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

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely HAAGA-HELIA Heti-09 1 (14) Transaktionkäsittely Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen...

Lisätiedot

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden

Lisätiedot

D B. Transaktionhallinta - samanaikaisuus

D B. 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

Lisätiedot

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

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. 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

Lisätiedot

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

25.4.05. Helsingin yliopisto/tktl Tietokannan hallinta, kevät 2005. Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (= käyttäviä prosesseja). On toivottavaa, että yhdenkään käyttäjän toiminta ei hidastuisi kohtuuttomasti, vaikka muita käyttäjiä olisi runsaastikin

Lisätiedot

Lokin ylläpito ja puskurinhallinta

Lokin ylläpito ja puskurinhallinta Lokin ylläpito ja puskurinhallinta C. Mohan, D. Haderle, B. Lindsay, H. Pirahesh & P. Schwartz: ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

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

Lisätään avainarvo 1, joka mahtuu lehtitasolle: Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 14.5.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle

Lisätiedot

Looginen tietokanta ja transaktiot

Looginen tietokanta ja transaktiot Looginen tietokanta ja transaktiot A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 22 23, luvun 1 (introduction) kohta kohta 1.9 (transaction

Lisätiedot

T-106.5220 Transaktionhallinta tietokantajärjestelmissä

T-106.5220 Transaktionhallinta tietokantajärjestelmissä Opetusmoniste T-106.5220 Transaktionhallinta tietokantajärjestelmissä Kevät 2009 (periodi III) Osa 1: Looginen tietokanta ja transaktiot Osa 2: Fyysinen tietokanta Osa 3: Lokin ylläpito ja puskurinhallinta

Lisätiedot

Sivupalvelin- ja yhteislevyjärjestelmät

Sivupalvelin- ja yhteislevyjärjestelmät Sivupalvelin- ja yhteislevyjärjestelmät C. Mohan & I. Narang 1994: ARIES/CSA: a method for database recovery in client-server architectures. Proc. of the 1994 ACM SIG- MOD Internat. Conf. on Management

Lisätiedot

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12

Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 Tietokantarakenteet ja -algoritmit Harjoitukset 1-12 Malliratkaisut 1 Harjoitus 1 1. Kukin DEPARTMENT-monikko d sijoitetaan omalle sivulleen. Sen seuraksi samalle sivulle sijoitetaan tähän liittyviä EMPLOYEE-monikoita

Lisätiedot

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57.

Transaktiopalvelimen rakenne, s. 43. Levyjaksot, sivut ja tiedostot, s. 46. Tietokantasivujen puskurointi, s. 53. Tietokannan tila, s. 57. Fyysinen tietokanta A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut 24 26, luvun 1 (introduction) kohta 1.11 (database architecture); sivut

Lisätiedot

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

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2. Samanaikaisuuden hallinta tietokantapalvelimessa Tiedonhallintaa Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 1 Transaktiot eli tapahtuma(sarja)t 2 Transaktio (transaction) on DBMSn

Lisätiedot

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

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI (7.3.2012) TEHTÄVIÄ/KYSYMYKSIÄ Määrittele tapahtuma (transaction) tapahtumien hallinta Mitä ovat tapahtuman ACIDominaisuudet?

Lisätiedot

Hajautettujen transaktioiden hallinta

Hajautettujen transaktioiden hallinta Hajautettujen transaktioiden hallinta M. Kifer, A. Bernstein & P. M. Lewis: Database Systems. An Application-Oriented Approach. Complete Version. Pearson Addison Wesley, 2006; sivut 1005 1028, luvun 24

Lisätiedot

Transaktiot - kertausta

Transaktiot - kertausta Hajautettujen järjestelmien perusteet Transaktiot - kertausta Distributed Systems, Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg Addison-Wesley 1988,1994. Pearson Education 2001 ISBN:

Lisätiedot

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

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17 R & G Chapter 17 ~ 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

Lisätiedot

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Tietohakemisto ja Transaktionkäsittely

Tietohakemisto ja Transaktionkäsittely HELIA TIKO-05 1 (18) Tietohakemisto ja Transaktionkäsittely Tietohakemisto...2 Oraclen tietohakemistonäkymät (osa)...3 Yleiset...3 Taulut...3 Säännöt...3 Näkymät...3 Synonyymit...4 Indeksit...4 Sekvenssit...4

Lisätiedot

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

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

Lisätiedot

D B. Tiedostojen käsittely

D B. Tiedostojen käsittely Tietokantojen tietoja säilytetään yleensä apumuistissa, lähinnä levymuisteissa Apumuistiin tallentamisen merkittäviä etuja keskusmuistiin nähden ovat tiedon säilyvyys (virtakatkon yli) säilytyskapasiteetin

Lisätiedot

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö Algoritmit 2 Luento 5 Ti 28.3.2017 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot Algoritmit 2 Kevät 2017 Luento 5 Ti 28.3.2017 2/29 B-puu Algoritmit 2 Kevät 2017 Luento 5 Ti

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

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

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja mikä tahansa tietokokoelma? --> erityispiirteitä Tietokanta vs. tiedosto 1

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

5.2 Samanaikaisuuden hallinta

5.2 Samanaikaisuuden hallinta Tietokannan hallinta 29 5. Tapahtumien hallinta Tietokannan hallinta 30 5. Tapahtumien hallinta 5.2 Samanaikaisuuden hallinta Tietokannalla on tyypillisesti useita samanaikaisia käyttäjiä (ohjelmia/ihmisiä).

Lisätiedot

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta AVL-puut eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta pohjana jo esitetyt binäärihakupuiden operaatiot tasapainotus vie pahimmillaan lisäajan lisäys- ja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti

Lisätiedot

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan

Lisätiedot

Tietokanta (database)

Tietokanta (database) Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset

Lisätiedot

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja Tietokantojen hakemistorakenteet Hakemistorakenteiden (indeksien) tarkoituksena on nopeuttaa tietojen hakua tietokannasta. Hakemisto voi olla ylimääräinen oheishakemisto (secondary index), esimerkiksi

Lisätiedot

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta Hakemistotyypeistä Hakemistorakenteet R & G Chapter 10 Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta tai tietuejoukosta tuotettu tunnus yleensä

Lisätiedot

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

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto Tietokanta Tiedosto Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot

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

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) SQL-transaktiot Lähes kaikissa tietojärjestelmissä tietojen talletus on toteutettu tietokannoissa, joita käytetään tietokannanhallintajärjestelmien (DBMS) palvelujen

Lisätiedot

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö Algoritmit 1 Luento 6 Ke 25.1.2017 Timo Männikkö Luento 6 Järjestetty lista Listan toteutus dynaamisesti Linkitetyn listan operaatiot Vaihtoehtoisia listarakenteita Puurakenteet Binääripuu Järjestetty

Lisätiedot

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003 Matti Nykänen 5. joulukuuta 2003 1 Satelliitit Muunnetaan luennoilla luonnosteltua toteutusta seuraavaksi: Korvataan puusolmun p kentät p. key ja

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet

MS-A0402 Diskreetin matematiikan perusteet MS-A040 Diskreetin matematiikan perusteet Osa : Relaatiot ja funktiot Riikka Kangaslampi 017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta A

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI Tavoite: Suunnitella käyttäjien tarvitsemat turvallisuusmekanismit ja säännöt. Toisin sanoen: tehdä tietokannasta turvallinen ja luotettava. Muistutus: Tietokanta

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 12.4.2016 CSE-A1200 Tietokannat 12.4.2016 1 / 42 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan

Lisätiedot

isomeerejä yhteensä yhdeksän kappaletta.

isomeerejä yhteensä yhdeksän kappaletta. Tehtävä 2 : 1 Esitetään aluksi eräitä havaintoja. Jokaisella n Z + symbolilla H (n) merkitään kaikkien niiden verkkojen joukkoa, jotka vastaavat jotakin tehtävänannon ehtojen mukaista alkaanin hiiliketjua

Lisätiedot

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

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta Tietokannan hallinta - kurssin tavoite Kurssilla opitaan periaatteet fyysisen tietokannan tallennuksesta ja käsittelystä tietokantakyselyiden muuntamisesta fyysisen tietokannan käsittelyoperaatioiksi kyselyn

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

Algoritmi on periaatteellisella tasolla seuraava: Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S

Lisätiedot

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu HELIA 1 (16) Luento 3.2 Suorituskyvyn optimointi jatkuu...... 2 Tietojen tallennusratkaisut... 2 Tiedon tallennuksen yksiköitä... 3 Loogiset... 3 Fyysiset... 3 Tallennusmäärittelyt Oraclessa... 5 Loogiset

Lisätiedot

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella

Lisätiedot

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta

811312A Tietorakenteet ja algoritmit Kertausta jälkiosasta 811312A Tietorakenteet ja algoritmit 2016-2017 Kertausta jälkiosasta IV Perustietorakenteet Pino, jono ja listat tunnettava Osattava soveltaa rakenteita algoritmeissa Osattava päätellä operaatioiden aikakompleksisuus

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti. Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen

Lisätiedot

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

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007 Jaetun muistin muuntaminen viestin välitykseksi Otto Räsänen 15. lokakuuta 2007 1 Motivaatio 2 Valtuuden välitys Peruskäsitteitä 3 Kolme algoritmia Valtuuden välitys käyttäen laskuria ilman ylärajaa Valtuuden

Lisätiedot

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

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Rinnakkaisuus Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 4. 2012 Sisältö 1 Rinnakkaisuusmalleja: säie ja prosessi 2

Lisätiedot

D B. Harvat hakemistot. Harvat hakemistot

D B. Harvat hakemistot. Harvat hakemistot Harvassa hakemistossa on ei ole hakemistomerkintöjä jokaista tietuetta kohden vaan yksi merkintä jotain isompaa kokonaisuutta esimerkiksi sivua tai sivujoukkoa (esim. saman uran sivut) kohti Harvan hakemiston

Lisätiedot

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

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne HAAGA-HELIA Heti-09 1 (6) Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne Tietovarastotekniikan kehittyminen... 2 Tiedostopohjaiset ratkaisut... 2 Tiedoston palvelut... 3 Tiedostopohjaisten

Lisätiedot

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

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä hyväksymispäivä arvosana arvostelija Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä Tuomas Husu Helsinki 20.2.2010 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto

Lisätiedot

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö

Algoritmit 1. Luento 13 Ti 23.2.2016. Timo Männikkö Algoritmit 1 Luento 13 Ti 23.2.2016 Timo Männikkö Luento 13 Suunnittelumenetelmät Taulukointi Kapsäkkiongelma Ahne menetelmä Verkon lyhimmät polut Dijkstran menetelmä Verkon lyhin virittävä puu Kruskalin

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

Lisätiedot

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

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

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

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

Lisätiedot

D B. Tietokannan hallinta kertaus

D B. Tietokannan hallinta kertaus TKHJ:n pääkomponentit metadata TKHJ:ssä Tiedostojen käsittely puskurien rooli tiedostokäsittelyssä levymuistin rakenne ja käsittely mistä tekijöistä hakuaika muodostuu jonotus jos useita samanaikaisia

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

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

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

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

Levymuisti. R&G Chapter 8 & Tietokannan hallinta, kevät 2006, Jan 1 Levymuisti R&G Chapter 8 & 9 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Tiedon talletuspaikkoja Levy: Pystytään noutamaan satunnainen sivu kiinteällä kustannuksella Useiden sivujen noutaminen halvempaa

Lisätiedot

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja:

Tiedon talletuspaikkoja. Levymuisti. Vaihtoehtoisia talletusrakenteita. Tietokantojen säilytys. R&G Chapter 8 & 9. Useita vaihtoehtoja: Tiedon talletuspaikkoja Levymuisti R&G Chapter 8 & 9 Levy: Pystytään noutamaan satunnainen sivu kiinteällä kustannuksella Useiden sivujen noutaminen halvempaa kuin satunnaisen sivun Nauha: Sivuja käsiteltävä

Lisätiedot

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

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, (s) symmetrinen, jos xry yrx, (as) antisymmetrinen, jos xry yrx x =

Lisätiedot

Samanaikaisuuden hallinta Snapshot Isolationin avulla

Samanaikaisuuden hallinta Snapshot Isolationin avulla hyväksymispäivä arvosana arvostelija Samanaikaisuuden hallinta Snapshot Isolationin avulla Olli Korhonen Helsinki 4.3.2009 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO

Lisätiedot

Dynaaminen ohjelmointi ja vaikutuskaaviot

Dynaaminen ohjelmointi ja vaikutuskaaviot Dynaaminen ohjelmointi ja vaikutuskaaviot. Taustaa 2. Vaikutuskaaviot ja superarvosolmut 3. Vaikutuskaavion ratkaiseminen 4. Vaikutuskaavio ja dynaaminen ohjelmointi: 5. Yhteenveto Esitelmän sisältö Optimointiopin

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Stabiloivat synkronoijat ja nimeäminen

Stabiloivat synkronoijat ja nimeäminen Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007 Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä.

Lisätiedot

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 Ke Timo Männikkö Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

Luonnollisten lukujen ja kokonaislukujen määritteleminen

Luonnollisten lukujen ja kokonaislukujen määritteleminen Luonnollisten lukujen ja kokonaislukujen määritteleminen LuK-tutkielma Jussi Piippo Matemaattisten tieteiden yksikkö Oulun yliopisto Kevät 2017 Sisältö 1 Johdanto 2 2 Esitietoja 3 2.1 Joukko-opin perusaksioomat...................

Lisätiedot

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

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko, Tehtävä 1 : 1 a) Olkoon G heikosti yhtenäinen suunnattu verkko, jossa on yhteensä n solmua. Määritelmän nojalla verkko G S on yhtenäinen, jolloin verkoksi T voidaan valita jokin verkon G S virittävä alipuu.

Lisätiedot

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet 3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

Lisätiedot

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun: Tietorakenteet ja algoritmit, kevät 201 Kurssikoe 1, ratkaisuja 1. Tehtävästä sai yhden pisteen per kohta. (a) Invariantteja voidaan käyttää algoritmin oikeellisuustodistuksissa Jokin väittämä osoitetaan

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

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

Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä. Vesa Tähkävuori Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä käyttäen InnoDBtietokantamoottoria Vesa Tähkävuori Opinnäytetyö Tietojenkäsittelyn koulutusohjelma 2010 Tiivistelmä 16.11.2010 Tietojenkäsittelyn

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I MS-A040 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I G. Gripenberg Aalto-yliopisto. maaliskuuta 05 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteet Esimerkkejä. ym.,

Lisätiedot

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

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2: Tietokannan hallinta 1 5. Tapahtumien hallinta Tietokannan hallinta 2 5. Tapahtumien hallinta 5. Tapahtumien hallinta = transaction management (yleistä: E&N, Ch. 19) kaikkien tietokantajärjestelmien keskeinen

Lisätiedot