Mi az egyidejűség-ellenőrzés?
Az egyidejűség ellenőrzése az adatbázis-kezelő rendszerben egyidejű műveletek kezelésének folyamata anélkül, hogy egymással ütközne. Biztosítja, hogy az adatbázis-tranzakciókat egyidejűleg és pontosan hajtják végre a helyes eredmények érdekében, anélkül, hogy megsértenék a megfelelő adatbázis adatintegritását.
Az egyidejű hozzáférés meglehetősen egyszerű, ha az összes felhasználó csak adatokat olvas. Semmilyen módon nem avatkozhatnak be egymásba. Bár bármilyen gyakorlati adatbázis esetében a READ és a 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 rendszer esetén fordulnak elő. Ezért az egyidejűség ellenőrzése a legfontosabb eleme az adatbázis-kezelő rendszer megfelelő működésének, ahol egyszerre két vagy több adatbázis-tranzakciót hajtanak végre, amelyekhez ugyanahhoz az adathoz kell hozzáférés.
Ebben az oktatóanyagban megtanulja
- Mi az egyidejűség-ellenőrzés?
- Az egyidejűség lehetséges problémái
- Miért érdemes használni a Concurrency módszert?
- Egyidejűség-ellenőrzési protokollok
- Lock-alapú protokollok
- Kétfázisú (2PL) protokoll
- Időbélyeg-alapú protokollok
- Validáláson alapuló protokoll
- A jó párhuzamossági protokoll jellemzői
Az egyidejűség lehetséges problémái
Íme néhány olyan probléma, amellyel valószínűleg szembesülnie kell a DBMS egyidejűség-ellenőrzési módszer használata során:
- Elveszett frissítések akkor fordulnak elő, amikor több tranzakció választja ki ugyanazt a sort, és a sort a kiválasztott érték alapján frissíti
- Nem kötelező függőségi problémák merülnek fel, amikor a második tranzakció kiválaszt egy sort, amelyet egy másik tranzakció frissít ( piszkos olvasás )
- A megismételhetetlen olvasás akkor következik be, amikor egy második tranzakció többször megpróbálja elérni ugyanazt a sort, és minden alkalommal más adatokat olvas.
- Helytelen összefoglaló probléma merül fel, amikor egy tranzakció összefoglalja az ismételt adatelem összes példányának értékét, és a második tranzakció az adott adatelem néhány példányát frissíti. Ebben a helyzetben az eredményül kapott összegzés nem tükrözi a helyes eredményt.
Miért érdemes használni a Concurrency módszert?
Az egyidejűség-ellenőrzési módszer használatának okai a DBMS:
- Az Elkülönítés alkalmazása az ütköző tranzakciók közötti kölcsönös kizárással
- Olvasási, írási és írási konfliktusok megoldása
- Az adatbázis konzisztenciájának 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 egyidejű vezérlési sémák segítségével érik el.
- Az egyidejűség ellenőrzése segít a szerializálhatóság biztosításában
Példa
Tegyük fel, hogy két ember, akik egyszerre járnak elektronikus kioszkba, hogy mozijegyet vásároljanak ugyanarra a filmre és ugyanarra a bemutatóra.
Azonban csak egy hely maradt a filmbemutatóra az adott színházban. A DBMS párhuzamosság-ellenőrzése nélkül lehetséges, hogy mindkét mozi néző végül jegyet vásárol. Az egyidejűség-ellenőrzési módszer azonban nem teszi lehetővé ezt. Mindkét mozinéző továbbra is hozzáférhet a filmülési adatbázisba írt információkhoz. De a párhuzamosság-ellenőrzés csak akkor ad jegyet annak a vevőnek, aki először befejezte a tranzakciós folyamatot.
Egyidejűség-ellenőrzési protokollok
A különböző párhuzamosság-ellenőrzési protokollok különböző előnyöket kínálnak az általuk megengedett egyidejűség és az általuk kivetett általános költségek között. Az alábbiakban bemutatjuk az egyidejűség-ellenőrzési technikákat a DBMS-ben:
- Záralapú protokollok
- Két fázis zárolási protokoll
- Időbélyeg-alapú protokollok
- Validáláson alapuló protokollok
Lock-alapú protokollok
A DBMS zároláson alapuló protokollok egy olyan mechanizmus, amelyben a tranzakció nem tudja elolvasni vagy írni az adatokat, amíg meg nem szerzi a megfelelő zárat. A zároláson alapuló protokollok segítenek kiküszöbölni a párhuzamossági problémát a DBMS-ben egyidejű tranzakciók esetén azáltal, hogy egy adott tranzakciót lezárnak vagy elkülönítenek egyetlen felhasználótól.
A zár egy olyan adatváltozó, amely egy adatelemhez van társítva. Ez a zár azt jelzi, hogy az adatelemen végrehajtható műveletek vannak. A DBMS zárai segítik az adatbázis-elemek hozzáférésének szinkronizálását egyidejű tranzakciókkal.
Az összes zárolási kérelmet az egyidejűség-kezelő kezelőhöz intézzük. 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 állapotokat is képes.
Megosztott / kizárólagos: Ez a típusú zárszerkezet felhasználásuk alapján elválasztja a DBMS zárjait. Ha az adatelemen zárolást írási művelet végrehajtása céljából szereznek, azt kizárólagos zárnak hívják.
1. Közös zár (S):
A megosztott zárat csak olvasható zárnak is hívják. A megosztott zár használatával az adatelem megosztható a tranzakciók között. Ennek oka, hogy soha nem lesz engedélye az adatok elemének frissítésére.
Vegyünk például egy olyan esetet, amikor két tranzakció leolvassa egy személy számlaegyenlegét. Az adatbázis lehetővé teszi számukra az olvasást egy megosztott zár elhelyezésével. Ha azonban egy másik tranzakció frissíteni kívánja a fiók egyenlegét, akkor a megosztott zárolás megakadályozza, amíg az olvasási folyamat véget nem ér.
2. Exkluzív zár (X):
Az Exclusive Lock segítségével egy adat elem olvasható és írható. Ez kizárólagos, és nem tartható egyidejűleg ugyanazon az adatelemen. Az X-lock programot a lock-x utasítással kérjük. A tranzakciók az „írás” művelet befejezése után feloldhatják az adatelem zárolását.
Például amikor egy tranzakciónak frissítenie kell egy személy számlaegyenlegét. X tranzakció elhelyezésével engedélyezheti ezt a tranzakciót. Ezért, amikor a második tranzakció olvasni vagy írni akar, az exkluzív zár megakadályozza ezt a műveletet.
3. Egyszerű zárolási protokoll
Az ilyen típusú zár alapú protokollok lehetővé teszik a tranzakciók számára, hogy a működés megkezdése előtt minden objektumra zárat szerezzenek. A tranzakciók az „írás” művelet befejezése után feloldhatják az adatelem zárolását.
4. A zárolás előzetes igénylése
A zárolási protokoll előzetes igénylése segít a műveletek értékelésében és a végrehajtási folyamat megkezdéséhez szükséges szükséges adatok listájának összeállításában. Abban a helyzetben, amikor minden zárat megadnak, a tranzakció végrehajtásra kerül. Ezt követően minden zár kioldódik, amikor minden művelete véget ér.
Éhezés
Az éhezés az a helyzet, amikor a tranzakciónak határozatlan ideig kell várnia a zár megszerzéséhez.
Az éhezés okai a következők:
- Amikor a lezárt elemek várakozási sémája nincs megfelelően kezelve
- Erőforrás szivárgás esetén
- Ugyanazt a tranzakciót választják áldozatként ismételten
Holtpont
A holtpont egy olyan konkrét helyzetre utal, amikor két vagy több folyamat vár egymásra egy erőforrás felszabadítására, vagy kettőnél több folyamat várja az erőforrást egy körláncban.
Két fázis zárolási protokoll
A kétfázisú zárolási protokoll, amelyet 2PL protokollnak is neveznek, a párhuzamosság-vezérlés egy olyan módszere a DBMS-ben, amely biztosítja a sorosíthatóságot azáltal, hogy zárolást alkalmaz a tranzakciós adatokra, amely blokkolja a többi tranzakciót, hogy ugyanazon adatokhoz egyszerre férjenek hozzá. Két fáziszá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 egy tranzakció végrehajtási szakaszát három különböző részre osztja.
- Az első szakaszban, amikor a tranzakció elkezdődik, engedélyre van szükség a szükséges zárakhoz.
- A második rész az, ahol a tranzakció megszerzi az összes zárat. Amikor egy tranzakció felszabadítja az első zárat, a harmadik szakasz elindul.
- Ebben a harmadik szakaszban 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ást vagy feloldási kérelmet küldjön két lépésben:
- Növekvő fázis : Ebben a szakaszban a tranzakció zárokat szerezhet, de nem oldhat fel zárakat.
- Zsugorodási fázis : Ebben a szakaszban egy tranzakció feloldhat zárakat, de nem szerezhet új zárat
Igaz, hogy a 2PL protokoll sorosíthatóságot kínál. Nem biztosítja azonban, hogy holtpontok ne történjenek.
A fenti ábrán láthatja, hogy a helyi és globális holtpont-érzékelők holtpontokat keresnek, és a tranzakciók kezdeti állapotukba való visszatérésével oldják meg őket.
Szigorú kétfázisú zárolási módszer
A Strict-Two fáziszáró rendszer szinte hasonló a 2PL-hez. Az egyetlen különbség az, hogy a Strict-2PL soha nem bocsát ki zárat használat után. Az összes zárat az elköteleződésig tartja, és az összes zárat egy menetben felengedi, amikor a folyamat véget ér.
Központosított 2PL
A Centralized 2 PL-ben egyetlen helyszín felelős a zárkezelési folyamatért. Csak egy zárkezelővel rendelkezik a teljes DBMS számára.
Elsődleges példány 2PL
Az elsődleges 2PL példány mechanizmusa, sok zárkezelő van elosztva különböző helyeken. Ezt követően egy adott zárkezelő felel az adatelemek zárjának kezeléséért. Az elsődleges példány frissítése után a változás továbbadódik a rabszolgáknak.
Elosztva 2PL
Ebben a fajta kétfázisú zárszerkezetben a zárkezelőket minden webhelyre elosztják. Ők felelősek az adott hely adatainak zárolásáért. Ha nincs adat replikálva, akkor az megegyezik az elsődleges 2PL példánnyal. Az Elosztott 2PL kommunikációs költségei meglehetősen magasabbak, mint az elsődleges 2PL példányé
Időbélyeg-alapú protokollok
Az időbélyeg-alapú protokoll a DBMS-ben olyan algoritmus, amely a rendszeridőt vagy a logikai számlálót használja időbélyegként az egyidejű tranzakciók végrehajtásának sorosításához. Az időbélyeg-alapú protokoll biztosítja, hogy minden ütköző olvasási és írási műveletet időbélyeg-sorrendben hajtsanak végre.
A régebbi tranzakció mindig elsőbbséget élvez ebben a módszerben. Rendszeridőt használ a tranzakció időbélyegének meghatározásához. Ez a leggyakrabban használt párhuzamossági protokoll.
A zároláson alapuló 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 a konfliktusokat, 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 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Előnyök :
- Az ütemezések ugyanúgy sorosíthatók, mint a 2PL protokollok
- Nincs várakozás a tranzakcióra, amely kiküszöböli a holtpontokat!
Hátrányok:
Az éhezés akkor lehetséges, ha ugyanazt a tranzakciót újraindítják és folyamatosan megszakítják
Validáláson alapuló protokoll
Az érvényesítés alapú protokoll a DBMS-ben, más néven Optimistic Concurrency Control Technique egy módszer a tranzakciók párhuzamosságának elkerülésére. Ebben a protokollban a tranzakciós adatok helyi másolatai frissülnek, nem pedig maga az adat, ami kevesebb interferenciát eredményez a tranzakció végrehajtása közben.
Az érvényesítés alapú protokollt a következő három szakaszban hajtják végre:
- Olvassa el a Fázist
- Érvényesítési szakasz
- Írási fázis
Olvassa el a Fázist
Az Olvasási szakaszban az adatbázisból származó adatok értékei tranzakcióval olvashatók, de az írási műveletet vagy a frissítéseket csak a helyi adatmásolatokra alkalmazzák, a tényleges adatbázisra nem.
Érvényesítési szakasz
Az érvényesítési fázisban az adatokat ellenőrizzük, hogy a tranzakciófrissítések adatbázisba történő alkalmazása során ne sértsük-e a szerializálhatóságot.
Írási fázis
Az írási fázisban a frissítéseket az adatbázisra alkalmazzák, ha az érvényesítés sikeres; a frissítések nem kerülnek alkalmazásra, és a tranzakció visszavonásra kerül.
A jó párhuzamossági protokoll jellemzői
Ideális párhuzamosság-ellenőrző DBMS mechanizmus a következő célokat tűzi ki:
- 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ényeknek kell lenniük a rezsiköltség minimalizálása érdekében.
- Bizonyos korlátokat kell érvényesítenie a tranzakciók atomi műveleteinek felépítésével kapcsolatban.
Összegzés
- Az egyidejűség ellenőrzése a DBMS-ben az egyidejű műveletek kezelése anélkül, hogy egymással ütközne.
- Az Elveszett frissítések, a piszkos olvasás, az Ismételhetetlen olvasás és a Helytelen összefoglaló probléma problémákat jelentenek az egyidejűség-ellenőrzés hiánya miatt.
- Záralapú, kétfázisú, időbélyeg-alapú, érvényesítés-alapú az egyidejűség-kezelési protokollok típusai
- A zár lehet megosztott (S) vagy kizárólagos (X)
- A kétfázisú zárolási protokollnak, amelyet 2PL protokollnak is neveznek, tranzakcióra van szüksége, zárolást kell szereznie, miután feloldotta egyik zárját. 2 fázisa van, növekszik és csökken.
- Az időbélyeg-alapú algoritmus időbélyeget használ a párhuzamos tranzakciók végrehajtásának sorosításához. A protokoll időbélyegként használja a Rendszeridőt vagy a Logikai Számlálást .