Tietokannan hallinta, syksy 2001, Harjoitus 6 (23.-26.10.)

Läsnäolo: 3 tehtävää        (**)-merkitty tehtävä lasketaan kahdeksi

Nämä ovat kurssin viimeiset harjoitustehtävät. Luennot päättyvät ohjelman mukaisesti varsinaisesti 18.10. Kuitenkin tiistaina 23.10. klo 12-14 pidetään kertaustyyppinen luento. Ks. tarkemmin kurssin WWW-sivu!

Kurssikoe on aikaisemmin ilmoitetun mukaisesti perjantaina 2.11. klo 15-19 salissa Porthania I. Koealue: koko kurssin luennoilla ja harjoituksissa käsitellyt asiat.

1. Tietokannan eheysrajoitteen mukaan tietoalkioilla X ja Y pitää olla sama arvo. Tarkastellaan transaktiojoukon {T1, T2, T3} ajoitusta

T1: read-item(X,v);	    a) Ovatko transaktiot oikeellisia? 
T1: v:=v+1; 			
T1: write-item(X,v);  	    b) Mikä on kunkin transaktion eristyneisyystaso?
T2: read-item(X,w);
T2: write-item(Y,w);  	    c) Mitä lokitietueita syntyy, kun tietokannassa
T2: commit;  		       on aluksi X = Y = Z = 0?
T3: read-item(Y,p);  
T1: abort;		    d) Säilyykö tietokannan eheys?
T3: write-item(Z,p);  
T3: commit.
e) Kuinka ankara 2PL estää esimerkkiajoituksen syntymisen?

2. a) Millä ehdolla lukulukon korotus kirjoituslukoksi voi tulla kysymykseen?

b) Kuinka lukon alennus (downgrading) kirjoituslukosta lukulukoksi suoritettaisiin? (Mitä muutoksia operaatioihin read_lock, write_lock, unlock?) Arvioi myös alennuksen käytännön merkitystä.

3. Oletetaan, että transaktiot T1 ja T2 noudattavat seuraavaa ajoitusta:

        1       T1: read_item(X);
        2               T2: read_item(X);
        3       T1: write_item(X);
        4       T1: read_item(Y);
        5               T2: read_item(X);
        6               T2: write_item(X);
        7       T1: write-item(Y);
        8       T1: commit;
        9               T2: commit;
a) Mitkä operaatioparit tässä ajoituksessa konfliktoivat? Mikä eristyvyysanomalia kuhunkin konfliktiin liittyy?
b) Anna edelleen kolme esimerkkiä ei-konfliktoivasta operaatioparista ja perustele, miksi kukin niistä ei konfliktoi. Esimerkkien tulee olla erilaisia (kussakin eri peruste).

4. Tarkastele seuraavaan ajoitukseen liittyviä lukituksia, kun käytetään a ) lyhytaikaisia ja b) pitkäaikaisia lukkoja. Liittyykö tapauksiin a ja b joitakin ongelmia?

      T1: read-item(X);
      T2: read-item(X);
      T1: write-item(X);
      T2: write-item(X);
      T1: commit;
      T2: commit;
5. Oletetaan kysely
select * from employee where dno=5;
a) Mitkä tekijät vaikuttavat lukkojen granulaarisuuden valintaan kyselyä toteutettaessa?

b) Eräissä järjestelmissä on mahdollisuus valita lukituksen granulaarisuus dynaamisesti eli vaihtaa granulaarisuutta jopa kesken kyselyn (esim. sivulukituksesta rivilukitukseen tai päinvastoin). Mihin perustuen muutos voitaisiin tehdä? (Vihje: Kyselyn suorituksesta voidaan kerätä suorituksen aikana tilastotietoa.)

6. (**) Tietokannan hallintajärjestelmässä sovelletaan ankaraa kaksivaiheista lukituskäytäntöä. Lukittavat tietoalkiot ovat sivuja. Mitä lukkoja otetaan seuraavan transaktion suorituksessa, kun

a) relaatioon EMPLOYEE ei ole hakemistoa attribuutilla dno,

b) relaatioon EMPLOYEE on hajautushakemisto attribuutilla dno (joko ensisijaisena saantipolkuna tai oheishakemistona)?

begin transaction;
update EMPLOYEE set salary = salary + 500
   where dno = 5;
commit transaction.
c) Entä lukot päivitysoperaatiossa, joka korottaa kaikkien Jokisten palkkaa, ja käytössä on sukunimen mukainen ISAM-hakemisto?

7. Vastaa kurssikyselyyn (linkki).