techniky paralelnÉho spracovania
DESCRIPTION
TECHNIKY PARALELNÉHO SPRACOVANIA. Marek Jasa ň 4 ročník ŠPZ. ZÁKLADNÉ POJMY. Definícia – Rozvrh - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/1.jpg)
TECHNIKY PARALELNÉHO SPRACOVANIATECHNIKY PARALELNÉHO SPRACOVANIA
Marek Jasaň
4 ročník
ŠPZ
![Page 2: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/2.jpg)
ZÁKLADNÉ POJMYZÁKLADNÉ POJMY Definícia – Rozvrh
Rozvrh S je plán spracovania množiny transakcií ( T1,T2,.....,Tn) , čo
je definovaná postupnosť operácií Oij z transakcií T1,T2,.....,Tn
v poradí umožňujúcom vykonanie každej transakcie.
Definícia – sériový rozvrh
Rozvrh S nad množinou transakcií ( T1,T2,.....,Tn) je sériovým
rozvrhom, ak existuje permutácia nad [1,2,…..,n] takých, že S =<T(1), T(2), ....T(n)>.
![Page 3: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/3.jpg)
Definícia – serializovateľný rozvrh
Rozvrh S nad množinou transakcií T je serializovatelný, ak dáva rovnaké výsledky, ako sériový rozvrh nad množinou transakcií T.
Definícia – Ekvivalencia rozvrhov
Dva rozvrhy S1 a S2 nad množinou transakcií sú ekvivalentné ,ak pre
každú dvojicu operácií Oij a Okl, (ik) kedykoľvek platí : Oij 1 Okl
potom Oij 2 Okl.
Definícia – permutovateľné operácie
Dve operácie Oij a Okl sú permutovateľné ( zameniteľné) vtedy keď
ich vykonanie v poradí
Oij Okl dáva rovnaké výsledky, ako Oij Okl.
![Page 4: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/4.jpg)
Veta – dostatočná podmienka serializovateľnosti
Dostatočnou podmienkou serializovateľnosti je to, aby mohol byť transformovaný pomocou permutovaných operácií na sériový rozvrh
![Page 5: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/5.jpg)
Precedencia transakciPrecedencia transakciíí
Precedencia transakcií znamená, že transakcia T1 predchádza
transakciu T2 v rozvrhu S= ( T1,T2,.....,Tn), ak v ňom existujú dve
nepermutovateľné operácie Oik a Ojl , kde platí Oik Ojl ,
teda operácia Oik je vykonaná v transakcii T1 pred vykonaním
operácie Ojl v transakcii T2.
Definícia – graf precedencie transakcií
Graf precedencie transakcií predstavuje orientovaný graf G= (T,V ), kde množina vrcholov T je množinou transakcií a množina orientovaných hrán vij = [Ti,Tj] takých , že transakcia Ti predchádza
transakciu Tj.
![Page 6: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/6.jpg)
Obr 1) Ukážka grafu precedencie
![Page 7: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/7.jpg)
PROBLÉMY SÚVISIACE S PARALELNÝM PROBLÉMY SÚVISIACE S PARALELNÝM
SPRACOVANÍMSPRACOVANÍM
Pri paralelnom spracovaní transakcií je nutné riešiť poradie spracovávania jednotlivých operácií pomocou rozvrhov. V prípade, že by sme sa tomuto problému nevenovali, mohlo by dôjsť k štyrom typom chýb , a tým aj k poškodeniu údajov v databáze.
1) Problém straty informácií
2) Problém nekomitovaných dát
3) Prípad nekonzistentných dát
4) Fantóm
![Page 8: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/8.jpg)
Druhy protokolovDruhy protokolov::
ZamykanieČasové pečiatky
![Page 9: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/9.jpg)
ZamykanieZamykanie
Zamykanie je technika, ktorá umožní paralelný prístup k zdieľaným objektom DB. Pokiaľ transakcia vlastní zámok na niektorý z objektov, má istotu, že žiadna iná transakcia nemôže modifikovať daný objekt.
Zámok je premenná viažuca sa na daný datový objekt, ktorého stav nás z hľadiska paralel. spracovania môže zaujímať.
Druhy zámkov
– Zdieľaný zámok ( S –lock)
– Exkluzívny zámok (X –lock)
– Binárny zámok
![Page 10: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/10.jpg)
Oblasti pOblasti pôsobnosti zámkov (Informix)ôsobnosti zámkov (Informix)
Databáza
- pri otvorení databázy sa aplikuje S-lock
-príkaz DATABASE názov EXCLUSIVE otvorí
databázu s X -lock
Tabuľka
-zamyká sa automaticky pri ALTER INDEX, ALTER
TABLE, CREATE INDEX, DROP INDEX
- LOCK TABLE názov – explicitne zamkne tabuľku
![Page 11: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/11.jpg)
Riadok / stránka / kľúč
- zamykajú sa implicitne napr. pri UPDATE,
INSERT a DELETE
- zamykanie diskových stránok alebo riadkov sa nastavuje
v CREATE TABLE alebo v ALTER TABLE
- pri DELETE sa nastavuje Lock na zmazané riadky
![Page 12: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/12.jpg)
Samotné prideľovanie zámkov je riadené tromi operáciami :
R – LOCK – sa vykonáva vždy pred operáciou Read a vyžaduje pridelenie zdieľaného zámku na daný objekt.
W – LOCK - predchádza operáciu Write dátového objektu, alebo Read dátového objektu, ak sa predpokladá následná operácia Write. Pri tejto operácii sa vždy vyžaduje pridelenie exkluzívneho zámku na daný objekt.
UNLOCK – táto operácia zabezpečí uvoľnenie zámku, ktorý je pridelený dátovému objektu.
![Page 13: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/13.jpg)
Pre transakciu platí , že je dobre definovaná z hľadiska zamykania, ak platia nasledovné podmienky:
1) každá operácia Read je predchádzaná operáciou R_LOCK, alebo W_LOCK, za ktorou nasleduje operácia UNLOCK
2) každá operácia Write je predchádzaná operáciou W_LOCK, a nasledovaná operáciou UNLOCK
![Page 14: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/14.jpg)
Pre samotný proces zamykania si môžeme definovať maticu zamykania, z ktorej vyplýva , aký zámok je možné prideliť dátovému objektu na už prideĺenom zámku k danému objektu.
S X -
S Y Y Y
X N N N
- Y Y Y
![Page 15: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/15.jpg)
Transakcia T pred každou operáciou Read(X) musí spustiť operáciu R_LOCK(X) alebo W_LOCK(X).
Pred každou operáciou Write(X) v transakcii T je nutné spustiť operáciu W_LOCK(X).
Transakcia T musí zabezpečiť spustenie operácie UNLOCK(X) po vykonaní všetkých operácií Read(X) a Write(X).
Transakcia nesmie pripustiť vykonanie operácie W_LOCK(X) alebo R_LOCK(X), ak je na objekt daný zdieľaný alebo exkluzívný zamok inou transakciou.
Transakcia T nemôže vykonať operáciu UNLOCK na objekty X zamknuté inou transakciou.
![Page 16: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/16.jpg)
Dvojfázové zamykanieDvojfázové zamykanie
Pri paralelnom spracovaní transakcií je potrebné zabezpečiť serializovateľnosť vykonania ich operácií. Pri zamykaní sa serializovateľnosť zabezpečuje použitím dvojfázového uzamykacieho
protokolu.
Definícia - Dvojfázový uzamykací protokol:
V transakcii T všetky zamykacie operácie R_LOCK, W_LOCK
predchádzajú prvú operáciu UNLOCK.
![Page 17: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/17.jpg)
Z uvedeného vyplýva, že pred spracovaním akéhokoľvek objektu je nutné žiadať zámok na tento objekt. Po uvoľnení zámku nad objektom transakcia už nesmie zamknúť žiaden objekt.
Transakciu môžme rozdeliť ne dve fázy:
1 fáza rastu – spracovanie žiadosti na zámky a ich prideľovanie.
fáza uvoľňovania - všetky zámky pridelené v prvej fáze sú uvoľňované
![Page 18: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/18.jpg)
Veta
Ak sú všetky transakcie zabezpečené dvojfázovým uzamykacím protokolom, tak sú všetky možné rozvrhy serializovateľné.
Spomenutá technika je známa ako základné dvojfázové zamykanie.
Okrem tejto poznáme ešte :
1) konzervatívne dvojfázové zamykanie – zámky na všetky objekty sú pridelené na zčiatku vykonania transakcie
2) Striktné dvojfázové zamykanie – zámky budú uvoľnené až po vykonaní operácie COMMIT , čiže po potvrdení transakcie.
3) Rigorózne dvojfázové zamykanie – uvolní zámky až po skončení transakcie.
![Page 19: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/19.jpg)
Časové pečiatkyČasové pečiatky Používanie dvojfázového zamykacieho protokolu nám zabezpečuje serializovateľnosť, ale zároveň spôsobuje uviaznutie systému. Preto bol navrhnutý iný spôsob na zabezpečenie serializovateľnosti na princípe používania časových pečiatok.
Časová pečiatka transakcie je unikátný identifikátor vytváraný v SRBD tak, aby jednoznačne identifikoval transakciu. Veľmi často je toto číslo zviazané z časom začiatku transakcie, preto sa používa názov časová pečiatka (TIMESTAMP).
![Page 20: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/20.jpg)
Definícia- časová pečiatka objektu
Časová pečiatka objektu je numerická hodnota priradená objektu DB vyjadrujúca číslo transakcie, ktorá z ňou naposledy pracovala.
a) univerzálna časová pečiatka – objektu je pridelená hodnota transakcie,ktorá posledná spracovávala objekt bez ohľadu na typ operácie
časová pečiatka READ – hodnota transakcie, ktorá posledná čítala objekt
a) časová pečiatkaWRITE – hodnota transakcie, ktorá posledná zapisovala daný objekt
![Page 21: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/21.jpg)
Úplné pečiatkovanieÚplné pečiatkovanie
Ak máme dve transakcie T1 a T2 a i je časová pečiatka Ti a j je časová
pečiatka Tj , a platí i < j pre operácie nad tým istým objektom databázy X ,
čiže je nutné zaistiť, aby transakcia Ti predchádzala transakciu Tj, v opačnom
prípade musí jednu transakciu zrušiť a pustiť ju neskôr.
![Page 22: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/22.jpg)
Procedure READ (Ti : transakcia, X : objekt DB);
IF TimeStamp_Object(X) i THEN
BEGI
Vykonaj Read(X);
TimeStamp_Object(X) := i;
END
ELSE
ABORT;
END IF
END READ
![Page 23: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/23.jpg)
Procedure WRITE (Ti : transakcia, X : objekt DB);
IF TimeStamp_Object(X) i THEN
BEGIN
Vykonaj WRITE(X);
TimeStamp_Object(X) := i;
END
ELSE
ABORT;
END IF
END WRITE
![Page 24: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/24.jpg)
Čiastočné opečiatkovanieČiastočné opečiatkovanie
Predošlý algoritmus používal len jednu pečiatku pre objekt DB a usporiadával všetky operácie nad objektami DB. Avšak dovoľoval usporiadavať len operácie typu Read / Write alebo typu Write/ Write. Preto s použitím dvojice časových pečiatok pre každý objekt DB je možné usporiadať transakcie so všetkými typmi nepermutovaných operácií a to:
Read / Write
Write / Write
Write / Read
ReadTimeStamp_Object - čas čítania transakciou
WriteTimeStamp_Object - čas zápisu objektu transakciou
![Page 25: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/25.jpg)
Procedure READ (Ti : transakcia, X : objekt DB);
IF WriteTimeStamp_Object(X) i THEN
BEGIN
Vykonaj Read(X);
ReadTimeStamp_Object(X) := MAX(ReadTimeStamp_Object(X),i);
END
ELSE
ABORT;
END IF;
END READ;
![Page 26: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/26.jpg)
Procedure WRITE (Ti : transakcia, X : objekt DB);
IF ( WriteTimeStamp_Object(X) i ) AND
( ReadTimeStamp_Object(X) i ) THEN
BEGIN
Vykonaj Write(X);
WriteTimeStamp_Object(X) := i;
END
ELSE
ABORT;
END IF;
END READ;
![Page 27: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/27.jpg)
UviaznutieUviaznutie
Uviaznutie (DEADLOCK) sa vyskytuje vtedy , keď jedna alebo viac transakcií čaká na objekt zamknutý inou transakciou. Tieto transakcie sú zaradené do čakacej fronty.
Definícia uviaznutia – uviaznutie je situácia , keď každá so skupiny transakcií splna nasledovné podmienky :
- každá zo skupiny transakcií je blokovaná čakaním na objekt DB
- - ukončenie každej z transakcií, ktorá nepatrí do skupiny blokovaných neumožní odblokovanie žiadnej z nich
![Page 28: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/28.jpg)
Obr. 3. Príklad uviaznutia
Transakcia T1 Transakcia T2
![Page 29: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/29.jpg)
Predchádzanie uviaznutiu
V mnohých systémoch SRBD rieši uviaznutie tzv. predchádzaním, to znamená , že nedovolí spustiť transakciu , ktorá by mohla spôsobiť uviaznutie, alebo ukončí činnosť transakcie, ktorá by mohla spôsobiť uviaznutie.Jednou s metód je už spomenuté konzervatívne zamykanie. V tejto metóde sa na začiatku detekuje, či nejaká iná transakcia nepracuje s požadovaným objektom, a ak áno, tak sa nepokračuje v transakcii.
Nevýhodou tejto metódy je to, že spomaľuje prácu systému a neumožní pracovať transakciám tak, aby mohli zdieľať niektoré objekty DB.
Preto sú oveľa častejšie používané metódy založené na používaní časových pečiatok.
![Page 30: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/30.jpg)
Metóda WAIT -DIEMetóda WAIT -DIE V tejto metóde je staršej transakcii dovolené čakať na mladšiu transakciu a pokiaľ mladšia žiada o objekt, ktorý drží staršia transakcia, tak mladšia je zrušená a reštartovaná.
Algoritmus tejto metódy:
IF TimeStamp( Ti ) < TimeStamp( Tj ) THEN
BEGIN
Tj WAIT
ELSE
BEGIN
Ti DIES
END;
END IF;
![Page 31: TECHNIKY PARALELNÉHO SPRACOVANIA](https://reader035.vdocuments.mx/reader035/viewer/2022062422/56812c00550346895d90717b/html5/thumbnails/31.jpg)
Metóda WOUND –WAITMetóda WOUND –WAIT V tejto metóde je mladšej transakcii dovolené čakať na staršiu transakciu, a keď staršia transakcia žiada o objekt, ktorí drží mladšia transakcia, tak staršia transakcia zruší mladšiu.
Algoritmus tejto metódy:
IF TimeStamp( Ti ) < TimeStamp( Tj ) THEN
BEGIN
Tj IS WOUNDED
ELSE
BEGIN
Ti WAITS
END;
END IF;