Lokin ylläpito ja puskurinhallinta
|
|
- Aki Pääkkönen
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 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 logging. ACM Transactions on Database Systems 17:1 (1992), ; kohdat 1.1 (logging, failures, and recovery methods), 1.2 (latches and locks), 1.4 (buffer management), 2 (goals), 3 (overview of ARIES), 4 (data structures), 5.1 (updates) ja 9 (nested top actions). A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006, sivut , luvun 11 (storage and file structure) kohdat (buffer manager) ja (buffer-replacement policies); sivut , luvun 17 (recovery system) kohdat 17.2 (storage structure), 17.3 (recovery and atomicity) ja 17.4 (log-based recovery); sivut , kohta 17.6 (buffer management); sivut , kohta (logical undo logging); sivut , kohdan (ARIES) alakohta (data structures). 77
2 Tietokannan loki, s. 79. Fyysinen ja looginen lokikäytäntö, s. 83. Fysiologinen lokikäytäntö, s. 87. Aktiivisten transaktioiden taulu, s. 91. Avainvälimallin operaatioiden lokikirjaukset, s. 94. Rakennemuutosten lokikirjaukset, s Tietosivun päivittäminen, s WAL-käytäntö, s Puskurinhallintakäytännöt, s Levyhakujen vähentäminen, s
3 Tietokannan loki Normaalin transaktionkäsittelyn aikana pidetään yllä lokia (log) seuraavia tarkoituksia varten: (1) Transaktioiden peruutus tai osittaisperuutus: etenemisvaiheen päivitysten käänteisoperaatioiden tuottaminen. (2) Häiriöistä elvytys: tietokannan levyversiosta puuttuvien päivitysten toisto ja transaktioiden peruutus. Lokiin kirjataan transaktioiden tietokantaan tekemät päivitykset, so. avainvälimallissa I-, D-, I 1 - ja D 1 -operaatiot, transaktioiden ohjausoperaatiot B, C, A, S[P], A[P] ja C[P], fyysisen tietokannan rakennemuutokset sekä elvytystä nopeuttavaa tietoa tarkistuspisteistä. 79
4 Jokainen lokikirjaus saa yksikäsitteisen lokijärjestysnumeron (log sequence number, LSN). Keskitetyssä tietokannassa lokijärjestysnumeroiden jono on nouseva: jos transaktion T operaatio o on suoritettu transaktion T operaation o jälkeen, on LSN(o) < LSN(o ). Yhteislevy- tai sivupalvelinjärjestelmässä, jossa pisteet (asiakkaat) tuottavat yhteiseen tietokantaan kohdistamistaan operaatioista lokikirjauksia toisistaan riippumattomasti, ei lokijärjestysnumeroiden jono voi olla globaalisti nouseva. Samalle sivulle kohdistuvien päivitysten LSN-arvojen pitää kuitenkin aina muodostaa ajan suhteen nouseva jono. 80
5 Lokijärjestysnumerot pyritään tuottamaan siten, että ne toimivat myös suorina (tai lähes suorina) osoitteina lokikirjauksiin. Usein käytetään lokitiedoston numeron ja tavusiirtymän muodostamaa paria. Tavusiirtymä ilmoittaa lokikirjauksen ensimmäisen tavun numeron tiedoston alusta lukien; siitä saadaan tietueen sijaintisivu operaatiolla sivunumero = tavusiirtymä div sivun koko. Tavusiirtymän sijasta voitaisiin käyttää myös tietuetunnistetta (p, i), missä p on sivunumero (1,2,3,...) ja i tietueen järjestysnumero sivulla (sivun sisäisen tietuehakemiston indeksi). Silloin (p 1,i 1 ) < (p 2,i 2 ), jos joko p 1 < p 2 tai p 1 = p 2 ja i 1 < i 2. Transaktion T tuottama lokikirjaus varustetaan aina T :n tunnisteella ja T :lle kuuluvat lokikirjaukset linkitetään LSN:ien avulla toisiinsa. 81
6 Transaktion T lokikirjauksen yleinen muoto on n: T,o[ x],n, missä o[ x] esittää kirjattavaa operaatiota ja sen argumentteja, n on kirjauksen LSN ja n on joko T :n edellisen lokikirjauksen LSN (etenemisoperaation kirjauksessa) tai T :n seuraavaksi peruutettavan operaation lokikirjauksen LSN (käänteisoperaation kirjauksessa). Transaktion T etenemisoperaatio o[ x] kirjataan lokitietueeseen siten, että operaatio voidaan tarvittaessa toistaa tai perua. Transaktion T peruutusvaiheessaan tai osittaisperuutuksessa suorittama käänteisoperaatio o 1 [ x] on tarpeen kirjata ainoastaan toistokelpoisesti: operaatio o 1 [ x] on lokikirjauksen perusteella voitava toistaa; peruutuskelpoisuus ei sitä vastoin ole tarpeen, koska käänteisoperaatioita ei koskaan peruta. Lokikirjauskäytännöt voidaan luokitella fyysisiin, loogisiin ja fysiologisiin lokikäytäntöihin. 82
7 Fyysinen ja looginen lokikäytäntö Arvoperustaisessa eli fyysisessä lokikäytännössä (value logging, physical logging) lokitietueeseen kirjataan päivityksen kohteena olevan sivun numero, päivitysoperaation vaikutuksesta muuttuneiden tavujen sijainti sivulla sekä päivityksen alkukuva ja jälkikuva. Alkukuva (before image) ilmoittaa tavujen sisällön ennen päivitystä ja jälkikuva (after image) tavujen sisällön päivityksen jälkeen. Esim. monikon (x,v) lisäyksestä sivulle p tietuepaikkaan i kirjattaisiin tietuepaikan i muuttuneet tavut sivun p tietuealueella sekä myös muuttuneet tavut sivun p tietuehakemistossa (indeksin i kohdalla) ja p:n otsikkotietueessa (tietuehakemiston alkioiden lukumäärän osoittavassa kentässä). 83
8 Muuttuneet tavujonot osoitteineen (tavusiirtymä sivun alusta) ja alku- ja jälkikuvineen voidaan kirjata kaikki yhteen lokikirjaukseen, mikäli tämä mahtuu yhdelle sivulle. Voidaan myös käyttää useampaa lokitietuetta; esim. alkukuva voidaan kirjata yhteen ja jälkikuva toiseen. Lokiin fyysisesti kirjattu päivitysoperaatio voidaan toistaa naulitsemalla ja kirjoitussalpaamalla asianomainen sivu ja kirjoittamalla siihen jälkikuva, ja operaatio voidaan perua kirjoittamalla alkukuva. 84
9 Loogisessa lokikäytännössä (logical logging) lokitietueeseen kirjataan loogisia operaatioita, so. avainvälimallissamme operaatioita I[x,v], D[x,v], I 1 [x,v] ja D 1 [x,v]. Esim. transaktion T etenemisoperaatio I[x,v] kirjattaisiin n: T,I,x,v,n, missä n on T :n edellisen lokikirjauksen LSN. Looginen operaatio toistetaan suorittamalla operaatio uudestaan (loogisesti) ja perutaan suorittamalla operaation käänteisoperaatio (loogisesti). Esim. I[x,v] perutaan suorittamalla D[x,v]. 85
10 Loogisesti kirjatun operaation toisto ja peruutus ovat tehottomia. Esim. toistetaan D[x,v]. Jos tietokannan rakenteena on kasa (järjestämätön peräkkäistiedosto), on siitä etsittävä avainarvolla x varustettu monikko konttaamalla kasan sivut läpi kirjoitussalpoja varaten, kunnes päästään monikon (x,v) sisältävälle sivulle. Jos tietokannan rakenteena on B-puu, on siitä etsittävä avainarvolla x varustettu monikko konttaamalla hakupolku B-puun juurisivulta avainarvon x peittävälle lehtisivulle. 86
11 Fysiologinen lokikäytäntö Nykyisissä tkhj:ssä sovelletaan yleensä fyysis-loogista eli fysiologista lokikäytäntöä (physiological logging), jossa lokikirjaukset ovat sivun osalta fyysisiä ja tietueen osalta loogisia. Esim. transaktion T harvan B-puun lehtisivulle p tietuepaikkaan i suorittama operaatio I[x,v] kirjataan n: T,I, p,i,x,v,n. Esitettävässä elvytysmenetelmässä (ARIES-algoritmissa) operaatioiden toistot suoritetaan aina täsmälleen lokikirjausjärjestyksessä eli operaatioiden alkuperäisessä suoritusjärjestyksessä. Fysiologisesti kirjatun operaation toisto voidaan niin muodoin aina toteuttaa fyysisesti, so. samalle sivulle p ja samaan tietuepaikkaan i, johon se alkujaan tehtiin ja jonka paikan osoite, (p,i), on kirjattu lokitietueeseen. 87
12 Fyysinen toisto on hyvin tehokasta, sillä operaation kohdetta ei tarvitse etsiä, vaan kohteen sijaintisivulle päästään suoraan riippumatta siitä, mikä fyysinen tietokantarakenne on kysymyksessä. Lokiin tietueella T,I, p,i,x,v,n kirjatun operaation I[x,v] toistossa sivu p naulitaan ja kirjoitussalvataan, lisätään monikko (x,v) sivulle p paikkaan i ja vapautetaan p:n salpaus ja naulinta. Lokiin tietueella T,D, p,i,x,v,n kirjatun operaation D[x,v] toistossa sivu p naulitaan ja kirjoitussalvataan, poistetaan sivulta p tietuepaikassa i oleva monikko (joka on (x,v)) ja vapautetaan p:n salpaus ja naulinta. 88
13 Operaation peruutus fyysisesti ei sitä vastoin aina ole mahdollista. Transaktioita tuottavat prosessit vapauttavat päivittämiinsä sivuihin varaamansa kirjoitussalvat heti päivitysoperaation suorituksen jälkeen, siis ennen transaktion sitoutumista, ja voivat peruuttaa operaatioitaan toisista transaktioista riippumatta. Transaktio T suorittaa B-puun lehtisivulle p paikkaan i operaation D[x,v]. Operaatio kirjataan lokiin tietueella n: T,D, p,i,x,v,n. T vapauttaa sivun p kirjoitussalvan ja jatkaa etenemistään suorittaen muita operaatioita. Muiden transaktioiden operaatiot sillä välin täyttävät sivua p niin, ettei sinne enää jää tilaa yhdellekään tietueelle, tai sitten sivu p ylivuotaa ja halkaistaan niin, että varattu uusi sivu p peittää avainarvon x. 89
14 T on vielä aktiivinen ja haluaa nyt peruuttaa operaation D[x,v]. Käänteisoperaation D 1 [x,v] suoritus fyysisesti sivulle p ei onnistu. Kun operaatiota ei voida peruuttaa fyysisesti, turvaudutaan loogiseen peruutukseen. Operaation D[x, v] peruutusta yritetään ensin entiselle sivulle p: sivu p naulitaan ja kirjoitussalvataan ja jos se vielä peittää avainarvon x ja jos sivulla p on tilaa monikolle (x,v), niin lisätään (x,v) sivulle p johonkin paikkaan j. Muutoin operaatio perutaan suorittamalla käänteisoperaatio D 1 [x,v] loogisesti: kuljetaan hakupolku puun juuresta x:n peittävälle lehtisivulle p ja lisätään (x,v) sinne. 90
15 Aktiivisten transaktioiden taulu Transaktionhallinnan ja elvytyksen tarpeisiin pidetään kirjaa transaktioista, jotka parhaillaan ovat aktiivisina. Kustakin aktiivisesta transaktiosta T säilytetään aktiivisten transaktioiden taulussa (activetransaction table) eli lyhyesti transaktiotaulussa (transaction table) seuraavia tietoja: (1) T :n tunniste. (2) T :n tila (state), so. forward-rolling (etenevä) tai backwardrolling (peruuntuva). (3) T :n tuottaman viimeisimmän vielä peruuttamatonta etenemisvaiheen operaatiota esittävän lokikirjauksen järjestysnumero Undo- Next-LSN. Käytännössä myös (4) T :n viimeisimmän lokikirjauksen järjestysnumero Prev-LSN (ei tarvita kurssilla esittävissä algoritmeissa). Transaktiotaulu perustetaan ja alustetaan tyhjäksi järjestelmää käynnistettäessä. 91
16 Kun järjestelmään tulee suoritettavaksi uusi transaktio, sille määrätään tunniste, T, kirjataan lokiin aloituskirjaus T,B ja viedään transaktiotauluun tietue (T, forward-rolling, Undo-Next-LSN = n), missä n on T :n aloituskirjauksen LSN. Kun transaktio sitoutuu tai päättää peruutuksensa, sen tiedot poistetaan transaktiotaulusta. Transaktiotaulu toteutetaan tehokkaana keskusmuistitietorakenteena (hajautus transaktion tunnisteella). 92
17 Transaktioiden peruutuksen ja häiriöistä elvytyksen tarpeisiin olisi transaktiotauluun tarpeen tallentaa tieto ainoastaan niistä aktiivisista transaktioista, jotka ovat suorittaneet vähintään yhden päivitysoperaation. Transaktioiden samanaikaisuuden hallintaa varten on transaktioilla tarpeen olla tunniste siinä vaiheessa, kun transaktio varaa ensimmäisen lukkonsa (joko lukua tai päivitystä varten). Kun sovellusohjelmointikielessä ei ole erityistä transaktionaloituslausetta (begin transaction), tehdäänkin transaktion aloituskirjaus vasta sitten, kun transaktio on suorittamassa ensimmäistä tietokantaoperaatiotaan (lukua tai päivitystä). 93
18 Avainvälimallin operaatioiden lokikirjaukset Fysiologisessa lokikäytännössä kirjattavat operaatiokohtaiset lokitietueet ovat avainvälimallimme tapauksessa seuraavat (n on lokikirjauksen saama LSN): (1) Transaktion T aloitusoperaatio B kirjataan n: T,B. (2) Transaktion T sitoutuminen tai peruutuksen päättyminen C kirjataan n: T,C. (3) Transaktion T keskeytyminen A kirjataan n: T,A. Transaktion T etenemisoperaation (I tai D) lokikirjaus sisältää operaation nimen ja argumentit sekä T :n Undo-Next-LSN-arvon n. (4) Transaktion T sivulle p tietuepaikkaan i toteutettu etenemisoperaatio I[x,v] kirjataan n: T,I, p,i,x,v,n. (5) Transaktion T sivulle p tietuepaikkaan i toteutettu etenemisoperaatio D[x,v] kirjataan n: T,D, p,i,x,v,n. 94
19 (6) Transaktion T peruutuspisteen asetus S[P] kirjataan n: T,S[P],n, missä n on T :n edellisen lokikirjauksen LSN. (7) Transaktion T osittaisperuutuksen aloitus A[P] kirjataan n: T,A[P]. (8) Transaktion T osittaisperuutuksen päättäminen C[P] kirjataan n: T,C[P]. Etenemisoperaatioiden lokikirjaukset 4 ja 5 ovat toisto- ja peruutuskelpoisia kirjauksia (redo-undo log record); niiden avulla operaatio voidaan sekä toistaa (fyysisesti) että perua (fyysisesti, tai jos se ei ole mahdollista, niin loogisesti). 95
20 Peruuntuvan transaktion peruutusvaiheessa tai etenevän transaktion osittaisperuutuksessa suoritetun käänteisoperaation lokikirjaus sisältää operaation nimen ja argumentit (tarvittavin osin) sekä T :n Undo-Next- LSN-arvon, so. T :n seuraavaksi peruutettavan operaation lokikirjauksen LSN:n n. (9) Transaktion T sivulle p tietuepaikkaan i toteutettu käänteisoperaatio I 1 [x,v] kirjataan n: T,I 1, p,i,n, kun T :n vastaavan etenemisoperaation I[x, v] lokikirjaus on T,I, p,i,x,v,n. Huomaa, ettei monikon lisäyksen peruutuksen eli monikon poiston toistoa varten ole tarpeen kirjata itse monikkoa. 96
21 (10) Transaktion T sivulle p tietuepaikkaan i toteutettu käänteisoperaatio D 1 [x,v] kirjataan n: T,D 1, p,i,x,v,n, kun T :n vastaavan etenemisoperaation D[x, v] lokikirjaus on T,D, p,i,x,v,n. Käänteisoperaatioiden lokikirjaukset ovat ainoastaan toistokelpoisia kirjauksia (redo-only log record); niiden avulla lokikirjauksen ilmaisema käänteisoperaatio voidaan toistaa (fyysisesti), mutta käänteisoperaatioita ei koskaan peruta. Käytetään myös nimitystä korvaava lokikirjaus (compensation log record, CLR). 97
22 Esim. sitoutunut transaktio T 1 : BR[x,u]R[y,v]D[z,w]I[z,w ]C tuottaa lokikirjaukset n 1 : T 1,B. n 2 : T 1,D, p,i,z,w,n 1. n 3 : T 1,I, p,i,z,w,n 2. n 4 : T 1,C. Tässä monikko (z, w) on poistettu sivulta p tietuepaikasta i ja monikko (z,w ) lisätty sivulle p paikkaan i. Lokijärjestysnumerot n 1,n 2,n 3,n 4 muodostavat nousevan jonon. Kun suorituksessa on muita samanaikaisia transaktioita, kirjautuu näiden tuottamia lokikirjauksia T 1 :n lokikirjausten väliin. 98
23 Peruuntunut transaktio T 2 : BR[x,u]R[y,v]D[z,w]I[z,w ]AI 1 [z,w ]D 1 [z,w]c tuottaa lokikirjaukset n 1 : T 2,B. n 2 : T 2,D, p 1,i 1,z,w,n 1. n 3 : T 2,I, p 2,i 2,z,w,n 2. n 4 : T 2,A. n 5 : T 2,I 1, p 3,i 3,n 2. n 6 : T 2,D 1, p 4,i 4,z,w,n 1. n 7 : T 2,C. Monikon (z,w ) lisäys sivulle p 2 paikkaan i 2 on peruttu poistamalla monikko sen nykyisestä sijaintipaikasta sivulta p 3 paikasta i 3. Monikon (z,w) poisto sivulta p 1 paikasta i 1 on peruttu lisäämällä monikko (z,w) sivulle p 4 paikkaan i 4. 99
24 Edellä olemme olettaneet, että looginen tietokantamme koostuu yhdestä ainoasta relaatiosta. Mikäli looginen tietokanta koostuu useammasta relaatiosta, on asianomaisen relaation tunniste r sijoitettava lokikirjaukseen: Etenemisoperaatioiden kirjaukset: (4) T,I, p,i,r(x,v),n. (5) T,D, p,i,r(x,v),n. Käänteisoperaatioiden kirjaukset: (9) T,I 1, p,i,n. (10) T,D 1, p,i,r(x,v),n. Kirjauksessa 10 on r tarpeellinen vain jos se kuuluu monikon sisäiseen esitykseen. Mikäli looginen tietokanta jakaantuu useampiin osatietokantoihin, joissa voi olla samannimisiä relaatioita, pitää lokikirjauksiin sijoittaa myös osatietokannan tunniste. 100
25 Rakennemuutosten lokikirjaukset Kuten edellä on jo todettu, fyysisen tietokannan rakennemuutos on oma atominen kokonaisuutensa, joka sitoutuu rakennemuutoksen aiheuttaneesta transaktiosta riippumattomasti. Jotta tietokannan levyversiosta puuttuvat rakennemuutokset olisi mahdollista toistaa häiriöstä elvyttäessä, on nekin kirjattava lokiin. Uuden sivun q varaus kasarakenteeseen voitaisiin kirjata lokiin esimerkiksi seuraavasti: n 1 : S,B. n 2 : S, allocate-page-for-heap, s, f, p,q. n 3 : S,C. Tässä S on järjestelmän generoima uusi transaktiotunniste. Kun rakennemuutos on kirjattu sitoutuneeksi, on se peruuttamaton, kuten mikä tahansa sitoutunut transaktio. 101
26 Tehokkuussyistä emme kuitenkaan vaadi rakennemuutoksilta aivan täyttä transaktion semantiikkaa. Transaktion täydellinen sitoutumiskäytäntö edellyttäisi lokin pakotusta levylle, mitä haluamme välttää. Kun rakennemuutoksen kaikki varsinaiset fyysisen tietokannan rakenteeseen vaikuttavat operaatiot voidaan kirjata yhteen lokitietueeseen, ei ole tarpeen tuottaa erityistä transaktiotunnistetta eikä myöskään kirjata erikseen rakennemuutoksen alkamista ja päättymistä. Rakennemuutoksesta, joka varaa uuden sivun kasarakenteeseen, kirjataan siis lokiin ainoastaan tietue allocate-page-for-heap, s, f, p,q. 102
27 Oletetaan, että transaktioiden T 1 = BI[x,v]AI 1 [x,v]c ja T 2 = BI[y,w]C operaatiot suoritetaan järjestyksessä B 1 I 1 [x,v]b 2 I 2 [y,w]c 2 A 1 I 1 1 [x,v]c 1 ja että operaatio I 1 [x,v] aiheuttaa uuden sivun varauksen. Lokiin kirjautuu: n 1 : T 1,B. n 2 : allocate-page-for-heap, s, f, p,q. n 3 : T 1,I,q,i,x,v,n 1. n 4 : T 2,B. n 5 : T 2,I,q, j,y,w,n 4. n 6 : T 2,C. n 7 : T 1,A. n 8 : T 1,I 1,q,i,n 1. n 9 : T 1,C. Kirjaus n 2 ei kuulu millekään transaktiolle. T 1 :n kirjauksen n 3 Undo- Next-LSN-arvo osoittaa n 2 :n yli T 1 :n edelliseen kirjaukseen n
28 Tietosivun päivittäminen Oletetaan, että lokikirjaus... viedään lokiin kutsulla log(n,... ). Kutsu kirjoitussalpaa lokitiedoston viimeisen sivun, määrää LSNn n, vie lokikirjauksen lokitiedoston viimeiselle sivulle, vapauttaa sivun salpauksen ja palauttaa n:n. Tarkastellaan seuraavassa lyhyesti transaktion T etenemisoperaatioiden I[x,v] ja D[x,v] toteutusta. Tarkastelun ulkopuolelle jätetään vielä transaktioiden samanaikaisuuden hallinta (lukitus). Operaation I[x, v] toteutuksessa paikannetaan ja kirjoitussalvataan ensin tietokantarakenteesta se tietosivu p, jolle monikko (x, v) kuuluu lisätä. Esim. harvan B-puun tapauksessa on paikannettava se lehtisivu p, joka peittää avaimen x. 104
29 Oletetaan vielä, että sivun p paikantaminen sisältää myös ne rakennemuutokset (sivujen halkaisut), jotka on tehtävä riittävän tilan järjestämiseksi lisättävälle monikolle. Kun transaktiota T tuottava palvelinprosessin säie on paikantanut, naulinnut ja kirjoitussalvannut tietosivun p, monikko (x,v) lisätään sivulle p seuraavalla kutsulla: Insert-into-page(T, p, x, v) { lisää (x,v) sivulle p vapaaseen tietuepaikkaan i; log(n, T,I, p,i,x,v,n ), missä n = Undo-Next-LSN(T ); Undo-Next-LSN(T ) := n; Page-LSN(p) := n; }. Kutsun päätteeksi sivun p salpaus ja naulinta vapautetaan: ul(p). 105
30 Operaation D[x, v] toteutuksessa paikannetaan ja kirjoitussalvataan ensin tietokantarakenteesta se tietosivu p, joka sisältää avaimella x varustetun monikon. Oletetaan vielä, että sivun p paikantaminen sisältää myös ne rakennemuutokset, jotka on tehtävä, jottei sivu p jäisi monikon (x, v) poiston takia liian vajaaksi. Kun transaktiota T tuottava palvelinprosessin säie on paikantanut, naulinnut ja kirjoitussalvannut tietosivun p, monikko (x, v) poistetaan sivulta p seuraavalla kutsulla: Delete-from-page(T, p, x) { olkoon (x,v) sivun p tietuepaikassa i; poista (x,v) sivun p tietuepaikasta i; log(n, T,D, p,i,x,v,n ), missä n = Undo-Next-LSN(T ); Undo-Next-LSN(T ) := n; Page-LSN(p) := n; }. Kutsun päätteeksi sivun p salpaus ja naulinta vapautetaan: ul(p). 106
31 WAL-käytäntö Lokia säilytetään vakaassa muistissa (stable storage), so. mahdollisimman varmassa pysyvässä muistissa. Käytännössä vakaata muistia joudutaan approksimoimaan eri levyasemille sijoitetuilla kahdennetuilla levytiedostoilla. Lokikirjauksia pakataan puskurisivuille, joita tarvittaessa viedään levylle. Jotta loki osoittaisi mahdollisimman tarkasti transaktioiden ja tietokannan tilan, tulisi lokitiedoston sivu periaatteessa viedä puskurista levylle heti, kun siihen on lisätty uusi lokikirjaus. Tämä aiheuttaisi levyhaun jokaista päivitystä kohti, mikä on hyvin tehotonta. Todellisuudessa loki pakotetaan levylle vasta, kun transaktio sitoutuu tai päättää peruutuksensa tai kun puskurointikäytäntö sitä vaatii. Transaktion sitoutumiskäytäntöön (commit protocol), so. operaation C suoritukseen, sisältyy lokin vienti levylle (force-log-at-commit). 107
32 Aina kun transaktio päivittää (I, D, I 1 tai D 1 ) puskurissa olevaa tietokantasivua p, leimataan tästä päivityksestä tuotetun lokikirjauksen LSN sivun p otsikkotietueen Page-LSN-kenttään. Samoin leimataan rakennemuutoksen lokikirjauksen LSN kaikkien niiden sivujen Page-LSN-kenttään, joiden sisältöä rakennemuutos muuttaa. Esim. lokikirjauksen n 2 : allocate-page-for-heap, s, f, p,q LSN n 2 leimataan sivujen s, f, p ja q Page-LSN-kenttään. Kun sivu p on tarkoitus viedä puskurista levylle, on lokin hallitsimen ensin vietävä levylle kaikki lokitietueet, joiden LSN on p:n Page- LSN:ää pienempi tai yhtäsuuri. Tätä käytäntöä kutsutaan nimellä WAL-käytäntö (write-ahead logging protocol). 108
33 Häiriötilanteessa keskusmuistin sisältö katoaa, jolloin siis menetetään päivitettyjen tietokantasivujen puskuriversiot samoin kuin lokipuskurissa vielä olevat, levylle viemättömät lokikirjaukset. WAL-käytäntöä noudatettaessa levylle kertyy lokikirjauksia aina vähintään yhtä pitkälle kuin tietokantasivujen levyversioihin vastaavia päivityksiä. Häiriöstä elvyttäessä on lokin perusteella siis mahdollista toistaa ne päivitykset, jotka eivät olleet ehtineet levylle asti, ja peruuttaa levylle ehtineet aktiivisten transaktioiden päivitykset. Aktiiviseksi katsotaan transaktio, jolle ei löydy lokista C-tietuetta. 109
34 Puskurinhallintakäytännöt Palvelimen puskurinhallitsimen (buffer manager) tehtävänä on palvella tietokantaa käsittelevien prosessien naulinta- ja salpauspyyntöjä (rl, wl, ul) sekä yleisesti huolehtia siitä, että tietokantasivut ovat mahdollisimman hyvin saatavilla. Puskurissa on kerrallaan tilaa vain pienelle määrälle tietokantasivuja; puskurin kokoa voidaan varioida, mutta se on harvoin muutamaa tuhatta sivua suurempi. Sivujen naulinta puskuriin sekä lokitietueiden kirjoitussäännöt rajoittavat puskurinhallitsimen vapautta poistaa sivuja puskurista puskuritilan loputtua. 110
35 Sivua, joka on parhaillaan naulittuna jollekin prosessille tai säikeelle, ei puskurinhallitsimen ole lupa poistaa puskurista. WAL-käytännön mukaisesti päivitetyn tietokantasivun saa viedä puskurista levylle vasta, kun sivun päivitysten lokikirjaukset on viety levylle. Transaktion sitoutumiskäytäntö (samoin kuin peruutuksen päättämiskäytäntö) taas sisältää lokin pakotuksen levylle. Näiden lisäksi järjestelmä ei yleensä aseta puskurinhallinnalle muita rajoituksia. Joissakin järjestelmissä puskurinhallitsin saattaa soveltaa rajoitetumpaa käytäntöä. 111
36 Loogisen tietokannan tietoalkio (monikko tai relaatio) on likainen (dirty), jos sitä viimeksi päivittänyt transaktio on vielä aktiivinen, ja puhdas (clean), jos sitä viimeksi päivittänyt transaktio on sitoutunut tai peruuntunut. Päivitetty tietokantasivu on likainen, jos se sisältää likaisia tietoalkioita, ja puhdas muutoin. Puskurista levylle vietävää naulitsematonta sivua valitessaan puskurinhallitsin voi tehdä eron likaisten ja puhtaiden sivujen välillä tai sitten jättää sivun päivitystilan huomiotta. Jälkimmäisessä tapauksessa puskurinhallitsin soveltaa varastakäytäntöä (steal policy): sivu on lupa varastaa puskurista ja viedä levylle, vaikka sivun monikoita päivittäneistä transaktioista jotkin ovat vielä aktiivisia. 112
37 Toinen vaihtoehto on älä varasta -käytäntö (no-steal policy), jonka mukaan kaikki likaiset sivut pidetään puskurissa siihen asti, kun sivuja päivittäneet transaktiot ovat kaikki sitoutuneet tai peruuntuneet. Älä varasta -käytännöllä saavutetaan etua eräiden sellaisten elvytyskäytäntöjen yhteydessä, joissa häiriön vuoksi keskeytyneiden transaktioiden päivityksiä ei toisteta (vaan ne unohdetaan ). Tällä kurssilla esitettävän ARIES-elvytysalgoritmin tapauksessa älä varasta -käytännöstä ei sitä vastoin ole mitään etua (vaan pelkästään haittaa). Älä varasta -käytäntöä sovellettaessa puskurialtaan täytyy sitä paitsi olla niin iso, että sinne mahtuvat kaikkien aktiivisten transaktioiden päivittämät sivut samalla kertaa. Jo tästä syystä useimmissa järjestelmissä sovelletaankin varastakäytäntöä. 113
38 Entä milloin sitoutuvan transaktion päivittämät sivut pitäisi kirjoittaa levylle? On kaksi eri käytäntöä: Pakota-käytäntö (force policy). Transaktion pyytäessä sitoutumista tai päästyä peruutusvaiheensa loppuun (operaatio commit tai rollbackcompleted) puskurinhallitsin paikantaa kaikki transaktion päivittämät sivut, joita ei vielä ole viety levylle, ja vie ne levylle (WAL-käytäntöä noudattaen). Vasta tämän jälkeen transaktio sitoutuu tai päättää peruutuksensa, ts. transaktion päättyminen kirjataan lokiin ja loki pakotetaan levylle. Älä pakota -käytäntö (no-force policy). Sekä likaiset että puhtaat tietokantasivut saavat olla puskurissa niin kauan kuin sivujen viemää puskuritilaa ei tarvita muuhun käyttöön. 114
39 Pakota-käytäntö nopeuttaa häiriöstä elvytyksen toistovaihetta. Pakota-käytäntö hidastaa kuitenkin transaktion sitoutumista: päivitetyt sivut viedään levylle osana transaktion sitoutumiskäytäntöä. Vielä merkittävämpi haitta on, että sivu, jota useat transaktiot päivittävät peräjälkeen, tulee tarpeettomasti kirjoitetuksi levylle erikseen kunkin transaktion sitoutumisen yhteydessä. Älä pakota -käytännössä tällainen usein käytetty sivu ( hotspot - sivu) varmaankin pysyisi puskurissa transaktioiden välillä eikä sitä tarvitsisi kirjoittaa levylle kertaakaan. Useimmissa järjestelmissä sovelletaan älä pakota -käytäntöä. Tällä kurssilla esitettävissä menetelmissä oletetaan aina sovellettavan varasta ja älä pakota -käytäntöjä ( steal-and-no-force ), so. mahdollisimman vapaata puskurointikäytäntöä. 115
40 Levyhakujen vähentäminen Puskurinhallitsimen tulisi osaltaan yrittää minimoida tarvittavien levyhakujen määrää. Puskurin täyttyessä puskurista poistettava sivu tulisi valita järkevästi. Näennäismuistin (virtuaalimuistin) hallinnassa sovelletaan yleensä ns. LRU (least recently used) -strategiaa: kun kaikki kehykset ovat varattuja, viedään levylle se sivu, joka on pisimpään ollut käyttämättä (so. viittaamatta). LRU on riittävä strategia näennäismuistin hallintaan: kaikenlaisten ohjelmien käyttäytymistä on vaikea ennustaa. Tietokantasivujen hallintaan strategiaa voidaan parantaa. Tietokannan hallintajärjestelmä pystyy usein kyselyn muodosta ennustamaan, mitä sivuja tullaan tarvitsemaan kyselyn toteuttamisessa. Käyttöjärjestelmä sitä vastoin joutuu nojautumaan menneisyyteen tulevaisuuden ennustamisessa, kun taas tkhj:llä voi olla tietoa ainakin lähitulevaisuudesta. 116
41 Relaatioiden r(ab) ja s(bc) luonnollisen liitoksen r s laskenta, kun liitosattribuutti B ei ole kummankaan relaation avain, relaatiot ovat eri tiedostoissa ja hakemistoja ei ole (lukitusoperaatiot puuttuvat algoritmista): for (jokainen r:n sivu p) { rl(p); for (jokainen s:n sivu q) { rl(q); for (jokainen p:n r-monikko t ja jokainen q:n s-monikko u) if (t(b) = u(b)) tulosta liitosmonikko tu; ul(q) }; ul(p) }. 117
42 Kun r:n sivu p on käsitelty, sitä ei enää tarvita uudelleen. Sopiva puskurointistrategia r:n sivuille on: poista heti puskurista (toss immediate). Jokaista r:n sivua p kohti täytyy käsitellä kaikki s:n sivut q. Kun q on käsitelty, sitä tarvitaan uudelleen vasta kun kaikki muut s:n sivut on käsitelty. Sopiva puskurointistrategia s:n sivuille on MRU (most recently used), siis LRU-strategian vastakohta. Käsittelyvuorossa oleva r:n sivu naulitaan s:n käsittelyn ajaksi, minkä jälkeen siitä tehdään MRU-sivu. Siis MRU on optimaalinen strategia sekä r:n että s:n sivuille. 118
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ätiedotTietokantarakenteet 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ätiedotElvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1
Elvytys R & G Chapter 18 16.02.06 Tietokannan hallinta, kevät 2006, J. Li 1 Motivaatio Atomisuus: Transaktiot voivat päättyä peruutukseen ( Rollback ). Pysyvyys: Entä jos TKHJ kaatuu? (Syyt?) Halutut ominaisuudet
LisätiedotSivupalvelin- 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ätiedotTietokantarakenteet 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ätiedotTransaktiopalvelimen 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ätiedotTietokantarakenteet 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ätiedotR 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ätiedotLisätään avainarvo 6, joka mahtuu lehtitasolle:
Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Tietokannan hallinta, kurssikoe 11.6.2004, J. Lindström Ratkaisuehdotuksia 1. Hakemistorakenteet, 15p. Tutkitaan tyhjää B+-puuta, jossa jokaiselle hakemistosivulle
LisätiedotLooginen 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ätiedotLisä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ätiedotHAAGA-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ätiedotHELIA 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ätiedotT-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ätiedotSeminaari: 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ätiedotHelsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta. 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
Lisätiedot[c] What is the difference between a modified page and a dirty page? Mitä eroa on päivitetyllä sivulla ja likaisella sivulla?
CS-E4230 Transaction Management in DB Early Spring 2017 Tutorial No 2 (1/5) [0] [a] Why is it a good idea to keep the DB log on a separate disk? Miksi on hyvä pitää tietokannan loki omalla levyllään? [b]writing
LisätiedotJokaisella 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ätiedotTransaktioiden samanaikaisuuden hallinta
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
Lisätiedotoheishakemistoja 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ätiedotHajautettujen 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ätiedotMuita 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ätiedotHelsingin 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ätiedotD 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ätiedotD 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ätiedotD B. 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
Lisätiedot5. 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ätiedotTiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1
Tiedostorakenteet R&G Chapter 9 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Tiedostorakenteet Tiedostojen tehokkuutta yhtä kyselyä kohti arvioidaan usein tarvittavien levyhakujen määrällä. kuten levykäsittelyn
Lisätiedotjotakin 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ätiedotTietokanta (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ätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
LisätiedotAlgoritmit 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ätiedotTietokannan 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ätiedotAlgoritmit 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ätiedotLevymuisti. 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ätiedotAlgoritmit 2. Luento 5 Ti Timo Männikkö
Algoritmit 2 Luento 5 Ti 26.3.2019 Timo Männikkö Luento 5 Puurakenteet B-puu B-puun korkeus B-puun operaatiot B-puun muunnelmia Algoritmit 2 Kevät 2019 Luento 5 Ti 26.3.2019 2/34 B-puu B-puut ovat tasapainoisia
LisätiedotHELIA 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ätiedotHakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1
Hakemistorakenteet R & G Chapter 10 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hakemistotyypeistä Hakemistomerkintä sisältää hakemistoavaimen (indexing key) muodostusperustan määrittelemänä tietueesta
LisätiedotTiedon 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ätiedotTKHJ: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ätiedotHakemistotyypeistä. 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ätiedotD 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ätiedotAlgoritmit 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ätiedotTransaktioiden eristyvyys
Transaktioiden eristyvyys H. Berenson, P. Bernstein, J. Gray, J. Melton, E. O Neil & P. O Neil: A critique of ANSI SQL isolation levels. Proc. of the 1995 ACM SIG- MOD Internat. Conf. on Management of
Lisätiedot3. Tietokannan hakemistorakenteet
3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden
Lisätiedot3. Tietokannan hakemistorakenteet
3. Tietokannan hakemistorakenteet Tiedoston tietueiden haku voi perustua johonkin monesta saantipolusta (access path): - perustiedoston tiedostorakenne - hakemistot, joita voidaan tehdä käsittelytarpeiden
Lisätiedot58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)
58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen) 1. Avaimet 1, 2, 3 ja 4 mahtuvat samaan lehtisolmuun. Tässä tapauksessa puussa on vain yksi solmu, joka on samaan aikaan juurisolmu
LisätiedotAVL-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ätiedotAlgoritmit 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ätiedotAlgoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018
LisätiedotLuento 2: Tiedostot ja tiedon varastointi
HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...
LisätiedotTietohakemisto 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ätiedotTehtä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ätiedotAlgoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017
LisätiedotIIO30220 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ätiedotKäsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.
Tietokannan hallinta 35 3. Tietokannan 3.3 Dynaamiset Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa. Ajan mittaan epätasapainoa:
LisätiedotHELIA 1 (15) Outi Virkki Tiedonhallinta
HELIA 1 (15) Luento Suorituskyvyn optimointi... 2 Tiedonhallintajärjestelmän rakenne... 3 Suunnittele... 4 SQL-komentojen viritys... 5 Tekninen ympäristö... 6 Fyysisen tason ratkaisut... 7 Indeksit...
LisätiedotAlgoritmit 2. Luento 4 To Timo Männikkö
Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4
LisätiedotSamanaikaisuuden 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ätiedotInsert 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ätiedotB-puu. 3.3 Dynaamiset hakemistorakenteet
Tietokannan hallinta 2 3. Tietokannan hakemistorakenteet 3.3 Dynaamiset hakemistorakenteet Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.
LisätiedotAlgoritmit 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ätiedotYksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen
Yksitasoiset talletusrakenteet Yksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen järjestämätön peräkkäisrakenne (kasa, heap) järjestetty peräkkäisrakenne (sequential file) hajautusrakenne
LisätiedotHelsingin yliopisto/tktl Tietokannan hallinta kevät Harri Laine 1 D B. Yksitasoiset talletusrakenteet
Yksitasoiset talletusrakenteet Yksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen järjestämätön peräkkäisrakenne (kasa, heap) järjestetty peräkkäisrakenne (sequential file) hajautusrakenne
LisätiedotAlgoritmit 2. Luento 4 Ke Timo Männikkö
Algoritmit 2 Luento 4 Ke 22.3.2017 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2017 Luento 4
LisätiedotTietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
LisätiedotD B. Levytiedostojen käsittely. Levytiedostojen 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ätiedotTietokannan 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ätiedotHelsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Tiedostorakenteet.
Tiedostorakenteet Tiedostorakenne määrittelee miten tietueet tallennetaan tiedostoon miten tietoja haetaan Tiedostorakenne on yksitasoinen (flat), jos se muodostuu pelkästään datatietueista. Tiedostorakenne
LisätiedotHelsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.
Tieto - data Digitaalisesti tallennettua informaatiota jostakin kohteesta Vapaamuotoinen tieto (unformatted) Esim. teksti, puhe, kuvat, Sisältö jäsentämätöntä Koneellinen käsittely vaikeaa paitsi kokonaisuutena
LisätiedotAlgoritmit 2. Luento 10 To Timo Männikkö
Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To
LisätiedotHelsingin yliopisto /TKTL Tietokannan hallinta Harri Laine 1 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ätiedotAlgoritmit 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ätiedotCS-A1150 Tietokannat CS-A1150 Tietokannat / 43
CS-A1150 Tietokannat 15.4.2019 CS-A1150 Tietokannat 15.4.2019 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä tarkoitetaan hakemistolla ja mitä hyötyä hakemistosta on. Tiedät, miten voidaan
LisätiedotD 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ätiedotD 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)
LisätiedotTiedonhallintajärjestelmän rakenne ja Suorituskyky
HELIA TIKO-05 1 (20) Tiedonhallintajärjestelmän rakenne ja Suorituskyky Tiedonhallintajärjestelmän rakenne... 2 SQL-käsittelijä... 3 Parsinta (Parser)... 3 Optimointi (Optimizer)... 3 Tilan käsittelijä...
LisätiedotTietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen
Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen
Lisätiedot811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu
832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
LisätiedotHajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1
Hajautusrakenteet R&G Chapter 11 16.02.06 Tietokannan hallinta, kevät 2006, Jan 1 Hajautukseen perustuvat tiedostorakenteet Hajautukseen perustuvissa tiedostorakenteissa on tavoitteena yksittäisen tietueen
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
LisätiedotHajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet
Hajautusrakenteet R&G Chapter Hajautukseen perustuvissa tiedostorakenteissa on tavoitteena yksittäisen tietueen nopea haku. Tähän pyritään siten, että tietueen sijoituspaikan eli solun (cell, bucket) osoite
LisätiedotTIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences
TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun
LisätiedotHELIA 1 (21) Outi Virkki Tietokantasuunnittelu
HELIA 1 (21) Luento 3.1 Suorituskyvyn optimointi... 2 Suunnittele... 3 Tiedonhallintajärjestelmän rakenne... 4 SQL-käsittelijä... 5 Parsinta... 5 Optimointi... 5 Tilan käsittelijä... 5 Puskurin käsittelijä
LisätiedotMS-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ätiedotFyysinen suunnittelu
Informaatioteknologian instituutti IIO30100 Tietokantojen suunnittelu Fyysinen suunnittelu kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) luvusta 9 Jouni
LisätiedotTietokannan 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ätiedotAlgoritmit 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ätiedotFYYSINEN SUUNNITTELU
IIO30120 DATABASE DESIGN / TIETOKANTOJEN SUUNNITTELU JA IIO30220 DATABASE MANAGEMENT / TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI,
Lisätiedot2. Tietokannan tallennusrakenteet
2. Tietokannan tallennusrakenteet - tallennusrakenne = säilytysrakenne 2.1 Levymuisti ja sen käyttö 2.2 Puskurointi 2.3 Tietokannan tiedostorakenne 2.4 Järjestämätön peräkkäistiedosto (kasa) 2.5 Järjestetty
LisätiedotCSE-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ätiedotD B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa
Poistot Alkuperäisen B+ -puun idean mukaisesti tasapainotusta tehdään myös poistossa 50 Jos datasivun täyttösuhde laskee alle puoleen ja sivun ja sen velisivun (sibling, saman isäsivun alla oleva vierussivu)
Lisätiedotverkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari
Tehtävä 9 : 1 Merkitään kirjaimella G tehtäväpaperin kuvan vasemmanpuoleista verkkoa sekä kirjaimella H tehtäväpaperin kuvan oikeanpuoleista verkkoa. Kuvan perusteella voidaan havaita, että verkko G on
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
LisätiedotFYYSINEN SUUNNITTELU
IIO30100 TIETOKANTOJEN SUUNNITTELU JA IIO30200 TIETOKANNAN HALLINTA FYYSINEN SUUNNITTELU KIRJAN HOVI, HUOTARI, LAHDENMÄKI: TIETOKANTOJEN SUUNNITTELU & INDEKSOINTI, DOCENDO (2003, 2005), LUKU 9 JOUNI HUOTARI,
LisätiedotTKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)
TKT0001 Tietorakenteet ja algoritmit Erilliskoe 5.1.01, malliratkaisut (Jyrki Kivinen) 1. [1 pistettä] (a) Esitä algoritmi, joka poistaa kahteen suuntaan linkitetystä järjestämättömästä tunnussolmullisesta
Lisätiedot2. Tietokannan tallennusrakenteet
Tietokannan hallinta 1 2. Tietokannan tallennusrakenteet 2. Tietokannan tallennusrakenteet 2.1 Levymuisti ja sen käyttö Muistilaitteiden hierarkia: ainakin keskusmuisti levymuisti (+ muita tukimuisteja,
LisätiedotAlgoritmit 2. Luento 9 Ti Timo Männikkö
Algoritmit 2 Luento 9 Ti 17.4.2018 Timo Männikkö Luento 9 Merkkitiedon tiivistäminen Huffmanin koodi LZW-menetelmä Taulukointi Editointietäisyys Algoritmit 2 Kevät 2018 Luento 9 Ti 17.4.2018 2/29 Merkkitiedon
Lisätiedot