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.

  • 👥 Fő cél: A párhuzamosságvezérlés lehetővé teszi, hogy sok tranzakció egyszerre érintse meg a megosztott adatokat, miközben megtartja aping az adatbázis konzisztens.
  • ⚠️ Megelőzött anomáliák: Az elveszett frissítés, a piszkos olvasás, a nem megismételhető olvasás és a helytelen összefoglalás a négy probléma, amit megszüntet.
  • 🔒 Zárolásalapú: A megosztott és kizárólagos zárak szabályozzák, hogy egy adatelem mások olvashatják-e vagy írhatják-e.
  • 🔁 Kétfázisú zárás: A növekvő fázis zárolásokat szerez, a zsugorodó fázis pedig feloldja azokat, ami garantálja a szerializálhatóságot.
  • ⏱️ Időbélyeg alapú: A régebbi tranzakciók elsőbbséget élveznek, az ütköző műveleteket a rendszer időbélyege alapján rendezve.
  • Validáción alapuló: Az optimista vezérlés helyi másolatokon működik, és csak az írási fázis előtt érvényesíti az adatokat.
  • 🎯 Cél: Maximális párhuzamos működés minimális terheléssel, ellenálló a helyszíni és kommunikációs hibákkal szemben.

Zárolási és időbélyegző ütemezők adatbázis-kezelő rendszerekben

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.

Két fázisú zárás növekvő és zsugorodó fázisokban

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:

  1. Olvassa el a fázist
  2. Érvényesítési fázis
  3. 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.

GYIK

Egy megosztott zár egyidejű olvasást engedélyez, de írást nem, így több tranzakció is tárolhatja. Egy kizárólagos zár olvasást és írást is engedélyez, de nem osztható meg, így csak egy tranzakció tárolhatja.

A 2PL garantálja a szerializálhatóságot, de nem a holtpontok elkerülését. Két tranzakció továbbra is várakozhat egymás zárolására, így továbbra is szükség van egy külön észlelési vagy időtúllépési mechanizmusra.

Amikor a konfliktusok ritkák. Az érvényesítésen alapuló vezérlés elkerüli a zárolási többletterhelést, és lehetővé teszi a tranzakciók szabad futtatását, csak a véglegesítéskor ellenőrzve azokat. Nagy versengés esetén a gyakori visszagörgetések miatt munkát pazarol.

A mesterséges intelligencia a korábbi munkaterheléseket elemzi, hogy megjósolja, mely tranzakciók ütköznek, majd olyan izolációs szintet vagy zárolási granularitást javasol, amely növeli az átviteli sebességet, miközben megtartja aping az eredmények sorosíthatók.

Soha nem kényszeríti a tranzakciók várakozását. Az ütköző műveleteket vagy az időbélyegző sorrend engedélyezi, vagy a tranzakció megszakad és újraindul, így nem alakulhat ki körkörös várakozás, és nem fordulhat elő holtpont.

Foglald össze ezt a bejegyzést a következőképpen: