Läsnäolo: 3 tehtävää
1. Tietokannan eheysrajoitteen mukaan tietoalkioilla X ja Y pitää olla sama arvo. Tarkastellaan transaktiojoukon {T1, T2, T3} ajoitusta T1: read-item(X,v); T1: v:=v+1; T1: write-item(X,v); T2: read-item(X,w); T2: write-item(Y,w); T2: commit; T3: read-item(Y,p); T1: abort; T3: write-item(Z,p); T3: commit. Ovatko transaktiot oikeellisia? Mikä on kunkin transaktion eristyneisyystaso? Mitä lokitietueita syntyy, kun tietokannassa on aluksi X = Y = Z = 0? Säilyykö tietokannan eheys? 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); T2: write-item(Y); T1: read-item(Y); T2: read-item(X); T1: commit; T2: commit. b) T1: read-item(X); T2: read-item(X); T1: write-item(X); T2: write-item(X); T1: 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. Transaktio T2 päivittää kahden työntekijän palkkaa.