1 / 31

TECHNIKY PARALELNÉHO SPRACOVANIA

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

Télécharger la présentation

TECHNIKY PARALELNÉHO SPRACOVANIA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. ZÁ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)>.

  3. 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, (ik) kedykoľvek platí : Oij1 Oklpotom 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Okldáva rovnaké výsledky, ako OijOkl.

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

  5. Precedencia 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.

  6. Obr 1) Ukážka grafu precedencie

  7. PROBLÉMY SÚVISIACE S PARALELNÝM SPRACOVANÍ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

  8. Druhy protokolov: • Zamykanie • Časové pečiatky

  9. Zamykanie • 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

  10. Oblasti pô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

  11. 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

  12. 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.

  13. 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

  14. 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.

  15. 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.

  16. Dvojfá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.

  17. 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é

  18. 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 : • konzervatívne dvojfázové zamykanie – zámky na všetky objekty sú pridelené na zčiatku vykonania transakcie • 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.

  19. Č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).

  20. 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

  21. Ú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.

  22. 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

  23. 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

  24. Č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

  25. 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;

  26. 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;

  27. Uviaznutie 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

  28. Obr. 3. Príklad uviaznutia Transakcia T1 Transakcia T2

  29. 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.

  30. Metó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;

  31. Metó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;

More Related