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