Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely

Hasonló előadás


Az előadások a következő témára: "Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely"— Előadás másolata:

1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely
ABR 2( Adatbázisrendszerek 2) 6. Előadás: Zárolások

2 A zárolási ütemező Akkor és csak akkor engedélyezze a kéréseket, ha a kérés jogszerű ütemezést eredményez. A zártábla segít ezen. Úgy tekinthetjük a táblát, mint az (X,T) párokból álló Zárolások(elem, tranzakció) relációt, ahol T tranzakció zárolja az X adatbáziselemet. Az ütemező lekérdezi, vagy INSERT és DELETE utasításokkal módosítja. A T1 és T2 is előbb zárolja B-t s csak azután oldja fel A zárolását. Ebben az esetben KONZISZTENS lesz. T1: l1(A); r1(A); A:=A+100; w1(A); l1(B); u1(A); r1(B);B:=B+100;w1(B);u1(B); T2: l2(A); r2(A); A:=A*2; w2(A); l2(B); u2(A); r2(B);B:=B*2;w2(B);u2(B);

3 T1 T2 A B 25 l1(A);r1(A); A:=A+100 w1(A); l1(B); u1(A); 125 l2(A);r2(A); A:=A*2; w2(A); 250 l2(B); Elutasítva r1(B); B:=B+100; w1(B);u1(B); l2(B); u2(A); r2(B); B:=B*2; w2(B);u2(B);

4 A kétfázisú zárolás Az a feltétel, amellyel biztosítani tudjuk, hogy a tranzakciók jogszerű ütemezése konfliktus-sorbarendezhető legyen kétfázisú zárolásnak (two-phase locking), 2FZ (2PL): Minden tranzakcióban minden zárolási művelet megelőzi az összes zárfeloldási műveletet. A két fázis attól két fázis, hogy első fázisban csak zárolá-sokat adunk ki, a második fázisban csak megszüntetjük a zárolásokat. A kétfázisú zárolás a tranzakciókban a művele-tek sorrendjére egy feltétel.Azokat a tranzakciókat, amelyek eleget tesznek a 2ZF feltételnek kétfázisú zárolású tranz-akcióknak (two-phase-locked transaction) nevezzük.

5 A holtpont kockázata l1(B); Elutasítva
Az egyik probléma, amit nem lehet a kétfázisú zárolással megoldani. Ugyanazon tranzakciók, de T2 előbb dolgozza fel a B-t: T1: l1(A); r1(A); A:=A+100; w1(A); l1(B); u1(A); r1(B);B:=B+100;w1(B);u1(B); T2: l2(B); r2(B); B:=B*2; w2(B); l2(A); u2(B); r2(A);A:=A*2;w2(A);u2(A); T1 T2 A B 25 l1(A); r1(A); l2(B); r2(B); A:=A+100 B:=B*2 w1(A); 125 w2(B); 50 l1(B); Elutasítva

6 Különböző zármódú zárolási rendszerek
Osztott és kizárólagos zárak. Ugyanannak az adatbáziselemnek két olvasási művelete nem eredményez konfliktust, viszont szükséges zárolnunk, mert nem szabad közben annak az írását megengednünk. Az íráshoz szükséges zár “erősebb”, mert mind az olvasásokat, mind az írásokat meg kell akadályoznia. A zárolási ütemező két különböző zárat alkalmaz: osztott zárak (shared locks) kizárólagos zárak (exclusive locks) Tetszőleges X adatbáziselemet vagy egyszer lehet zárolni kizárólagosan vagy akárhányszor lehet zárolni osztottan, ha még nincs kizárólagosan zárolva. Ha csak olvasni akarjuk X-et, előnyben részesítjük az osztott zárolást.

7 sli(X) jelöljük, ha Ti tranzakció osztott zárat kér X-re
xli(X) jelöljük, ha Ti tranzakció kizárólagos zárat kér X-re Konzisztencia, 2FZ és ütemezések jogszerűsége feltételei: Tranzakció konzisztenciája: Nem írhatunk kizárólagos zár fenntartása nélkül és nem olvashatunk valamilyen zár fenntartása nélkül. Bármely Ti tranzakcióban: Az ri(X) olvasási műveletet meg kell előzzön egy sli(X) vagy xli(X) úgy, hogy közben nincs ui(X). A wi(X) írási műveletet meg kell előzze egy xli(X) úgy, hogy közben nincs ui(X). 2.Tranzakciók kétfázisú zárolása:A zárolásoknak meg kell előzniük a zárak feloldását. Bármely Ti kétfázisú tranzak-cióban egyetlen sli(X) vagy xli(X) műveletet sem előzhet meg egyetlen ui(Y) művelet sem semmilyen Y-ra.

8 3.Az ütemezések jogszerúsége: Egy elemet vagy egyetlen tranzakció zárol kizárólagosan vagy több is zárolhatja osz-tottan, de a kettő egyszerre nem lehet: Ha xli(X) szerepel egy ütemezésben, akkor ezután nem következhet xlk(X) vagy slk(X) valamely i-től különböző k-ra anélkül, hogy közbe ne szerepelne az ui(X). Ha sli(X) szerepel egy ütemezésben, akkor ezután nem következhet xlk(X) valamely i-től különböző k-ra anélkül, hogy közbe ne szerepelne az ui(X). Engedélyezett, hogy egy tranzakció ugyanazon elemre kérjen és tartson mind osztott, mind kizárólagos zárat, feltéve, ha ezzel nem kerül konfliktusba más tranzakciók zárolásaival.

9 T1: sl1(A); r1(A); xl1(B); r1(B); w1(B); u1(A); u1(B);
T2: sl2(A); r2(A); sl2(B); r2(B); u2(A); u2(B); T1 T2 sl1(A); r1(A); sl2(A); r2(A); sl2(B); r2(B); xl1(B); Elutasítva u2(A); u2(B); xl1(B); r1(B); w1(B) u1(A); u1(B);

10 Kompatibilitási mátrixok
A kompatibilitási mátrix minden egyes zármódhoz rendelke-zik egy-egy sorral és egy oszloppal. A sorok egy másik tranz-akció által az X elemre már érvényes záraknak felelnek meg, az oszlopok pedig az X-re kért zármódnak. Szabály: C módú zárat akkor és csak akkor engedélyezhetünk, ha a táblázat minden olyan R sorára, amelyre más tranzakció már zárolta az X-et R módban, a C oszlopban Igen szerepel. Kért zár S X Érvényes zár Igen Nem ebben a módban

11 Zárak felminősítése – több konkurens művelet
T1: sl1(A); r1(A); sl1(B); r1(B); xl1(B);w1(B); u1(A); u1(B); T2: sl2(A); r2(A); sl2(B); r2(B); u2(A); u2(B); B beolvasása után a T1 hosszadalmas számításokat végez. Holtpont forrása lehet. T1 T2 sl1(A); r1(A); sl2(A); r2(A); sl1(B); r2(B); sl1(B); r1(B); xl1(B); Elutasítva u2(A); u2(B); xl1(B); w1(B); u1(A); u1(B);

12 Módosítási zárak Az uli(X) módosítási zár a Ti tranzakciónak csak az X olvasására ad jogot, az X írására nem. Azonban csak a módosítási zárat lehet ké-sőbb felminősíteni. Az olvasási zárat nem lehet felminősíteni. Módosítási zárat akkor is engedélyezhetünk X-en, amikor X már osztott módon zárolva van, ha azonban X-en van egy módosítási zár, akkor ez megakadályozza, hogy bármilyen más új zárat, akár osztott, akár módosítási, akár kizárólagos zárat kapjon az X. A lennebb levő kompatibilitási mátrixban a módosítási zár úgy néz ki, mintha osztott lenne, amikor kérjük és kizárólagos lenne, amikor megvan. S X U Igen Nem

13 Holtpont alakulhat ki akkor, ha olvasási zárakat minősítünk fel:
T1: sl1(A); r1(A); xl1(A);w1(A); u1(A); T2: sl2(A); r2(A); xl2(A); w2(A); u2(A); A holtpont megszűnik, ha a módosítási zárakat használjuk: T1: ul1(A); r1(A); xl1(A);w1(A); u1(A); T2: ul2(A); r2(A); xl2(A); w2(A); u2(A); T1 T2 ul1(A); r1(A); ul2(A); Elutasítva xl1(A); w1(A); u1(A); ul2(A); r2(A); xl2(A); w2(A); u2(A);

14 Növelési zárak Számos tranzakció növeli vagy csökkenti a tárolt értéket: Pénzt utal át egyik bankszámláról a másikra. Repülőgépjegyeket árusít, csökkenti az adott gépen a szabad ülőhelyek számát. Nem cserélhető fel sem az olvasással sem az írással. Bevezetjük a növelési műveletet NÖV(A,c). Ez a művelet megnöveli c konstanssal az A adatbáziselemet, amelyik egy egyszerű szám. c negatív is lehet: csökkentjük a számot. NÖV(A,c) a következő lépések atomi végrehajtására szolgál: READ(A, t); t:=t+c; WRITE(A,t);. Növelési zár (increment lock) ili(X) jelölés a Ti tranzakciónak X-re vonatkozó növelési zárolás kérése. növi(X) az a művelet, amelyik a Ti tranzakcióban megnöveli X értékét

15 Egy konzisztens tranzakció csak akkor végezheti el az X-en a növe-lési műveletet, ha egyidejűleg növelési zárat tart fenn az X-en. (-r-w) Egy jogszerű ütemezésben bármennyi tranzakció bármikor fenn-tarthat az X-re növelési zárat. De ha egy tranzakció növelési zárat tart fenn X-en, akkor egyidejűleg semelyik tranzakció nem tarthat fenn semmilyen zárat. A növi(X) művelet konfliktusban áll az rk(X)-el és a wk(X)-el is, k≠i, de nem áll konfliktusban növk(X)-el. Az I az increment rövidítése. S X I Igen Nem

16 T1: sl1(A); r1(A); il1(B); növ1(B); u1(A); u1(B);
S: r1(A); r2(A); növ2(B); növ1(B); konfliktusekvivalens a következőkkel: S’: r1(A); növ1(B); r2(A); növ2(B); S”: r2(A); növ2(B); r1(A); növ1(B); T1 T2 sl1(A); r1(A); sl2(A); r2(A) il2(B); növ2(B); il1(B); növ1(B); u2(A); u2(B); u1(A); u1(B);

17 A zárolási ütemező felépítése
A tranzakciók nem kérnek zárakat, vagy figyelmen kívül hagyjuk, hogy ezt teszik. Az ütemező feladata, hogy zárolási műveleteket szúrjon be az adatokhoz hozzáférő műveletek sorába. Nem a tranzakciók, hanem az ütemező oldja fel a zárakat akkor, amikor a tranzakciókezelő a tranzakció véglegesítésére vagy abor-tálására készül. READ(A); WRITE(B); COMMIT(T); … Ütemező I. része Zártábla LOCK(A); READ(A); … Ütemező II. része READ(A); WRITE(B); …

18 Az ütemező két része a következő műveleteket hajtja végre:
Az I. rész fogadja a tranzakciók által generált kérések sorát, és min-den adatbázis-hozzáfárási művelet elé, mint olvasás, írás, növelés vagy módosítás beszúrja a megfelelő zárolási műveletet. Az adatbázis hozzáférési műveleteket ezután átküldi a II. részhez. Az I. rész választja ki a megfelelő zárolási módot az ütemező által használtakból A II. rész fogadja az I. részen keresztül érkező zárolási és adatbázis-hozzáférési műveletek sorozatát és mindegyiket pontosan végrehajtja. Ha egy zárolási vagy adatbázis-hozzáférési kérés érkezik a II. részhez, eldönti, hogy az igénylő a T tranzakciót késlelteti-e, mivel a zárat nem tudja engedélyezni. Ha T nem késleltetett (az előzőleg kért zár már korábban engedélyezve van), akkor: Ha a művelet adatbázis-hozzáférés, akkor továbbítja az adatbázishoz és végrehajtja.

19 Ha zárolási művelet érkezik a II
Ha zárolási művelet érkezik a II. részhez, megvizsgálja a zártáblát, hogy a zár engedélyezhető-e. Ha igen, akkor úgy módosítja a zártáblát, hogy az éppen engedélyezett zárat is tartalmazza. Ha nem, akkor egy bejegyzést kell készítenie a zártáblában, mely jelzi a zárolási kérést Amikor a T tranzakciót véglegesítjük vagy abortáljuk, akkor a tranzakciókezelő értesíti az I. részt, hogy oldja fel az összes T által fentartott zárat. Ha bármely tranzakció várakozik ezen zárak vala-melyikére az I. rész értesíti a II. részt. Amikor a II. rész értesül, hogy valamelyik X adatbáziselemen elér-hetővé vált egy zár, akkor eldönti, hogy melyik a következő tranz-akció, amelyik megkapja a zárat az X-re. A tranzakció(k), amely(ek) megkapták a zárat, a késleltetett műveleteik közül annyit hajtanak végra, amennyit csak tudnak, amíg vagy befejeződnek, vagy egy másik zárolási kéréshez érkeznek el, amelyet nem lehet engedélyezni.

20 Egymódú zárak esetén az ütemező I
Egymódú zárak esetén az ütemező I. részének egyszerű a feladata: Ha bármilyen műveletet lát X adatbáziselemen és még nem szúrt be zárolási kérést az X-re az adott tranzakcióhoz, akkor beszúrja a kérést. Amikor a tranzakciót véglegesítjük vagy abortáljuk, az I. rész törölheti ezt a tranzakciót, miután feloldotta a zárakat (memóriaigény) Amikor többmódű zárak vannak, értesüljön milyen későbbi műveletek fognak előfordulni. Osztott-kizárólagos-módosítási zárak: T1: r1(A); r1(B); w1(B); T2: r2(A); r2(B); S: r1(A); r2(A); r2(B); r1(B); w1(B); S: sl1(A); r1(A); sl2(A); r2(A); sl2(B); r2(B); r1(B); w1(B); Az r1(B); művelet érkezik az ütemezőhöz azzal a figyelmeztetéssel, hogy ezt a zárat fel kell minősíteni. Az ütemező I. része kibocsájtja az ul1(B); r1(B);-t a II. résznek. Ez utóbbi megnézi a táblát és azt találja, hogy T1 engedélyezheti a módosítási zárat B-re, mivel osztott zárak vannak a B-n. Mikor a w1(B); beérkezik, az I. rész kibocsájtja az xl1(B); w1(B);-t. A II. rész nem teljesítheti az xl1(B);-t, mivel T2-nek van osztott zárja B-n. A T1 műveleteit késlelteti és tárolja. T2 véglege-sít, I. feloldja a T2 zárjait(A, B). Értesíti a II. részt, hogy T1 várakozik B zárolására. Ez az xl1(B); zárolást végrehajthatónak találja, beviszi a zártáblába, majd folytatja a T1-től tárolt műveletek végrehajtását.

21 A zártábla Absztrakt szinten egy reláció, amelyik összekapcsolja az adatbázis-elemeket az elemre vonatkozó zárolási információval. Azok az ele-mek, amelyek nincsenek zárolva, nem fordulnak elő a táblában. A csoportos mód (group mode) a legszigorúbb feltételek összefoglalása, amivel egy tranzakció szembesül, amikor új zárolást kér az A-n. Egyszerűsítjük az engedélyezés/elutasítási döntést azzal, hogy csak a csoportos móddal hasonlítjuk össze. Osztott-kizárólagos-módosítási (SXU) sémákhoz az egyszerű szabály: egy csoportos módban: S csak osztott zárak vannak (shared) U egy módosítási zár van (update) és lehet 1 vagy több osztott zár X egy kizárólagos zár van és semmilyen más zár nincs Várakozási bit megadja, hogy van-e legalább 1 tranzakció, amely az A zárolására vár.

22 Zártábla-bejegyzés szerkezete
Eleminformáció A Csoportos mód: U Várakozik-e: igen Lista: Tranz Mód Vár? Tköv. Köv. T1 S nem T2 U nem T3 X igen

23 Zárolási kérések kezelése
Az összes olyan tranzakciót leíró lista, amelyek vagy jelenleg zárol-ják az A-t vagy az A zárolására várakoznak. Hasznos információk: A zárolást fenntartó vagy zárolásra várakozó tranzakció neve Ennek a zárnak a módja A tranzakció fenntartja-e a zárat vagy várakozik a zárra T tranzakció zárat kér A-ra. Ha nincs bejegyzés, létrehozzuk és enge-délyezzük. Amikor van U zár, semmilyen más zárat nem engedélye-zünk (kivéve, ha maga T tartja fenn az U zárat). T-nek a kérését eluta-sítjuk, bejegyzés a listában, mely szerint T zárat kért és Vár?=‘igen’. Ha a csoportos mód X, akkor az előzővel megegyező. Ha a csoportos mód S (osztott), lehetne adni egy másik osztott vagy módosítási zárat. Ebben az esetben a T bejegyzése a listában Vár?=‘nem’, és a csoportos módot U-ra kellene cserélni, ha az új zár módosítási, másképp marad S. Mindenképpen az új listaelemhez kapcsolat létesül.

24 Zárfeloldások kezelése
T tranzakció feloldja A-t. T bejegyzését A-ra a listában töröljük. Ha a T által fenntartott zár nem egyezik meg a csoportos móddal, akkor a csoportos mód megmarad. Ha egyezik, meg kell vizsgálni a teljes listát, hogy megtaláljuk az új csoportos módot. Ha S el kell dönteni, hogy van-e további osztott zár. Ha a várakozik értéke ‘igen’, engedélyeznünk kell egy vagy több zárat a kérések listájából. Első-beérkezett-első-kiszolgálása (first-come-first-served): Azt a zárolási kérést engedélyezzük, amelyik a legrégebb óta várakozik. Nincs kiéheztetés. Osztott záraknak elsőségadás: először az összes várakozó osztott zárat engedélyezzük. Ezután egy módosító zárolást engedélyezünk, ha vára-kozik ilyen. A kizárólagos zárolást csak akkor engedélyezzük, ha semmilyen más igény nincs. U és X esetén kiéheztetés. Felminősítésnek elsőségadás: Ha van olyan U zárral rendelkező tranz- akció, amely X zárrá való felminősítésre vár, akkor ezt engedélyezzük előbb.

25 Adatbáziselemekből álló hierarchiák kezelése
Ha fastruktúra tartozik az adatainkhoz: A zárolható elemek hierarchiája. Zárolás nagyobb elemekre (reláci-ók, sorok vagy egyedi sor) Azon adatok, amelyek önmagukban faszervezetűek. Például B-fák csomópontjai adatbáziselemek, akkor az eddigi zárolások szegényesek Többszörös szemcsézettségű zárak Bizonyos alkalmazásoknál a kis adatbáziselemek előnyösek, mások-nál a nagy elemek. Banki adatbázisnál, ha a relációk az adatbáziselemek, számlaegyenleg esetén kis konkurencia. A legtöbb tranzakció a számla egyenlegét vál-toztatja, egyszerre csak egy befizetés vagy kivétel. Jobb, ha egyedi ol-dalakat vagy adatblokkokat zérolunk. Ha minden egyes sorra biztosít-juk a zárolást nem érné meg. Dokumentumokból álló adatbázis. Az ABelem a teljes dokumentum.

26 A figyelmeztető zárak Az adatbáziselemek három szintje:
a relációk a legnagyobb zárolható elemek; minden reláció egy vagy több blokkból épül fel, amelyekben a soraik vannak minden blokk egy vagy több sort tartalmaz. A zárolási sémában a közönséges zárak S és X, a figyelmeztető zárak a közönséges zárak elé helyezett I előtaggal jelöljük (intention to). Ahhoz, hogy elhelyezzünk egy közönséges S vagy X zárat, a hierarchia gyökerénél kell kezdenünk. Ha már annál az elemnél tratunk, amelyet zárolni akarunk, akkor nem kell tovább folytatni, kérni kell az S vagy X zárolást arra. Ha az elem, amelyet zárolni szeretnénk lennebb van a hierarchiában, akkor elhelyezünk egy figyelmeztetést ezen csomóponton. (IS v. IX). Amikor a jelenlegi csomópontban levő zárat megkaptuk, akkor az ehhez tartozó utódcsomóponttal folytatjuk. 2 és 3-at folytatjuk, míg elérjük a keresett csomópontot.

27 Ha IS zárat kérünk egy N csomópontban, az N egyik leszármazottját szándékozunk olvasni. Ez akkor okozhat problémát, ha egy másik tranzakció korábban jogosulttá vált arra, hogy az N által reprezentált teljes adatbáziselemről egy új példányt készítsen, emiatt “Nem” talál-ható az X-hez tartozó sorban. Ha az N csomópont egy részelemét szándékozunk írni, meg kell aka-dályoznunk az N által képviselt teljes elem olvasását vagy írását. Ekkor “Nem”-et látunkaz S és X zármódok bejegyzéseiben. Más tranzakció, amely egy részelemet olvas vagy ír, a potenciális konf-liktusokat az adott szinten kezeli le, így IX nincs konfliktusban egy másik IX-el vagy egy IS-el az N-en. IS IX S X Igen Nem

28 Tekinstük a következő relációt: Film(cím, év, hossz, stúdióNév)
Tételezzük fel, hogy az egész relációra és az egyedi sorokra követe-lünk zárolást. T1 tartalmazza a következő kérést: SELECT * FROM Film WHERE cím LIKE ‘%Terminátor%’; Ez IS módon zárolja a teljes relációt. Ezután veszi az egyedi sorokat (pl. 8 film szerepel) és S módú zárolást ad ki ezekre. Feltételezve, hogy mialatt az első tranzakció fut, elkezdődik a T2 tranzakció, amelyik a sorok év komponensét változtatja meg: UPDATE Film SET év=1939 WHERE cím=‘Elfújta a szél’; A T2-nek szüksége van a reláció IX módú zárolására, ugyanis azt ter-vezi, hogy új értéket ír be egy sorba. Ez kompatibilis a T1 IS zárolásá-val, így engedélyezzük. Amikor a T2 elérkezik az Elfújta a szélhez tartozó sorhoz, ezen a soron nem talál zárat, így megkapja az X módú zárat és átírja a sort. Ha a T2 a Terminátort tartalmazó filmek vala-melyikéhez próbált volna új értéket beírni, akkor várnia kellett volna, míg a T1 felszabadítja az S zárakat.

29 Fantomok és a beszúrások helyes kezelése
Csak létező egyedeket tudunk zárolni. Példa T3 tranzakció: SELECT SUM(hossz) FROM Film WHERE stúdióNév=‘Disney’; IS zárolja a relációt és a Disney filmekhez tartozó összes sort S zárolja. Megjelenik egy T4 tranzakció, amelyik beszúr egy új Disney filmet. Ennek nincs szüksége zárolásokra, de a T3 eredményét helytelenre változtatja. Tegyük fel, hogy D1 és D2 korábban létező Disney filmek, és D3 a T4 által beszúrt új Disney film. L a T3 által kiszámított Disney-filmek hosszainak összege és legyen az a konzisztenciamegszorítás az adat-bázison, hogy az L-nek egyenlőnek kell lennie azon Disney-filmek hosszának az összegével, amelyek léteztek, amikor L-t utoljára kiszá-mítottuk. A probléma, hogy az új Disney-filmnek van egy fantom (phantom) sora, amelyet zárolni kellett volna. Megoldás: A sorok beszúrását és törlését az egész relációra vonatkozó írásként kell tekin-tenünk. Így a T4 tranzakciónak meg kell kapnia az X zárat a Film reláción. Így T4-nek várnia kell, míg T3 befejeződik.

30 B+-fák A B-fák automatikusan annyi indexszintet tartanak fenn, amennyi az indexelt fájl méretéhez szükséges. A B-fák úgy kezelik az általuk használt blokkokban az üres helyeket, hogy valamennyi blokk legalább félig ki van használva. Az indexhez soha nem kellenek túlcsordulásblokkok.

31 Faprotokoll Az adatbáziselemek diszjunkt adatdarabok, csak a szülőkön keresztül lehet elérni egy csomópontot. A B-fák ilyen típusú adatok fontos pél-dái. Fa alapú zárolások indítékai: Tekintsünk egy B-fa indexet olyan rendszerben, amely az egyedi csomópontokat (vagyis blokkokat) zá-rolható adatbáziselemekként kezeli. A csomópont a zárolás szemcsézettségének megfelelő szintje, nem előnyös kisebb szint. Ha a teljes B-fát kezeljük adatbáziselemként, ez megakadályozza az index konkurens használatát. A zármódok szabványos halmazának használata, valamint a 2FZ, akkor a B-fa konkurens használata szinte lehetetlen. A B-fánál a legtöbb lehetőség a korai feloldása a gyökéren levő zárnak. A megoldás egy speciális protokoll, ami ellentmond a 2FZ-nek, de kihasználja azt a tényt, hogy az elemekhez való hozzáférés lefelé halad a fán, a sorbarendezhetőség biztosítása érdekében.

32 Faszerkezetű adatok hozzáférési szabályai
A következő megszorítások a zárakon a faprotokollt adják. Egyféle zár van, az li(X). A tranzakciók konzisztensek, az ütemezések jogsze-rűek, nincs kétfázisú zárolási követelmény a tranzakciókon. Egy tranzakciónak az első zárja a fa bármely csomópontján lehet. Rákövetkező zárakat csak akkor lehet szerezni, ha a tranzakciónak jelenleg van zárja a szülő csomóponton. A csomópontok zárját bármikor feloldhatjuk. Egy tranzakció nem zárolhatja újból azt a csomópontot, amelyen feloldotta a zárat, még akkor sem, ha még tartja a csomópont szülőjén a zárat. Miért működik a faprotokoll? A faprotokoll az ütemezésben részt vevő tranzakciókon egy soros sorrendet kényszerít ki. Definiáljuk a megelőzési sorrendet: Ti<S Tk az S ütemezésben, ha Ti és Tk közösen zárolnak egy csomópontot, de Ti zárolja a csomópontot először.

33 A C B D E F G Zárolható elemekből álló fa

34 T1 T2 T3 l1(A); r1(A); l1(B); r1(B); l1(C); r1(C); w1(A); u1(A); l1(D); r1(D); w1(B); u1(B); l2(B); r2(B); l3(E); r3(E); w1(D); u1(D); w1(C); u1(C); l2(E); Elutasítva l3(F); r3(F); w3(F); u3(F); l3(G); r3(G);

35 T1 T2 T3 w3(E); u3(E); l2(E); r2(E); w3(G); u3(G); w2(B); u2(B); w2(E); u2(E); 1 3 2 A megelőzési gráf Ha két tranzakció közösen zárol néhány elemet, akkor ugyan-abban a sorrendben zárolják mindegyiket.

36 Konkurenciavezérlés időbélyegzőkkel
Két módszer, ami különbözik a zárolástól: Időbélyegzés (timestamping). Minden tranzakcióhoz hozzárende-lünk egy időbélyegzőt, minden adatbáziselem utolsó olvasását és írá-sát végző tranzakció időbélyegzőjét rögzítjük, összehasonlítjuk az értékeket, hogy biztosítsuk, hogy a tranzakciók időbélyegzőinek meg-felelő soros ütemezés ekvivalens legyen a tranzakciók aktuális ütemezésével. Érvényesítés (validation). Megvizsgáljuk a tranzakciók időbélyeg-zőit és az adatbáziselemeket, amikor a tranzakció véglegesítésre kerül. Az a soros ütemezés, amely az érvényesítési idejük alapján rendezi a tranzakciókat, ekvivalens kell legyen az aktuális ütemezéssel. Mindkét megközelítés optimista, mert feltételezi, hogy nem fordulhat elő nem sorba rendezhető viselkedés. Csak akkor tisztáz, ha a megsze-gés nyilvánvaló. Az optimista megközelítés abortál és újraindit, a pesszimista késlelteti a tranzakciókat.

37 Időbélyegzők Az ütemezőnek minden egyes T tranzakcióhoz hozzá kell rendelni egy egyedi számot, TS időbélyegzőt (timestamp). Növekvő sorrendben kell kiadni abban az időpontban, amikor a tranzakció az elindításáról először értesíti az ütemezőt. Az időbélyegző generálása: A rendszeróra felhasználásával, feltéve, hogy az ütemező nem olyan gyors, hogy két tranzakcióhoz ugyanazt az időbélyeget rendeljen. Az ütemező karbantart egy számlálót. Minden alkalommal, mikor egy tranzakció elindul, a számláló növekszik 1-el, és ez az új érték lesz a tranzakció időbélyegzője. Egy később indított tranzakció nagyobb időbélyegzőt kap. RT(X), az X olvasási ideje (read time), a legmagasabb időbélyegző, ami egy olyan tranzakcióhoz tartozik, amelyik már olvasta X-et. WT(X), az X írási ideje (write time), legmagasabb időbélyegző C(X) az X véglegesítési bitje, amely akkor igaz, ha a legújabb tranzakció, amely az X-et írta, már véglegesítve van.

38 Fizikailag nem megvalósítható viselkedések
Túl késői olvasás: a T tranzakió megpróbálja olvasni az X adatbázis- elemet, de az X írási ideje azt jelzi, hogy az X jelenlegi értékét azután írtuk, miután a T-t már elméletileg vérehajtottuk. Vagyis TS(T)< WT(T). Az alábbi ábrán a vízszintes tengely jelenti a valós időt. A pontozott vonalak kapcsolják össze az aktuális eseményt azzal az idő-ponttal, amikor a tranzakciók időbélyegzője szerint végre kellett volna hajtani az eseményt. T-t abortáljuk ebben az esetben, majd újraindítjuk. U írja X-et T olvassa X-et T indítása U indítása

39 2.Túl késői írás: A T tranzakció megpróbálja írni az X adatbázis-elemet, de az X olvasási ideje azt jelzi, hogy van egy másik tranzakció is, amelynek a T által beírt értket kellene olvasni, ám ehelyett más értékeket olvas. Vagyis WT(X)<TS(T)<RT(X). Amikor T megpró-bálja írni X-et, úgy találjuk, hogy RT(X)>TS(T), ami azt jelenti, hogy az U tranzakció már belovasta X-et, amelyet elméletileg a T-nél később kellett volna elvégeznie. Valamint úgy találjuk, hogy WT(X)< TS(T), ami azt jelenti, hogy semelyik más tranzakció sem írta X-et, amellyel felülírta volna a T általi értéket, így érvényesítette volna a T hatását és olyan érték került volna az X-be, amelyet az U beolvashat. U olvassa X-et T írja X-et T indítása U indítása

40 Az ütemezőnek egy T tranzakciótól érkező olvasási vagy írási kérésre adott válaszában az alábbi választásai lehetnek: Engedélyezi a kérést. Abortálja T-t és egy új időbélyegzővel újraindítja (rollback) Késlelteti T-t és később dönti el, hogy abortálja a T-t vagy engedélyezi a kérést Időbélyegzők és zárolások. Időbélyegzők olvasási tranzakcióknál: A zárolások gyakran késleltetik a tranzakciókat azzal, hogy a zárakra várnak és még holtpontok is kialakulhatnak, amikor néhány tranzak-ció hosszú ideje várakozik és ezekután az egyiket vissza kell görgetni Ha konkurens tranzakciók gyakran olvasnak és írnak közös elemeket, akkor a visszagörgetés lesz gyakori, ami még több késedelmet okoz, mint egy zárolási rendszer. Piaci rendszer kompromisszum: az ütemező felosztja olvasási tranz-akciókra és olvasási/írási tranzakciókra.

41 Konkurenciavezérlés érvényesítéssel
Az érvényestés (validation) az optimista konkurenciavezérlés másik típusa, amelyben a tranzakcióknak megengedjük, hogy zárolások nél-kül hozzáférjenek az adatbázishoz és a megfelelő időben ellenőrizzük a tranzakció sorbarendezető viselkedését. A tranzaciókat három fázisban hajtjuk végre: Olvasás. Az első fázisban a tranzakciók beolvassák az adatbázisból az összes elemet az olvasási halmazba. A tanzakció kiszámítja a lokális címeken az összes olyan eredményt, amelyet be fog írni. Érvényesítés. Ebben a fázisban összehasonlítja az olvasási és írási halmazait a többi tranzakcióéval. Ha érvényesítési hibát jelez, akkor a tranzakciót visszagörgetjük, másképp folytatódik a köv. fázissal. Írás. A harmadik fázisban a tranzakció az írási halmzban levő ele-mek értékeit beírja az adatbázisba.

42 A konkurenciavezérlések összehasonlítása
Zárak: A zártábla által lefoglalt tár a zárolt adatbáziselemek számá-val arányos. Időbélyegzők: A zártáblával analóg táblában tudjuk tárolni az olva-sási és írási időket, amelyben csak a legújabban elért adatbáziselemek szerepelnek. Érvényesítés. Tárat használunk az időbélyegzőkhöz és minden jelen-legi aktív tranzakció olvasási/írási halmazaihoz hozzávéve még egy pár olyan tranzakciót, amelyek azután fejeződnek be, miután vala-melyik jelenlegi aktív tranzakció elkezdődött.

43 Bibliográfia Garcia-Molina H.-Ullman J.D.-Widom J. Adatbázisrendszerek megvalósítása, Panem-John Wiley & Sons pp


Letölteni ppt "Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely"

Hasonló előadás


Google Hirdetések