Tietokannan hallinta, syksy 2000, Harjoitus 5 (16.-19.10.)

Läsnäolo: 3 tehtävää

1. a) Esitä kaksi olennaisesti erilaista tapaa toteuttaa kysely
select * from employee where salary < 20000 or dno = 3;
(Mieti, millaisia hakemistoja voi käyttää.)

b) Luentojen sivulla 40 (luku 4) on esitetty sisäkyselyrakenteisen SQL-lauseen muunnos (Oraclessa) liitokseksi. Onko muunnos aina mahdollinen? Entä kyselyn suoritustehokkuus?

2. a) Millaisesta operaatiosarjasta koostuu tyypillinen pankkiautomaattitransaktio? Oletetaan, että tunnusluku tarkistetaan paikallisesti (ei tietokannasta), mutta tilitiedot ovat tietokannassa. Tarkastele myös toiminnan mahdollisia häiriökohtia tapahtumanhallinnan näkökulmasta.

b) Onko moniosaisen lentomatkan varauksessa tai lomamatkan (lento, hotelli, vuokra-auto) varauksissa joitakin erityisiä ongelmia tapahtumanhallinnan kannalta?

3. Oletetaan, että järjestelmän romahdettua lokitiedoston sisältö on seuraava:

100: [start, T1]
101: [start, T2]
102: [write, T1, A, 10, 20]
103: [write, T2, B, 11, 22]
104: [commit, T1]
105: [start, T3]
106: [write, T3, A, 20, 30]
107: [abort, T2]
108: [checkpoint]
109: [start, T4]
110: [write, T3, B, 11, 33]
111: [write, T3, A, 30, 40]
112: [write, T4, C, 15, 25]
113: [commit, T3]
114: [write, T4, C, 25, 35]
a) Mitä operaatioita sisältyy tästä tilanteesta alkavaan elvytykseen? Oletetaan, että tietoalkion A sisältävän sivun PageLSN = 106, tietoalkion B sisältävän sivun PageLSN = 110 ja tietoalkion C sisältävän sivun PageLSN = 112.
b) Oletetaan, että tarkistuspistettä (checkpoint) ei olisi otettu ollenkaan. Mikä on tällöin se toiminnan vaihe, jossa elvytys saattaa vaatia eniten toimenpiteitä?

4. Mitä etua on WAL-käytännöstä (write ahead logging) elvytyksessä? Onko tälle vaihtoehtoa?

5. Miksi elvytyksessä undo-operaatiot suoritetaan selaamalla lokia lopusta alkuun päin ja redo-operaatiot selaamalla alusta loppuun päin? Anna konkreettiset esimerkit tilanteista, jotka osoittavat näiden järjestysten merkityksen.

6. Millaista sitoutumiskäytäntöä pitäisi noudattaa, jos halutaan, ettei elvytyksessä tarvitsisi koskaan uusia (redo) transaktioiden operaatioita? Mitä huonoja puolia tällaisella käytännöllä olisi?

7. Oletetaan, että tkhj on parhaillaan toipumassa häiriöstä eli suorittaa elvytysoperaatioita (undo, redo). Miten menetellään, jos kesken elvytyksen sattuu uusi häiriö? Pitäisikö myös elvytysoperaatioiden suorituksesta kirjata lokitietueita?