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

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

D B. Tiedostojen käsittely

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

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

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Luento 2: Tiedostot ja tiedon varastointi

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

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

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

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

Helsingin yliopisto/tktl Tietokannan hallinta kevät Harri Laine 1 D B. Yksitasoiset talletusrakenteet

Yksitasoisia talletusrakenteita käytetään lähinnä datatietueiden talletukseen

D B. Tietokannan hallinta kertaus

2. Tietokannan tallennusrakenteet

D B. Harvat hakemistot. Harvat hakemistot

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Tiedostorakenteet.

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

B-puu. 3.3 Dynaamiset hakemistorakenteet

Käsitellyt hakemistot (hajautus, ISAM): hakemisto-osa on staattinen eli ei muutu muuten kuin uudelleenorganisoinnissa.

2. Tietokannan tallennusrakenteet

Hajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet

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

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Helsingin yliopisto /TKTL Tietokannan hallinta Harri Laine 1 D B. Harvat hakemistot. Harvat hakemistot

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

Tietorakenteet, laskuharjoitus 7, ratkaisuja

D B. Harvat hakemistot

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Luento 9 Järjestelmän ulkoinen muisti

Tietokanta (database)

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tietokantaoperaatioiden toteutuksesta 3. Harri Laine 1

Algoritmit 1. Luento 5 Ti Timo Männikkö

Luento 9 Järjestelmän ulkoinen muisti

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

Luento 9 Järjestelmän ulkoinen muisti

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

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky

Tietokantojen suunnittelu, relaatiokantojen perusteita

HELIA 1 (17) Outi Virkki Tiedonhallinta

D B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa

Ohjelmoinnin perusteet Y Python

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

Tieto ohjelmassa ja tietokoneella

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 3 Ti Timo Männikkö

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Lokin ylläpito ja puskurinhallinta

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Puuhakemistoista flash-levyllä

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

T Transaktionhallinta tietokantajärjestelmissä

HELIA 1 (11) Outi Virkki Tiedonhallinta

Taulukot. Jukka Harju, Jukka Juslin

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Luento 9 Järjestelmän ulkoinen muisti

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

B + -puut. Kerttu Pollari-Malmi

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 7 Ti Timo Männikkö

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Tietokantakurssit / TKTL

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

u saantimenetelmät Kenttä (field) u bittien / tavujen muodostama looginen kokonaisuus u yksi arvo, jolla tyyppi ja pituus Tietue (record)

RJESTELMÄ Stallings, Luku KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Algoritmit 2. Luento 6 Ke Timo Männikkö

Tietokantarakenteet ja -algoritmit 3. harjoitus

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

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

Stallings, Luku

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

Sisältö. 22. Taulukot. Yleistä. Yleistä

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Ohjelmoinnin perusteet Y Python

Sivupalvelin- ja yhteislevyjärjestelmät

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Esimerkkejä vaativuusluokista

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

Transkriptio:

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 kuin satunnaisen sivun Nauha: Sivuja käsiteltävä peräkkäishaulla Halvempia kuin levyt, käytetään varakopiointiin Tiedostojen organisointi: Menetelmä tiedostojen tietueiden tallentamiseen massamuistiin. Tietuetunnus (rid) on riittävä tietueen fyysiseen osoittamiseen Hakemisto on tietorakenne, jonka avulla voidaan etsiä tietueiden tietuetunnuksia hakemiston hakuavaimessa annetuilla arvoilla. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 2

Vaihtoehtoisia talletusrakenteita Useita vaihtoehtoja: Kasa (satunnaisjärjestys): Sopii erityisesti kun haetaan kaikki tietueet tiedostosta. Järjestetty tiedosto: Paras vaihtoehto jos tietueet haetaan järjestyksessä tai vain tietyn välin tietueet haetaan. Hakemistot: tietueiden organisointiin puuhun tai hajautukseen liittyvä tietorakenne. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 3

Tietokantojen säilytys 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 edullisuus keskusmuistiin verrattuna, ja suuremmat tallennusvolyymit keskusmuistiakin mitataan nykyään jo gigatavuissa mutta tietokantoja jopa teratavuissa 16.02.06 Tietokannan hallinta, kevät 2006, Jan 4

Hakemistot Hakemisto tiedostoon nopeuttaa hakuja hakemiston hakuavainkenttiin. Mikä tahansa relaation kenttien osajoukko voi olla hakuavaimena relaatioon perustettavassa hakemistossa. Hakuavain ei ole sama kuin avain (minimaalinen joukko kenttiä relaation tietueen identifioimiseen). Hakemisto sisältää joukon tietoalkioita ja tarjoaa tehokkaan tavan hakea kaikki tietoalkiot k* annetulla avainarvolla k. Tietoalkon k* avulla voidaan löytää avaimen k tietoalkio korkeintaan yhdellä levyhaulla. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 5

Hakemiston yleinen malli Olkoon F tiedosto, jonka tietueet ovat sivuilla P1, P2,, Pn Indeksointikenttä (index field) eli hakemistoavain (indexing key) K on yhden tai useamman kentän yhdistelmä, jonka arvoihin hakemisto perustuu. Hakemisto muodostuu tietueista (v,p), missä v on indeksointikentän arvo ja p on osoitin tiedostoon F. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 6

B+ puu hakemistona Hakemistosivut Lehtisivut (avaimen mukaan järjestettynä) Lehtisivut sisältävät tietoalkioita ja ovat ketjutettu Hakemistosivut sisältävät hakemistoalkioita index entry P 0 K 1 P 1 K 2 P 2 K m P m 16.02.06 Tietokannan hallinta, kevät 2006, Jan 7

Esimerkki B+ puusta Juuri 17 Arvot <= 17 Arvot > 17 5 13 27 30 2* 3* 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* Hae 28*? 29*? Hae > 15* and < 30* Lisäys/poisto: Etsitään oikea sivulehtitasolta ja tehdään muutos siellä. Joskus muutos periytyy hakemistosivulle. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 8

Hajautukseen perustuvat hakemistot Sopivat yhtäsuuruusvertailuun Hakemisto on joukko soluja. Solu = pääsivu ja yksi tai useampia ylivuotosivuja. Solut sisältävät tietoalkioita. Hajautusfunktio h: h(r) = solu, mihin (tietoalkio) tietue r kuuluu. h tarkastelee hakukenttiä r:ssä. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 9

Tietoalkio Tietoalkioon k* voidaan tallettaa: Tietue ja avainarvo k, tai <k, tietueen rid, jonka avainarvo on k>, tai <k, joukko rid:tä, joiden avainarvo on k> 16.02.06 Tietokannan hallinta, kevät 2006, Jan 10

Hakemistomalleja 1/2 Päähakemisto tai toisiohakemisto: Jos hakuavain sisältää relaation pääavaimen, silloin kutsutaan päähakemistoksi. Yksikäsitteinen hakemisto: hakemisto sisältää avainehdokkaan Ryvästetty tai ryvästämätön: jos tietueiden järjestys sama tai lähes sama kuin tietoalkioiden, kutsutaan ryvästetyksi. Tiedosto voidaan ryvästää vain yhden avaimen perustella. Tietueen haun kustannus vaihtelee paljon riippuen onko tiedosto ryvästetty vai ryvästämätön. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 11

Ryvästetty/ ryvästämätön Ryvästetty Hakemistoalkiot Ryvästämätön Tietoalkiot (Hakemisto) (datatiedosto) Tietoalkiot Tietosivut Tietosivut 16.02.06 Tietokannan hallinta, kevät 2006, Jan 12

Hakemistomalleja 2/2 Tiheä (dense) hakemisto Jokaiselle tietueelle on oma hakemistotietue eli parissa (v,p) p on tietuosoite. Tietueosoite tid on muotoa (sivunumero, tietuenumero). Harva (non dense, sparse) hakemisto Hakemistotietue identifioi vain sivun eli p on sivunumero. Hakemistotietue yleensä perustietuetta lyhyempi. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 13

Harva / Tiheä hakemisto ssn nimi dno Tiheä hakemisto Harva hakemisto nimi sivu Aalto p1 Eerola p2 p1: p2: 5588 9595 7777 1122 3333 Aalto Aaltonen Eerola Frank Hakala 2 3 2 4 4 ssn 1111 1122 3333 4242 rid (p3,1) (p2,2) (p2,3) (p3,2) Ketola p3 p3: 1111 4242 Ketola Vainio 1 1 5588 7777 9595 (p1,1) (p2,1) (p1,2) 16.02.06 Tietokannan hallinta, kevät 2006, Jan 14

Fyysinen tietokanta Fyysinen tietokanta (physical database) on levymuistiin sijoitettu kokoelma sivuja, jotka sisältävät tietueita. Sivu (page) on vakiokokoinen alue, joka on sijoitettu levymuistin yhteen jaksoon. Tietue (record) jakaantuu yhteen tai useampaan kenttään (field), joka voi sisältää atomisen arvon tai osoittimen. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 15

Osoitteista Fyysisen tietokannan tietue osoitetaan parilla (p,i), missä p on tietueen sisältävän sivun tunniste ja i identifioi tietueen paikan sivun p sisällä. Fyysisen tietokannan operaatioihin kuuluu sivun tuonti keskusmuistiin ja sivun vienti keskusmuistista levyllä Sekä tuonti että vienti toteutetaan yhdellä levyoperaatiolla, joka koostuu hakuvarren asetuksesta ja levyjakson luvusta tai kirjoituksesta. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 16

Levyn rakenne 1/2 Hakuvarsi ura jakso sektori luku /kirjoituspää 16.02.06 Tietokannan hallinta, kevät 2006, Jan 17

Levyn rakenne 2/2 Levyjakso eli lohko (disk block) on yhdestä tai usemamasta peräkkäisestä sektorista koostuva levypinnan uralla. Esim: jos jakson koko on 8KB ja sektorin koko 512KB sisältää jakso 16 peräkkäistä sektoria. Levyllä yksittäinen sektori on pienin osoitettavissa oleva yksikkö. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 18

Levyltä haku Lohkon sisällön hakemiseksi Siirretään luku/kirjoituspäät halutulle sylinterille (kaikki siirtyvät yhdessä). Odotetaan, että haluttu lohko pyörähtää luku/kirjoituspään kohdalle (pyörimisnopeus luokkaa 100 kierrosta sekunnissa). Aktivoidaan halutulla pinnalla oleva luku/kirjoituspää lukemaan dataa yleensä vain yksi pää voi olla samanaikaisesti aktiivinen. I/O prosessori siirtää luetun datan hakupyynnön yhteydessä annettuun puskuriin. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 19

Levytiedostojen käsittely Levymuistin merkittävin huono puoli keskusmuistiin nähden on tiedon hidas saantiaika Keskusmuistissa saantiaika on kymmeniä nanosekunteja, luokkaa 10 50 ns Levymuistista saantiaika on luokkaa 5 10 millisekuntia (ms) eli 5,000,000 10,000,000 ns eli 100 000 1M hakua keskusmuistista yhtä levyhakua kohti 16.02.06 Tietokannan hallinta, kevät 2006, Jan 20

Levytiedostojen käsittely Apumuistiin tallennettuja tietoja ei siirretä suoraan apumuistista ohjelman työtilaan vaan siirto tapahtuu puskureiden (buffer) kautta. Kun ohjelma haluaa hakea tietyn tietueen on tietueen sisältävä sivu (page) haettava ensin johonkin puskuriin (buffer frame), jonka jälkeen tietue voidaan siirtää puskurista ohjelman työtilaan. Puskurien koon ja tiedoston sivukoon on vastattava toisiaan. Tiedoston käsittelyä varten on yleensä käytössä usean puskurin puskuriallas (buffer pool). 16.02.06 Tietokannan hallinta, kevät 2006, Jan 21

Puskurointi Fyysisen tietokannan ollessa avoinna siihen liittyy keskusmuistissa sijaitseva puskuri. Puskuri (buffer) eli puskuriallas (buffer pool) on sivun kokoisista puskurikehyksistä (buffer frame) koostuva taulukko B[1,2,,N]. Jotta tietokanna sivun p sisältöä voitaisiin lukea tai kirjoittaa on sivu tuotava levylta johonkin vapaaseen puskurikehykseen B[i]. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 22

Puskurin käsittely Sivun p käsittelyn ajaksi tietokantaa käsittelevä prosessi naulitsee (fix, pin) sivun puskuriin. Jos sivu p ei ole ennestään puskurissa, naulintakutsu fix(p) tuo p:n ensin levyltä puskuriin. Naulittua sivua puskurinhallitsijalla ei ole lupa poistaa puskurista eikä siirtää toiseen paikkaan. Sivun käsittelyn jälkeen prosessi vapauttaa naulinnan kutsumalla unfix(p) kutsulla. Sivu voidaan poistaa puskurista vasta, kun se ei ole enää naulittuna yhdellekkään prosessille. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 23

Levytiedostojen käsittely Tiedostorakennetason näkemys: osoitettavissa olevia tietueita 1 2 3 4 5 6 7 puskurinhallintatason näkemys: tietueet sijoitettu sivuille, sivuja käsitellään puskureiden kautta sivu 1 sivu 2 sivu 3 1 2 3 4 5 6 7 allas puskuri 1 puskuri 2 sivun 2 kopio puskurissa 2 4 5 6 16.02.06 Tietokannan hallinta, kevät 2006, Jan 24 tietueen 6 kopio työtilassa 6

Levytiedostojen käsittely tiedostorakenne.hae_tietue(6) { tiedostorakenne.päättele_sivu_tietueelle(6) > 2 puskurinhallinta.anna_sivu(2) { jos sivu 2 ei ole missään puskurissa puskurinhallinta.valitse_vapaa_puskuri > 2 puskurinhallinta.lataa_sivu(puskuriin 2 sivu 2) puskurinhallinta.naulitse_sivu_puskuriin puskurinhallinta.palauta_osoitin puskuriin 2 muuten puskurinhallinta.naulitse_sivu_puskuriin puskurinhallinta.palauta_osoitin_puskuriin } tiedostorakenne.päättele_tietueen_sijainti(6) tiedostorakenne.siirrä_tietue_ohjelmamuuttujaan } 16.02.06 Tietokannan hallinta, kevät 2006, Jan 25

Levytiedostojen käsittely Myös kirjoitukset levylle tapahtuvat puskureiden kautta. Uusi tai muuttunut tietue siirretään puskuriin. Puskuri merkitään muuttuneeksi. Kun muuttaja on vapauttanut puskurin, puskurienhallinta siirtää puskurisa olevan sivun aikanaan levylle. Muutos voi kasvattaa sivun sisältöä niin, ettei se enää mahdu puskuriin. Tällöin otetaan tyypillisesti käyttöön ylivuotosivu, joka linkitetään alkuperäiseen sivuun. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 26

Levytiedostojen käsittely Tietueen pituus kasvaa: sivu 1 sivu 2 sivu 3 1 2 3 4 5 6 7 puskuri 1 puskuri 2 allas 4 5 6 sivun 2 kopio puskurissa 2 korvaava: 6* 16.02.06 Tietokannan hallinta, kevät 2006, Jan 27

Levytiedostojen käsittely Levyn tilanne hetkellisesti erilainen kuin puskureiden sivu 4 sivu 1 sivu 2 sivu 3 1 2 3 4 5 6 7 puskuri 1 puskuri 2 linkki allas 6B sivun 4 kopio (2:n ylivuoto) puskurissa 1 4 5 6A sivun 2 kopio puskurissa 2 jaettu 16.02.06 Tietokannan hallinta, kevät 2006, Jan 28 6A 6B

Levytiedostojen käsittely Sivulla voi olla useita tietueita tai Tietue voi jakautua useille sivuille. Sivukoko on ohjelmallisesti määriteltävä suure, olisi luontevaa että se olisi levyjakson koon monikerta. Jos tietue jakautuu useille sivuille käytetään usein edellisen kuvan mallin mukaista ylivuotosivua Yleensä tietoa levy yksikön ja puskureiden välillä siirretään sivu kerrallaan yhteen puskuriin. Joissain järjestelmissä on mahdollista siirtää samassa operaatiossa useamman sivun ryväs (cluster) peräkkäisissä muistiosoitteissa oleviin puskureihin. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 29

Levytiedostojen käsittely hae tietue hae seuraava poista tietue tiedostorakennetaso hae sivu vie sivu puskurien hallinta 16.02.06 Tietokannan hallinta, kevät 2006, Jan 30

Levytiedostojen käsittely Tiedostorakennetason käsittelyssä haku operaation hakukriteerinä voi olla jonkin tietoalkion arvo. Puskuritason hakuoperaatiossa sivu haetaan sivuosoitteen perusteella. Puskureiden ja apumuistin väliseen tiedonsiirtoon käytetään erillistä I/Oprosessoria. Täten yhdessä puskurissa olevaa tietoa pystytään käsittelemään samanaikaisesti kun toiseen puskuriin kohdistuu tiedonsiirtoa. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 31

Salpauskäytäntö Fyysisen tietokannan eheyden säilyttämiseksi tietokantasivua käsittelevän prosessin on aina salvattava (latch) naulitsemansa sivu käsittelyn ajaksi. Lukusalpa (read latch) oikeuttaa lukemaan sivua ja estää samanaikaisesti päivittämästä sivua. Kirjoitussalpa (write latch) oikeuttaa kirjoittamaan sekä lukemaan sivua ja estää samanaikaisen lukemisen sekä kirjoittamisen. Salvan haltijan on vapautettava (unlatch) salpa sivun käytön jälkeen. Salpa toteutetaan puskuroituun sivuun liittyvän semaforin avulla. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 32

Hakuaika Levyltä hakemiseen kuluva aika muodostuu: hakuvarren siirtoajasta eli kohdistusajasta (seek time, st) (sylinterille siirtyminen). aika riippuu siitä millä sylinterillä päät ovat alunperin, lyhyt siirtymä vie vähemmän aikaa, 0 levykohtainen maksimi. Usein ilmoitetaan vain keskimääräinen kohdistusaika esim. 6 ms. pyörähdysviiveestä (rotational delay, rd). Jakson siirtoaika (block transfer time, btt). 16.02.06 Tietokannan hallinta, kevät 2006, Jan 33

Pyörähdysviive Jos levyn pyörimisnopeus on p kierrosta minuutissa (rpm), niin keskimääräinen pyörähdysviive on rd = (1/2)*(1/p) min = (60 * 1000)/(2*p) ms Pyörimisnopeudella p=3600 rpm on rd = 8,3 ms. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 34

Jakson siirtoaika 1/2 Aika, joka kuluu jaksoon kuuluvien sektoreiden kulkemiseen luku /kirjoituspään ohitse. Vaihtelee jakson koon, uran koon ja pyörimisnopeuden perusteella. = levyn täyden kierroksen pyörähdysaika kerrottuna jakson pituuden suhteella koko uran pituuteen. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 35

Jakson siirtoaika 2/2 Jos uran koko on 50 KB ja p on 3600 rpm, siirtonopeus (transfer rate, tr) on tr = (50 * 1000) / (60 * 1000/3600) = 3000 tavua/ms Jakson siirtonopeus on tällöin btt = B / tr ms ( B on jakson koko) Jakson saannin koko kustannus on siis hakuajan, pyörähdysviiveen ja siirtoajan summa st + rd + btt 16.02.06 Tietokannan hallinta, kevät 2006, Jan 36

k lohkon siirtoaika Haettaessa k lohkoa, lohkojen yhteenlaskettu saantiaika on enintään k*(st+rd+btt), jos lohkot sijaitsevat satunnaisesti levyllä st+k*(rd+btt), jos lohkot sijaitsevat satunnaisesti samalla sylinterillä ja minimissään st+ rd + k * btt, jos lohkot ovat peräkkäin samalla sylinterillä Kaavojen tekijöistä st ja rd ovat samaa millisekunneissa mitattavaa kokoluokkaa ja btt noin tuhannesosa niistä (mikrosekunteja) Jos st=5ms, rd=5ms ja btt=0.02 ms ja k=1000, niin kokonaissaantiajan vaihteluväli olisi 0.030s 10.02s 16.02.06 Tietokannan hallinta, kevät 2006, Jan 37

Massasiirtoaika Jos G on jaksoväli tavoissa, peräkkäisten jaksojen massasiirtonopeus (bulk transfer rate, btr) ilmaisee hyödyllisten tavujen siirtonopeuden. btr = (B / ( B + G)) * tr tavua/ms 16.02.06 Tietokannan hallinta, kevät 2006, Jan 38

Tiedostot Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista osista tietoja tietueiden rakenteesta muuta hallintatietoa 16.02.06 Tietokannan hallinta, kevät 2006, Jan 39

Sivun sisäinen rakenne Sivulla on ainakin: otsikkotietue sivun hallintaan tarvittavaa tietoa tietuealue itse tietueet ja vapaata tilaa tietuehakemisto tietueiden sijaintitiedot sivulla 16.02.06 Tietokannan hallinta, kevät 2006, Jan 40

Sivun sisältöä 1/2 Sivun alun otsikkotietue (header) sisältää vähintään seuraavat osiot: 1)Sivun tunniste 2)Sivun tyyppi (relaatiosivu, ryppään sivu, hakemistosivu, vapaata tilaa, tietohakemistosivu) 3)Relaation, hakemiston, tms. sisäinen tunniste. 4)Linkkejä muihin sivuihin (sivutunnisteita) 5)Sivun tietuehakemiston alkioiden lukumäärä 6)Sivun vapaan tilan hallintaan tarvittavaa tietoa 7)Sivun viimeisimmän päivityksen lokikirjauksen järjestysnumero (page log sequence number, Page LSN) 16.02.06 Tietokannan hallinta, kevät 2006, Jan 41

Sivun sisältöä 2/2 Sivun tietuealue sisältää sivun varsinaisen tiedon, tietosivun tapauksessa sivulle sijoitetut loogisen tietokannan monikot. Tietuealuetta täytetään otsikkotietueen jälkeen sivun alusta lukien. Sivun tietuehakemisto on sivun lopussa sijaitseva taulukko r, jonka alkio r[i] sisältää tietuealueen i:nnen tietueen tavusiirtymän tietueen alusta lukien. Tietuehakemistoalue täytetään sivun lopusta alkuun päin. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 42

Sivun rakenne Tietueen tunnisteen (record identifier, RID) muodostaa pari sivutunniste tietueen indeksi (tietuehakemistossa) Tuple identifier (TID) = record identifier 16.02.06 Tietokannan hallinta, kevät 2006, Jan 43

Tietueen rakenne Samassa tiedostossa olevat tietueet voivat olla keskenään saman pituisia, eli kiinteäpituisia (fixed length) vaihtuvapituisia (variable length) Erityyppisiä esim. kurssitietueita ja osallistujatietueita. Saman tyyppisiä, mutta tietokenttien pituus tai määrä vaihtelee. Tietueessa voi olla kiinteäpituisia tai vaihtuvapituisia kenttiä, yksikin vaihtuvapituinen kenttä tekee tietueesta vaihtuvapituisen. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 44

Tietueen rakenne Kiinteäpituinen kenttä on jokaisessa tietueessa saman pituinen smallint, integer, float, double, date ja timestamp tyyppiset arvot tallennetaan tyypillisesti (ei kuitenkaan välttämättä) kiinteäpituisiin kenttiin. SQL:n tietotyyppi char määrittelee kiinteänpituisen merkkijonon. Sillekin kiinteäpituinen kenttä soveltuisi 16.02.06 Tietokannan hallinta, kevät 2006, Jan 45

Tietueen rakenne Vaihtuvapituisia kenttiä käytetään tyypillisesti tilanteissa, joissa tietoalkioiden arvot vaihtelevat merkittävästi pituudeltaan Esimerkiksi vaihtuvapituiset merkkijonot Yleensä vaihtuvapituisilla kentillä pyritään säästämään tilaa, mutta tilansäästöä voidaan saada muutenkin esimerkiksi tiivistämällä tietueet 16.02.06 Tietokannan hallinta, kevät 2006, Jan 46

Kiinteämittaiset kentät F1 F2 F3 F4 L1 L2 L3 L4 Alkuosoite (B) Osoite = B+L1+L2 i:nen kentän etsiminen ei vaadi peräkkäishakua. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 47

Vaihtuvanmittaiset kentät Kaksi mahdollista toteutusta (# kenttä on vakiomittainen): 4 $ $ $ $ # kenttien lkm F1 F2 F3 F4 Kentät erotettu erikoismerkillä F1 F2 F3 F4 Siirtymätaulukko 16.02.06 Tietokannan hallinta, kevät 2006, Jan 48

Kiinteämittaiset kentät: sivun sisältö Paikka 1 Paikka 2 Paikka N Paikka 1 Paikka 2 Vapaata tilaa Paikka N...... Paikka M N 1... 0 1 1 M pakattu tietueden lkm M... 3 2 1 Pakkaamaton, bittikartta Paikkojen lkm rid= <sivuid, paikka #>. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 49

Vaihtuvanmittaiset kentät: sivun sisältö Rid = (i,n) Page i Rid = (i,2) Rid = (i,1) 20 16 24 N N... 2 1 # paikka Tietuehakemisto Osoite Vapaan Tilan alkuun 16.02.06 Tietokannan hallinta, kevät 2006, Jan 50

Oracle Oraclen tietuerakenteessa kaikki kentät ovat periaatteessa vaihtuvapituisia/valinnaisia Kentät esiintyvät tietueessa siinä järjestyksessä, missä ne on esitelty create table lauseessa (myöhemmät lisäykset tietueen loppuun). Kunkin kentän alussa on pituus 1 3 tavuna alle 250 pituiset yhdellä tavulla yli 250 kolmella tavulla, ensimmäisen pituustavun arvo 255 kertoo, että 2 seuraavaa sisältävät pituuden Jos kenttä on tyhjä (null), niin pituus on 0. 16.02.06 Tietokannan hallinta, kevät 2006, Jan 51