Helsingin yliopisto/TKTL
Tietokannan hallinta, k 2003, Harjoitus 6, 5.5.-9.5

Kurssikoe perjantaina 16.5. klo 16-20 Porthania I.

1. Tietokannan eheysrajoitteen mukaan tietoalkioilla X ja Y pitää olla sama arvo. Tarkastellaan transaktiojoukon {T1, T2, T3} ajoitusta
T1: read(X,v);
T1: v:=v+1;
T1: write(X,v);
T2: read(X,w);
T2: write(Y,w);
T2: commit;
T3: read(Y,p);
T1: abort;
T3: write(Z,p);
T3:commit;
  1. Ovatko transaktiot eheyden säilyttäviä (oikeelisia)?
  2. Mitä eristyneisyysongelmia ajoituksessa esiintyy?
  3. Mitä lokitietueita syntyy, kun tietokannassa on aluksi X = Y = Z = 0?
  4. Säilyykö tietokannan eheys?
  5. Kuinka ankara 2PL estää esimerkkiajoituksen syntymisen?

2. Oletetaan, että transaktiot T1 ja T2 noudattavat seuraavaa ajoitusta:
1 T1: read(X,v);
2 T2: read(X,u);
3 T1: write(X,v);
4 T1: read(Y,z);
5 T2: read(X,w);
6 T2: write(X,w);
7 T1: write(Y,z);
8 T1: commit;
9 T2: commit;
  1. Mitkä operaatioparit tässä ajoituksessa konfliktoivat? Mikä eristyvyysanomalia kuhunkin konfliktiin liittyy?
  2. Anna edelleen kolme esimerkkiä yllä olevan ajoituksen ei-konfliktoivasta operaatioparista ja perustele, miksi kukin niistä ei konfliktoi. Kussakin esimerkissä tulee olla eri peruste.

3. Tietokannan hallintajärjestelmässä sovelletaan ankaraa kaksivaiheista lukituskäytäntöä. Lukittavat tietoalkiot ovat sivuja. Mitä lukkoja ja missä vaiheessa käsittelyä otetaan seuraavan transaktion suorituksessa kun
a) relaatio TYÖNTEKIJÄ on toteutettu kasarakenteena.,
b) relaatio TYÖNTEKIJÄ on hajautettu sarakkeen OSASTO perusteella.
c) relaatiolla TYÖNTEKIJÄ on hajautukseen perustuva oheishakemisto sarakkeen OSASTO perusteella.

   begin transaction; 
      update TYÖNTEKIJÄ set PALKKA = PALKKA + 500 where OSASTO = 5; 
   commit transaction.  

4. Tietokannan hallintajärjestelmässä sovelletaan ankaraa kaksivaiheista lukituskäytäntöä. Lukittavat tietoalkiot ovat sivuja. Mitä lukkoja ja missä vaiheessa käsittelyä otetaan transaktion

  begin transaction
    update TYÖNTEKIJÄ set PALKKA = PALKKA + 500 where TT_NRO=301123
  commit transaction. 
suorituksessa kun taulu on toteutettu ISAM rakenteena?

5. Vuorovaikutteisessa tietokantasovelluksessa tietokannan päivitys tapahtuu usein seuraavasti. Asiakassovellus lukee tietokannasta joukon rivejä sovelluksen työtilaan. Rivit näytetään käyttäjälle, joka mahdollisesti editoi työtilassa olevia rivejä. Lopuksi muuttuneet rivit kirjoitetaan takaisin tauluun. Miten operaatiot kannattaisi jakaa transaktioiksi. Millaista eristyvyystasoa ja lukitusta tällaisessa käsittelyssä kannattaisi käyttää?

6. Lupaudu täyttämään kurssikyselylomake osoitteessa: http://ilmo.cs.helsinki.fi/kurssit/servlet/Valinta