Tiedonhallinta I, syksy 1999, Harjoitus 7 (15.-18.11.)

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

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

2. 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ä?

3. Mitä etua on WAL-käytännöstä puskurinhallinnassa? Onko käytäntö
suorastaan välttämätön?

4. Miksi elvytyksessä undo-operaatiot suoritetaan selaamalla lokia
lopusta alkuun päin ja redo-operaatiot alusta loppuun päin? Anna
esimerkki tilanteesta, joka osoittaa konkreettisesti näiden järjestysten
merkityksen.

5. Oletetaan, että tietokannan hallintajärjestelmä 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? 

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