Kétfázisú zárásSzerkesztés

A kétfázisú zárási protokoll szerint egy tranzakció a tranzakció végrehajtása során két különböző, egymást követő fázisban kezeli a zárjait:

  1. Bővülő fázis (más néven növekvő fázis): zárak megszerzése és zárak feloldása nem történik (a zárak száma csak növekedhet).
  2. Zsugorodó fázis (más néven zsugorodó fázis): a zárak felszabadulnak és nem szereznek zárakat.

A két fázis zárási szabályai a következőképpen foglalhatók össze: soha ne szerezzünk zárat egy zár felszabadítása után. A szerializálhatósági tulajdonság garantált egy olyan ütemterv esetében, amelynek tranzakciói engedelmeskednek ennek a szabálynak.

Tipikusan, explicit tudás nélkül egy tranzakcióban az 1. fázis végéről, csak akkor állapítható meg biztonságosan, ha egy tranzakció befejezte a feldolgozást és kérte a commitot. Ebben az esetben az összes zár egyszerre feloldható (2. fázis).

Konzervatív kétfázisú zárásSzerkesztés

A 2PL és a C2PL közötti különbség az, hogy a C2PL tranzakciók a tranzakciók megkezdése előtt megkapják az összes szükséges zárat. Ez biztosítja, hogy egy olyan tranzakció, amely már rendelkezik néhány zárolással, ne blokkolja a többi zárolásra várakozást. A konzervatív 2PL megakadályozza a holtpontokat.

Szigorú kétfázisú zárásSzerkesztés

Az S2PL protokoll betartásához egy tranzakciónak meg kell felelnie a 2PL-nek, és az írási (kizárólagos) zárakat csak azután kell feloldania, hogy befejeződött, azaz vagy lekötötték, vagy megszakították. Ezzel szemben az olvasási (megosztott) zárak a 2. fázisban rendszeresen felszabadulnak. Ez a protokoll nem megfelelő B-fákban, mert szűk keresztmetszetet okoz (miközben a B-fák mindig a szülő gyökérből kezdik a keresést).

Erős szigorú kétfázisú zárásSzerkesztés

vagy szigorú ütemezés, vagy szigorú ütemezés, vagy szigorú kétfázisú zárás

Az erős szigorú kétfázisú zárásnak (SS2PL) való megfelelés érdekében a zárási protokoll a tranzakció által alkalmazott írási (kizárólagos) és olvasási (megosztott) zárakat csak a tranzakció befejezése után szabadítja fel, azaz, csak azután, hogy mindkettő befejezte a végrehajtást (készen áll), és vagy elkötelezetté vagy megszakítottá vált. Ez a protokoll is megfelel az S2PL szabályainak. Az SS2PL-nek engedelmeskedő tranzakció úgy tekinthető, hogy az 1. fázis a tranzakció teljes végrehajtási ideje alatt tart, és nincs 2. fázis (vagy egy degenerált 2. fázis). Így valójában csak egy fázis marad, és a “kétfázisú” elnevezés a fogalom 2PL-ből való történelmi fejlődése és a 2PL mint szuperosztály miatt még mindig használhatónak tűnik. A menetrend SS2PL tulajdonságát Rigorozitásnak is nevezik. Ez egyben az ezzel a tulajdonsággal rendelkező ütemtervek osztályának neve is, és az SS2PL ütemtervet “szigorú ütemtervnek” is nevezik. A “Rigorozitás” kifejezés mentes a “kétfázisúság” felesleges örökségétől, valamint független bármilyen (zárási) mechanizmustól (elvileg más blokkolási mechanizmusok is felhasználhatók). A tulajdonság megfelelő zárolási mechanizmusát néha Rigorózus 2PL-nek nevezik.

Az SS2PL az S2PL egy speciális esete, azaz az ütemezések SS2PL osztálya az S2PL megfelelő alosztálya (minden SS2PL ütemezés egyben S2PL ütemezés is, de léteznek olyan S2PL ütemezések, amelyek nem SS2PL-ek).

Az SS2PL a legtöbb adatbázis-rendszerben az 1970-es évekbeli kezdetek óta a választott és alkalmazott egyidejűség-szabályozási protokoll. Számos helyzetben bizonyítottan hatékony mechanizmusnak bizonyult, és a szerializálhatóság mellett szigorúságot is biztosít (a kaszkádmentes helyreállíthatóság speciális esete), ami fontos a hatékony adatbázis-helyreállításhoz, valamint Commitment ordering (CO) az elosztott környezetekben való részvételhez, ahol CO-alapú elosztott szerializálhatósági és globális szerializálhatósági megoldásokat alkalmaznak. Mivel a CO egy részhalmaza, az elosztott SS2PL hatékony megvalósítása létezik elosztott zárkezelő (DLM) nélkül, míg az elosztott holtpontok (lásd alább) automatikusan megoldódnak. Az a tény, hogy a több adatbázis-rendszerekben alkalmazott SS2PL biztosítja a globális szerializálhatóságot, már évekkel a CO felfedezése előtt is ismert volt, de csak a CO-val értették meg az atomikus kötelezettségvállalási protokoll szerepét a globális szerializálhatóság fenntartásában, valamint az automatikus elosztott holtpontok feloldásának megfigyelését (lásd az elosztott SS2PL részletes példáját). Ami azt illeti, az SS2PL a helyreállíthatóság és a CO tulajdonságait örökölve sokkal jelentősebb, mint az, hogy a 2PL részhalmaza, amely önmagában, általános formájában, amellett, hogy egy egyszerű szerializálhatósági mechanizmust tartalmaz (a szerializálhatóságot azonban a CO is implikálja), nem ismert, hogy az SS2PL-nek más jelentős tulajdonságot adna. A 2PL általános formája, valamint a szigorúsággal kombinálva, azaz a szigorú 2PL (S2PL) a gyakorlatban nem ismert. A népszerű SS2PL nem követeli meg az “1. fázis végének” jelölését, mint a 2PL és az S2PL, és így egyszerűbben megvalósítható. Továbbá, az általános 2PL-től eltérően az SS2PL, mint már említettük, biztosítja a hasznos Strictness és Commitment ordering tulajdonságokat.

Az SS2PL számos változata létezik, amelyek különböző helyzetekben különböző szemantikájú lock-típusokat használnak, beleértve a tranzakció közbeni lock-típusváltás eseteit is. Figyelemre méltóak azok a változatok, amelyek több granularitású zárolást használnak.

  1. SS2PL vs. S2PL: Mindkettő biztosítja a szerializálhatóságot és a szigorúságot. Mivel az S2PL az SS2PL szuperosztálya, elvileg több párhuzamosságot biztosíthat. Gyakorlatilag azonban jellemzően nem észlelhető párhuzamossági előny (pontosan ugyanaz a zárás létezik mindkettőnél, gyakorlatilag nem sokkal korábbi zárfeloldással az S2PL esetében), és az S2PL-ben a tranzakció végétől elkülönített 1. fázis végi mechanizmussal való foglalkozás többletköltsége nem indokolt. Továbbá, míg az SS2PL biztosítja a Commitment orderinget, az S2PL nem. Ez magyarázza az SS2PL előnyben részesítését az S2PL-lel szemben.
  2. Főleg 1990 előtt, de utána is, számos cikkben és könyvben, pl. (Bernstein et al. 1987, 59. o.), a “Strict 2PL” (S2PL) kifejezést gyakran a “Release all locks only after transaction end” zárási protokollal definiálták, ami az SS2PL protokollja. Így a “Strict 2PL” nem lehetett ott a Strictness és a 2PL metszetének neve, amely nagyobb, mint az SS2PL protokoll által generált osztály. Ez zavart okozott. Az S2PL explicit meghatározásával, mint a Szigorúság és a 2PL metszete, az SS2PL új nevével, valamint az S2PL és az SS2PL osztályok explicit megkülönböztetésével a cikkek (Breitbart et al. 1991) és (Raz 1992) a zűrzavart kívánták tisztázni: az első a “Szigorúság”, a második az “SS2PL” nevet használta.”
  3. Az SS2PL-nél létezik egy általánosabb tulajdonság (egy ütemezési szuperosztály), a Strict commitment ordering (Strict CO, vagy SCO), amely szintén biztosítja mind a szerializálhatóságot, mind a szigorúságot, mind a CO-t, és hasonló zárási overheaddel rendelkezik. Az SS2PL-től eltérően az SCO nem blokkol írás-olvasás konfliktus esetén (az olvasási zár nem blokkolja az írási zár megszerzését; mind az SCO, mind az SS2PL ugyanúgy viselkedik az írás-olvasás és írás-írás konfliktusok esetén), ami egy esetleges késleltetett kötelezettségvállalás árán történik, és ilyen típusú konfliktus esetén az SCO rövidebb átlagos tranzakcióvégződési idővel és jobb teljesítménnyel rendelkezik, mint az SS2PL. Míg az SS2PL a fenti zárkompatibilitási táblázatnak engedelmeskedik, addig az SCO a következő táblázatnak:
Lock kompatibilitás a SCO számára
Lock type read-lock write-lock
read-lock write-lock
read-lock .lock
write-lock X X

Megjegyzendő, hogy bár az SCO minden zárat felold a tranzakció végén és betartja a 2PL zárási szabályokat, a SCO nem a 2PL részhalmaza, mivel a zárkompatibilitási táblázata eltérő. Az SCO lehetővé teszi a materializált írási-olvasási konfliktusokat két tranzakció között az 1. fázisukban, amit a 2PL nem enged meg az 1. fázisban (lásd a materializált konfliktusokról a sorozatképességben). Másrészt a 2PL más materializált konfliktustípusokat is megenged a 2. fázisban, amelyeket a SCO egyáltalán nem engedélyez. Ez együttesen azt jelenti, hogy a 2PL és az SCO ütemezési osztályok összehasonlíthatatlanok (azaz egyik osztály sem tartalmazza a másik osztályt).

Összefoglaló – Az osztályok közötti kapcsolatokSzerkesztés

Ütemezési osztályok tartalmazása: Az A osztályból a B osztályba mutató nyíl azt jelzi, hogy az A osztály szigorúan tartalmazza a B-t; az osztályok közötti irányított út hiánya azt jelenti, hogy az osztályok összehasonlíthatatlanok. Egy tulajdonság eredendően blokkoló, ha csak a tranzakció adatelérési műveleteinek blokkolásával érvényesíthető, amíg más tranzakciókban bizonyos események be nem következnek. (Raz 1992)

Minden olyan két ütemezési osztály között (amelyeket az ütemezési tulajdonságaik határoznak meg), amelyeknek közös ütemezéseik vannak, vagy az egyik tartalmazza a másikat (szigorúan tartalmazza, ha nem egyenlőek), vagy összehasonlíthatatlanok. A 2PL-osztályok és más fontosabb ütemezési osztályok közötti tartalmazási kapcsolatokat a következő diagram foglalja össze. A 2PL és alosztályai eredendően blokkoló jellegűek, ami azt jelenti, hogy nem léteznek optimista megvalósítások számukra (és amikor “optimista 2PL”-t említenek, az egy másik mechanizmusra utal, amelynek az osztálya olyan ütemterveket is tartalmaz, amelyek nem tartoznak a 2PL osztályba).

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.