DBMS párhuzamosítás vezérlése: Zárolás és időbélyeg alapú protokollok
⚡ Okos összefoglaló
Az adatbázis-kezelő rendszerek párhuzamosítás-vezérlése (PCP) kezeli az egyidejű tranzakciókat, így azok pontosan, az adatintegritás megsértése nélkül futnak. Megakadályozza az olyan anomáliákat, mint az elveszett frissítések és a piszkos olvasások, zárolásalapú, kétfázisú, időbélyegzőalapú és validációalapú protokollok segítségével, amelyek garantálják a szerializálható eredményeket.

Mi az a párhuzamosság-vezérlés?
Egyidejűség ellenőrzése Az adatbázis-kezelő rendszerben az „adatbázis-kezelés” egy olyan eljárás, amely egyidejű műveleteket kezel egymással ütközés nélkül. Biztosítja, hogy az adatbázis-tranzakciók egyidejűleg és pontosan kerüljenek végrehajtásra, így helyes eredményeket produkálva anélkül, hogy az adott adatbázis adatintegritását megsértené.
Az egyidejű hozzáférés meglehetősen egyszerű, ha minden felhasználó csak adatokat olvas, mivel így nem zavarhatják egymást. Azonban minden gyakorlati adatbázisban keverednek a READ és WRITE műveletek, így a párhuzamosság kihívást jelent.
Az adatbázis-kezelő rendszerek (DBMS) párhuzamosságvezérlését az ilyen jellegű konfliktusok kezelésére használják, amelyek többnyire többfelhasználós rendszerekben fordulnak elő. A párhuzamosságvezérlés ezért az egyik legfontosabb eleme egy olyan adatbázis megfelelő működésének, ahol két vagy több tranzakció fut egyszerre, és ugyanazon adatokhoz való hozzáférést igényel. Kéz a kézben működik a következőkkel: tranzakciókezelés, amely meghatározza azokat a munkaegységeket, amelyeket a párhuzamosságvezérlésnek biztonságosan össze kell illesztenie.
A párhuzamosság lehetséges problémái
Íme néhány probléma, amellyel valószínűleg szembesülhet megfelelő DBMS párhuzamosságvezérlés nélkül:
- Elveszett frissítések akkor fordul elő, amikor több tranzakció választja ki ugyanazt a sort, és a kiválasztott érték alapján frissíti azt.
- Nem véglegesített függőség (piszkos olvasás) akkor történik, amikor egy második tranzakció kiválaszt egy olyan sort, amelyet egy másik, még nem véglegesített tranzakció frissített.
- Nem ismételhető olvasás akkor fordul elő, amikor egy második tranzakció többször is hozzáfér ugyanahhoz a sorhoz, és minden alkalommal más adatokat olvas be.
- Helytelen összefoglaló akkor fordul elő, amikor az egyik tranzakció egy ismétlődő adatelem összes előfordulásának értékét összegzi, míg egy második tranzakció ezen példányok közül néhányat frissít. Az így kapott összegzés nem tükrözi a helyes eredményt.
Miért érdemes párhuzamos módszert használni?
A párhuzamosságvezérlési módszer használatának okai a DBMS-ben:
- Kölcsönös kizáráson keresztüli izoláció alkalmazása az ütköző tranzakciók között.
- Az olvasási-írási és írási-írási ütközési problémák megoldása.
- Az adatbázis konzisztenciájának megőrzése a végrehajtási korlátozások folyamatos érvényesítésével.
- Az egyidejű tranzakciók közötti interakció szabályozása, párhuzamosság-szabályozási sémák segítségével.
- A szerializálhatóság biztosításának elősegítése érdekében.
Példa
Tegyük fel, hogy két ember egyszerre megy el egy elektronikus kioszkhoz, hogy mozijegyet vegyen ugyanarra a filmre és ugyanarra az időpontra.
Azonban az adott előadásra már csak egy szabad ülőhely van a moziban. Párhuzamos vezérlés nélkül lehetséges, hogy mindkét mozilátogató végül vásárol jegyet. A párhuzamos vezérlés ezt nem teszi lehetővé. Mindkét mozilátogató továbbra is hozzáférhet a moziülés-adatbázisban található információkhoz, de a párhuzamos vezérlés csak annak a vevőnek biztosít jegyet, aki először fejezi be a tranzakciós folyamatot.
Egyidejűség-ellenőrzési protokollok
A különböző párhuzamosságvezérlési protokollok eltérő kompromisszumokat kínálnak az általuk megengedett párhuzamosság mennyisége és az általuk okozott többletterhelés között. A DBMS-ekben használt fő párhuzamosságvezérlési technikák a következők:
- Zároláson alapuló protokollok
- Kétfázisú zárolási protokoll
- Időbélyeg alapú protokollok
- Érvényesítésen alapuló protokollok
Mindegyiket sorban megvizsgáljuk az alábbiakban, kezdve a legszélesebb körben használt, zár alapú protokollokkal.
Zároláson alapuló protokollok
Zár alapú protokollok A DBMS-ben a zárolásalapú protokollok olyan mechanizmust alkotnak, amelyben egy tranzakció nem tud olvasni vagy írni egy adatelemet, amíg megfelelő zárolást nem kap. A zárolásalapú protokollok segítenek kiküszöbölni a párhuzamossági problémát azáltal, hogy egy adott adatelemet egyetlen tranzakcióhoz zárolnak vagy izolálnak.
A zárolás egy adatelemhez társított adatváltozó, amely jelzi, hogy milyen műveletek hajthatók végre rajta. A zárolások segítenek szinkronizálni az adatbáziselemekhez való hozzáférést párhuzamos tranzakciók során. Minden zárolási kérés a párhuzamosság-vezérlés kezelőjéhez érkezik, és a tranzakciók csak a zárolási kérés engedélyezése után folytatódnak.
Bináris zárak: Egy adatelem bináris zárolása lehet zárolt vagy feloldott állapotban.
Megosztott/Kizárólagos: Ez a zárolási mechanizmus a felhasználásuk alapján választja szét a zárakat. Ha egy zár írási művelet végrehajtásához szükséges, akkor azt kizárólagos zárnak nevezzük.
1. Megosztott zár (S): A megosztott zárat írásvédett zárnak is nevezik. Megosztott zár esetén az adatelem megosztható a tranzakciók között, mivel egyiküknek sincs engedélye az elem frissítésére. Például, ha két tranzakció egy személy számlaegyenlegét olvassa, a adatbázis egy megosztott zár elhelyezésével lehetővé teszi az olvasást. Ha egy másik tranzakció frissíteni szeretné az egyenleget, a megosztott zár megakadályozza ezt, amíg az olvasás be nem fejeződik.
2. Exkluzív zár (X): Kizárólagos zárolással egy adatelem olvasható és írható is. Kizárólagos, és nem lehet egyidejűleg ugyanazon az adatelemen tárolva. Az X-zárolást a lock-x utasítással lehet kérni. Például, amikor egy tranzakciónak frissítenie kell egy számlaegyenleget, ezt egy X-zár elhelyezésével lehet engedélyezni; egy második tranzakció, amely olvasni vagy írni szeretne, ezután megakadályozásra kerül.
3. Egyszerűsített zárolási protokoll: Ez lehetővé teszi a tranzakciók számára, hogy minden objektumra zárolást kapjanak a művelet megkezdése előtt. A tranzakciók az írási művelet befejezése után feloldhatják az adatelem zárolását.
4. Előzetes zárolás igénylése: Ez a protokoll kiértékeli a műveleteket, és létrehoz egy listát a végrehajtás megkezdéséhez szükséges adatelemekről. Amikor minden zárolás engedélyezett, a tranzakció végrehajtódik, és a műveletek befejezése után az összes zárolás feloldásra kerül.
Éhezés: Az éhezés az a helyzet, amikor egy tranzakció határozatlan ideig várakozik a zárolás megszerzésére. Ennek oka lehet a zárolt elemek rosszul kezelt várakozási sémája, erőforrás-szivárgás, vagy ugyanazon tranzakció ismételt áldozatként való kiválasztása.
Holtpont: A holtpont olyan helyzetet jelöl, amelyben két vagy több folyamat egymásra vár egy erőforrás felszabadítása érdekében, körkörös láncot alkotva.
Kétfázisú zárolási (2PL) protokoll
Az Kétfázisú zárolási protokollA 2PL néven is ismert párhuzamosságvezérlési módszer, amely a tranzakcióadatokra alkalmazott zárolással biztosítja a szerializálhatóságot, ami megakadályozza, hogy más tranzakciók egyszerre hozzáférjenek ugyanahhoz az adathoz.
A kétfázisú zárolási protokoll lehetővé teszi, hogy minden tranzakció két lépésben kezdeményezzen zárolási vagy feloldási kérelmet:
- Növekedési fázis: Ebben a fázisban egy tranzakció kaphat zárakat, de előfordulhat, hogy nem old fel zárakat.
- Zsugorodási fázis: Ebben a fázisban egy tranzakció feloldhat zárakat, de új zárat nem kaphat.
Igaz, hogy a 2PL szerializálhatóságot kínál. Ez azonban nem garantálja, hogy nem következnek be holtpontok. A fenti ábrán a lokális és globális holtpont-érzékelők holtpontokat keresnek, és a tranzakciók kezdeti állapotba való visszaállításával oldják fel azokat.
Szigorú kétfázisú zárolási módszer
A Strict 2PL majdnem ugyanolyan, mint a 2PL. Az egyetlen különbség az, hogy a Strict-2PL soha nem oldja fel a zárolást használat után. Minden zárolást a véglegesítési pontig megtart, és a folyamat befejeztével egyszerre oldja fel azokat.
Központosított 2PL
A centralizált 2PL rendszerben egyetlen telephely felelős a zárkezelési folyamatért. Csak egyetlen zárkezelővel rendelkezik a teljes adatbázis-kezelő rendszerhez.
Elsődleges példány 2PL
Az Elsődleges Másolat 2PL mechanizmusban számos zárkezelő van elosztva különböző telephelyeken, és egy adott zárkezelő felelős egy adott adatelem-készlet zárolásának kezeléséért. Amikor az elsődleges másolat frissül, a változás átkerül a slave-ekre.
Elosztva 2PL
Ebben a mechanizmusban a zárkezelők minden telephelyre el vannak osztva, és felelősek az adott telephelyen található adatok zárainak kezeléséért. Ha nincsenek adatok replikálva, akkor ez egyenértékű a 2PL elsődleges másolatával. Az elosztott 2PL kommunikációs költségei jóval magasabbak, mint a 2PL elsődleges másolatáé.
Időbélyeg alapú protokollok
Az Időbélyegző alapú protokoll A DBMS-ben egy olyan algoritmus, amely a rendszeridőt vagy egy logikai számlálót használ időbélyegként az egyidejű tranzakciók végrehajtásának szerializálására. Biztosítja, hogy minden ütköző olvasási és írási művelet időbélyeg sorrendben kerüljön végrehajtásra.
Ebben a módszerben a régebbi tranzakció mindig elsőbbséget élvez. A rendszeridőt használja a tranzakció időbélyegének meghatározásához, és ez a leggyakrabban használt párhuzamos protokoll. A zárolásalapú protokollok a konfliktusos tranzakciók sorrendjét kezelik végrehajtásukkor; az időbélyegzőalapú protokollok a konfliktusokat a művelet létrehozásakor kezelik.
Példa:
Suppose there are three 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 T2 and lastly T3.
Előnyök:
- Az ütemtervek sorosíthatók, akárcsak a 2PL protokollok.
- Nincs várakozás a tranzakcióra, ami kiküszöböli a patthelyzetek lehetőségét.
Hátrányok: Az éhezés akkor lehetséges, ha ugyanaz a tranzakció újraindul, majd folyamatosan megszakad.
Validáción alapuló protokoll
Az Validáción alapuló protokoll A DBMS-ben az optimista konkurenciavezérlési technikaként is ismert módszer a tranzakciók közötti konkurenciaütközések elkerülésére. Ebben a protokollban a tranzakcióadatok helyi másolatai frissülnek, nem pedig maguk az adatok, ami kevesebb interferenciát eredményez a végrehajtás során.
A validáción alapuló protokoll három fázisban kerül végrehajtásra:
- 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 adatértékek beolvashatók egy tranzakcióval, de az írási műveletek vagy 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 adatokat ellenőrzik, hogy a frissítések alkalmazása nem sérti-e a szerializálhatóságot.
Fázis írása
Az írási fázisban a frissítések sikeres érvényesítés esetén kerülnek alkalmazásra az adatbázisban; ellenkező esetben a frissítések elvetik, és a tranzakciót visszavonja a rendszer.
Párhuzamossági vezérlési protokollok összehasonlítása
A négy protokollcsalád eltérő módon közelíti meg a tranzakciók ütközésének gyakoriságát. Az alábbi táblázat összefoglalja, hogy melyik protokollcsalád hova illik.
| Protokoll | Megközelítés | Holtpont | Legjobb, amikor |
|---|---|---|---|
| Zár alapú | Pesszimista, zárak a hozzáférés előtt | Lehetséges | Gyakoriak a konfliktusok |
| Kétfázisú zárás | Pesszimista, növekvő és zsugorodó fázisok | Lehetséges | Sorozatképesíthetőség szükséges |
| Időbélyeg alapú | Rendelések időbélyeg szerint | Holtpontmentes | A rendelés fontos, a várakozás költséges |
| Validációalapú | Optimista, írás előtt validálj | Holtpontmentes | Ritkák a konfliktusok |
Röviden, a zárolásalapú és a 2PL protokollok feltételezik, hogy az ütközések gyakoriak, és előre megakadályozzák azokat, míg az időbélyegző és az érvényesítési protokollok feltételezik, hogy az ütközések ritkák, és csak akkor oldják meg őket, amikor megjelennek.
Egy jó párhuzamos protokoll jellemzői
Egy ideális párhuzamosságvezérlési mechanizmus céljai a következők:
- Ellenállónak 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átozásokat kell érvényesítenie a tranzakciók atomi műveleteinek szerkezetére vonatkozóan.

