31
TECHNIKY PARALELNÉHO SPRACOVANIA TECHNIKY PARALELNÉHO SPRACOVANIA Marek Jasaň 4 ročník ŠPZ

TECHNIKY PARALELNÉHO SPRACOVANIA

Embed Size (px)

DESCRIPTION

TECHNIKY PARALELNÉHO SPRACOVANIA. Marek Jasa ň 4 ročník ŠPZ. ZÁKLADNÉ POJMY. Definícia – Rozvrh - PowerPoint PPT Presentation

Citation preview

Page 1: TECHNIKY PARALELNÉHO SPRACOVANIA

TECHNIKY PARALELNÉHO SPRACOVANIATECHNIKY PARALELNÉHO SPRACOVANIA

Marek Jasaň

4 ročník

ŠPZ

Page 2: TECHNIKY PARALELNÉHO SPRACOVANIA

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

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

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

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

Obr 1) Ukážka grafu precedencie

Page 7: TECHNIKY PARALELNÉHO SPRACOVANIA

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

Druhy protokolovDruhy protokolov::

ZamykanieČasové pečiatky

Page 9: TECHNIKY PARALELNÉHO SPRACOVANIA

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

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

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

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

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

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

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

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

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

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

Č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

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

Ú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

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

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

Č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

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

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

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

Obr. 3. Príklad uviaznutia

Transakcia T1 Transakcia T2

Page 29: TECHNIKY PARALELNÉHO SPRACOVANIA

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

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

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;