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

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

Nämä ovat kurssin viimeiset harjoitustehtävät. Kurssin ainoa välikoe on aikaisemmin ilmoitetun mukaisesti ke 1.11. klo 14-18 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);		Ovatko transaktiot oikeellisia? 
T1: v:=v+1; 			
T1: write-item(X,v);  		Mikä on kunkin transaktion eristyvyystaso?
T2: read-item(X,w);
T2: write-item(Y,w);  		Mitä lokitietueita syntyy, kun tietokannassa
T2: commit;  			on aluksi X = Y = Z = 0?
T3: read-item(Y,p);  
T1: abort;			Säilyykö tietokannan eheys?
T3: write-item(Z,p);  
T3: commit.

2. Näytä, miten ankara kaksivaiheinen lukitus estää edellisen tehtävän ajoituksen syntymisen.

3. Millä ehdolla lukulukon korotus kirjoituslukoksi voi tulla kysymykseen?

4. 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?

5. Ovatko seuraavat ajoitukset mahdollisia ankarassa kaksivaiheisessa lukituskäytännössä?

a) T1: write-item(X);			b) T1: read-item(X);
   T2: write-item(Y);  			   T2: read-item(X);
   T1: read-item(Y);			   T1: write-item(X);
   T2: read-item(X);  			   T2: write-item(X);
   T1: commit;  			   T1: commit;
   T2: commit.				   T2: commit;

Mikäli ajoitus ei ole mahdollinen, millä tavalla ajoituksen syntyminen estyy? Millaisen ajoituksen mukaisesti transaktiot voivat valmistua, so. päästä sitoutumispisteeseensä?

6. Tietokannan hallintajärjestelmä soveltaa lukituskäytäntöä, jossa kaikille transaktioille taataan vähintään eristyneisyystaso 'read uncommitted'. Lukittavat tietoalkiot ovat sivuja. Tarkastellaan yritystietokantaan kohdistuvaa transaktiota T1:

set transaction isolation level L;
begin transaction;
select sum(salary) from employee;
commit transaction:
Mitä lukkoja transaktiossa otetaan ja milloin ne vapautetaan, kun
a) L = 'repeatable read', b) L = 'read committed'?

Millä tavoin transaktion tuottama tulos tapauksessa (a) voi poiketa siitä, mitä se on tapauksessa (b)? Oletetaan, että samanaikaisesti on suorituksessa ainoastaan yksi toinen transaktio, T2, joka päivittää kahden työntekijän palkkaa.

7. Vastaa kurssikyselyyn.