DBMS Concurrency Control: Timestamp & Lock-Based Protocols
Mi az a párhuzamosság-vezérlés?
Egyidejűség ellenőrzése Az adatbázis-kezelő rendszerben egy olyan eljárás, amely egyidejű műveleteket kezel anélkül, hogy konfliktusba kerülnének egymással. Biztosítja, hogy az adatbázis-tranzakciókat egyidejűleg és pontosan hajtsák végre a megfelelő eredmények elérése érdekében, anélkül, hogy megsértenék az adott adatbázis adatintegritását.
Az egyidejű hozzáférés meglehetősen egyszerű, ha minden felhasználó csak olvassa az adatokat. Semmiképpen sem zavarhatják egymást. Bár minden gyakorlati adatbázis esetében a READ és WRITE műveletek keveréke lenne, ezért az egyidejűség kihívást jelent.
A DBMS Concurrency Control az ilyen konfliktusok kezelésére szolgál, amelyek többnyire többfelhasználós rendszerek esetén fordulnak elő. Ezért a Concurrency Control a legfontosabb eleme egy olyan adatbázis-kezelő rendszer megfelelő működésének, ahol két vagy több adatbázis-tranzakciót hajtanak végre egyidejűleg, amelyekhez ugyanazon adatokhoz kell hozzáférni.
A párhuzamosság lehetséges problémái
Íme néhány probléma, amelyekkel valószínűleg szembesülni fog a DBMS Concurrency Control módszer használata során:
- Elveszett frissítések akkor fordul elő, ha több tranzakció választja ki ugyanazt a sort, és frissíti a sort a kiválasztott érték alapján
- Nem véglegesített függőségi problémák akkor fordulnak elő, ha a második tranzakció olyan sort választ ki, amelyet egy másik tranzakció frissít (piszkos olvasmány)
- Nem ismételhető olvasás akkor fordul elő, amikor egy második tranzakció többször próbál hozzáférni ugyanahhoz a sorhoz, és minden alkalommal különböző adatokat olvas be.
- Hibás összefoglaló probléma akkor fordul elő, amikor egy tranzakció összegzi az ismétlődő adatelem összes példányának értékét, és a második tranzakció frissíti az adott adatelem néhány példányát. Ebben a helyzetben a kapott összefoglaló nem tükrözi a helyes eredményt.
Miért érdemes a párhuzamossági módszert használni?
A párhuzamossági vezérlési módszer használatának oka a DBMS:
- Az egymásnak ellentmondó tranzakciók közötti kölcsönös kizáráson keresztül történő elkülönítés alkalmazása
- Írás-olvasási és írási-írási konfliktusok megoldására
- Az adatbázis-konzisztencia megőrzése a végrehajtási akadályok folyamatos megőrzésével
- A rendszernek ellenőriznie kell az egyidejű tranzakciók közötti interakciót. Ezt a vezérlést párhuzamos vezérlési sémákkal érik el.
- A párhuzamosság-vezérlés segít a szerializálhatóság biztosításában
Példa
Tételezzük fel, hogy két ember, aki egyszerre megy az elektronikus kioszkokhoz, hogy mozijegyet vegyen ugyanarra a filmre és ugyanarra az időpontra.
A filmbemutatóra azonban csak egy hely maradt az adott színházban. A DBMS párhuzamosság-vezérlése nélkül előfordulhat, hogy mindkét mozilátogató jegyet vásárol. Az egyidejű ellenőrzési módszer azonban ezt nem teszi lehetővé. Mindkét mozilátogató továbbra is hozzáférhet a filmülések adatbázisába írt információkhoz. A párhuzamosság-ellenőrzés azonban csak annak a vevőnek biztosít jegyet, aki először fejezte be a tranzakciós folyamatot.
Egyidejűség-ellenőrzési protokollok
A különböző párhuzamossági vezérlőprotokollok különböző előnyöket kínálnak az általuk engedélyezett párhuzamosság és az általuk kiszabott általános költségek között. A DBMS-ben az alábbi egyidejűség-vezérlési technikák találhatók:
- Zároláson alapuló protokollok
- Kétfázisú zárolási protokoll
- Időbélyeg alapú protokollok
- Érvényesítésen alapuló protokollok
Zár-alapú protokollok
Zároláson alapuló protokollok A DBMS-ben egy olyan mechanizmus, amelyben a tranzakció nem tudja olvasni vagy írni az adatokat, amíg meg nem szerzi a megfelelő zárolást. A zárolás alapú protokollok segítenek kiküszöbölni az egyidejű tranzakciók párhuzamossági problémáját a DBMS-ben azáltal, hogy egy adott tranzakciót egyetlen felhasználó számára zárolnak vagy elkülönítenek.
A zár egy adatváltozó, amely egy adatelemhez van társítva. Ez a zár az adatelemen végrehajtható műveleteket jelenti. A DBMS-ben lévő zárolások segítik az adatbáziselemekhez való hozzáférés szinkronizálását egyidejű tranzakciókkal.
Minden zárolási kérés az egyidejűség-vezérlési menedzserhez érkezik. A tranzakciók csak a zárolási kérelem teljesítése után folytatódnak.
Bináris zárak: Az adatelem bináris zárolása zárolt vagy feloldott állapotú lehet.
Megosztott/exkluzív: Az ilyen típusú zárszerkezet a DBMS-ben a zárakat felhasználásuk alapján választja el. Ha egy adatelemen zárolást szereznek egy írási művelet végrehajtásához, azt kizárólagos zárolásnak nevezzük.
1. Megosztott zár (S):
A megosztott zárolást csak olvasható zárolásnak is nevezik. A megosztott zárral az adatelem megosztható a tranzakciók között. Ennek az az oka, hogy soha nem lesz jogosultsága az adatelem adatainak frissítésére.
Vegyünk például egy olyan esetet, amikor két tranzakció olvassa le egy személy számlaegyenlegét. A adatbázis megosztott zár elhelyezésével hagyja őket olvasni. Ha azonban egy másik tranzakció frissíteni kívánja az adott számla egyenlegét, a megosztott zárolás megakadályozza azt, amíg az olvasási folyamat véget nem ér.
2. Exkluzív zár (X):
Az Exclusive Lock segítségével egy adatelem olvasható és írható is. Ez kizárólagos, és nem tárolható egyidejűleg ugyanazon az adatelemen. Az X-lock kérése a lock-x utasítással történik. A tranzakciók feloldhatják az adatelem zárolását az írási művelet befejezése után.
Például amikor egy tranzakció során frissíteni kell egy személy számlaegyenlegét. Engedélyezheti ezt a tranzakciót, ha X zárat helyez rá. Ezért amikor a második tranzakció olvasni vagy írni akar, az exkluzív zár megakadályozza ezt a műveletet.
3. Egyszerűsített zárolási protokoll
Az ilyen típusú záralapú protokollok lehetővé teszik, hogy a tranzakciók minden objektumon zárolást kapjanak a működés megkezdése előtt. A tranzakciók feloldhatják az adatelem zárolását az írási művelet befejezése után.
4. Előigénylési zár
Az előkövetelési zárolási protokoll segít a műveletek kiértékelésében és a szükséges adatelemek listájának létrehozásában, amelyek szükségesek a végrehajtási folyamat elindításához. Abban a helyzetben, amikor minden zárolást engedélyeztek, a tranzakció végrehajtásra kerül. Ezt követően minden zár kiold, amikor minden művelete véget ért.
éhezés
Az éhezés az a helyzet, amikor egy tranzakciónak határozatlan ideig kell várnia a zár megszerzéséhez.
Az éhezés okai a következők:
- Amikor a zárolt elemek várakozási rendszere nincs megfelelően kezelve
- Erőforrás szivárgás esetén
- Ugyanazt a tranzakciót ismételten áldozatként választják ki
Holtpont
A holtpont egy adott helyzetre utal, amikor két vagy több folyamat várja egymást, hogy felszabadítsanak egy erőforrást, vagy kettőnél több folyamat várja az erőforrást egy körkörös láncban.
Kétfázisú zárolási protokoll
Kétfázisú zárolási protokoll A 2PL-protokoll néven is ismert a DBMS-ben a párhuzamosság-vezérlési módszer, amely biztosítja a szerializálhatóságot azáltal, hogy a tranzakciós adatokra zárolást alkalmaz, amely blokkolja a többi tranzakciót, hogy egyidejűleg hozzáférjenek ugyanazokhoz az adatokhoz. A kétfázisú zárolási protokoll segít kiküszöbölni a párhuzamossági problémát a DBMS-ben.
Ez a zárolási protokoll a tranzakció végrehajtási szakaszát három különböző részre osztja.
- Az első fázisban, amikor a tranzakció végrehajtása megkezdődik, engedélyre van szüksége a szükséges zárakhoz.
- A második rész az, ahol a tranzakció megkapja az összes zárat. Amikor egy tranzakció feloldja az első zárolását, elindul a harmadik fázis.
- Ebben a harmadik fázisban a tranzakció nem igényelhet új zárakat. Ehelyett csak a megszerzett zárakat oldja fel.
A kétfázisú zárolási protokoll lehetővé teszi, hogy minden tranzakció zárolási vagy feloldási kérést küldjön két lépésben:
- Növekedési fázis: Ebben a fázisban a tranzakció zárolásokat kaphat, de nem oldhat fel semmilyen zárat.
- Zsugorodási fázis: Ebben a fázisban a tranzakció feloldhatja a zárolást, de nem kap új zárolást
Igaz, hogy a 2PL protokoll szerializálhatóságot kínál. Ez azonban nem biztosítja, hogy ne forduljanak elő holtpontok.
A fenti ábrán látható, hogy a lokális és globális holtpont-érzékelők holtpontokat keresnek, és a tranzakciók kezdeti állapotukba való visszaállításával oldják meg azokat.
Szigorú kétfázisú zárolási módszer
A Strict-Two fázis zárrendszer szinte hasonló a 2PL-hez. Az egyetlen különbség az, hogy a Strict-2PL soha nem oldja fel a zárat a használat után. Tartja az összes zárat a véglegesítési pontig, és egyben feloldja az összes zárat, amikor a folyamat véget ért.
Központosított 2PL
A Centralized 2 PL-ben egyetlen hely felelős a zárkezelési folyamatért. Csak egy zárkezelője van a teljes DBMS-hez.
Elsődleges példány 2PL
Elsődleges másolat 2PL mechanizmus, sok zárkezelő van elosztva különböző helyeken. Ezt követően egy adott zárkezelő felelős az adatelemek zárának kezeléséért. Az elsődleges példány frissítése után a változás a szolgákba kerül.
Elosztva 2PL
Az ilyen típusú kétfázisú zárolási mechanizmusban a zármenedzserek az összes webhelyen el vannak osztva. Ők felelősek az adott webhely adatzárainak kezeléséért. Ha nem replikálnak adatokat, akkor az megegyezik a 2PL elsődleges példányával. A Distributed 2PL kommunikációs költségei meglehetősen magasabbak, mint az elsődleges 2PL példányé
Időbélyeg alapú protokollok
Időbélyeg alapú protokoll A DBMS-ben egy olyan algoritmus, amely a rendszeridőt vagy a logikai számlálót használja időbélyegzőként az egyidejű tranzakciók végrehajtásának sorba rendezésére. Az időbélyeg alapú protokoll biztosítja, hogy minden ütköző olvasási és írási művelet időbélyegző sorrendben kerül végrehajtásra.
Ebben a módszerben mindig a régebbi tranzakció élvez elsőbbséget. A rendszeridőt használja a tranzakció időbélyegének meghatározásához. Ez a leggyakrabban használt párhuzamossági protokoll.
A zárolás alapú protokollok segítenek az ütköző tranzakciók közötti sorrend kezelésében, amikor azok végrehajtásra kerülnek. Az időbélyeg alapú protokollok kezelik az ütközéseket, amint egy művelet létrejön.
Példa:
Suppose there are there transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Előnyök:
- Az ütemezések a 2PL protokollokhoz hasonlóan sorba rendezhetők
- Nincs várakozás a tranzakcióra, ami kiküszöböli a holtpontok lehetőségét!
Hátrányok:
Az éhezés lehetséges, ha ugyanazt a tranzakciót újraindítják és folyamatosan megszakítják
Validation Based Protocol
Validáció alapú protokoll A DBMS-ben az Optimistic Concurrency Control Technique néven is ismert egy módszer a tranzakciók egyidejűségének elkerülésére. Ebben a protokollban a tranzakciós adatok helyi másolatai frissülnek, nem pedig maguk az adatok, ami kevesebb interferenciát eredményez a tranzakció végrehajtása során.
Az érvényesítésen alapuló protokollt a következő három fázisban hajtják végre:
- Olvassa el a fázist
- Érvényesítési fázis
- Fázis írása
Olvassa el a fázist
Az olvasási fázisban az adatbázis adatértékei egy tranzakció által beolvashatók, de az írási művelet vagy a frissítések csak a helyi adatmásolatokra vonatkoznak, a tényleges adatbázisra nem.
Érvényesítési fázis
Az érvényesítési fázisban az adatok ellenőrzése megtörténik annak biztosítása érdekében, hogy a tranzakciófrissítések adatbázisra való alkalmazása során ne sérüljön-e meg a szerializálhatóság.
Fázis írása
Az írási fázisban a frissítések alkalmazásra kerülnek az adatbázisra, ha az érvényesítés sikeres, különben; a frissítések nem kerülnek alkalmazásra, és a tranzakció visszaállításra kerül.
A jó párhuzamossági protokoll jellemzői
Egy ideális párhuzamosság-vezérlő DBMS-mechanizmusnak a következő céljai vannak:
- Rugalmasnak kell lennie a helyszíni és kommunikációs hibákkal szemben.
- Lehetővé teszi a tranzakciók párhuzamos végrehajtását a maximális egyidejűség elérése érdekében.
- Tárolási mechanizmusainak és számítási módszereinek szerénynek kell lenniük a többletköltségek minimalizálása érdekében.
- Bizonyos korlátokat kell érvényesítenie a tranzakciók atomi műveleteinek szerkezetére vonatkozóan.
Összegzésként
- A párhuzamosság ellenőrzése az eljárás DBMS az egyidejű műveletek egymás közötti konfliktus nélküli kezelésére.
- Az elveszett frissítések, a piszkos olvasás, a nem megismételhető olvasás és a helytelen összegzési probléma olyan problémák, amelyekkel a párhuzamosság-ellenőrzés hiánya miatt szembesülnek.
- A zárolás alapú, kétfázisú, időbélyeg alapú és érvényesítés alapú a párhuzamosság-kezelési protokollok típusai
- A zár lehet megosztott (S) vagy exkluzív (X)
- A kétfázisú zárolási protokollnak, amelyet 2PL protokollt igénylő tranzakciónak is neveznek, zárolást kell kapnia, miután feloldotta az egyik zárat. 2 növekedési és zsugorodási fázisa van.
- Az időbélyeg alapú algoritmus időbélyeget használ az egyidejű tranzakciók végrehajtásának sorba rendezésére. A protokoll a Rendszeridő vagy logikai szám egy Időbélyeg.