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