DBMS-i samaaegsuse juhtimine: ajatempli ja lukupõhised protokollid

Mis on samaaegsuse kontroll?

Samaaegsuse kontroll Andmebaasihaldussüsteemis on protseduur samaaegsete toimingute haldamiseks ilma üksteisega konflikti tekitamata. See tagab, et andmebaasi tehingud tehakse samaaegselt ja täpselt, et anda õigeid tulemusi, ilma et rikutaks vastava andmebaasi andmete terviklikkust.

Samaaegne juurdepääs on üsna lihtne, kui kõik kasutajad ainult loevad andmeid. Nad ei saa kuidagi üksteist segada. Kuigi mis tahes praktilise andmebaasi puhul on selles kombinatsioon READ ja WRITE operatsioonidest ning seetõttu on samaaegsus väljakutse.

DBMS-i samaaegsuse juhtimist kasutatakse selliste konfliktide lahendamiseks, mis tekivad enamasti mitme kasutajaga süsteemis. Seetõttu on Concurrency Control kõige olulisem element andmebaasihaldussüsteemi nõuetekohaseks toimimiseks, kus samaaegselt teostatakse kaks või enam andmebaasitehingut, mis nõuavad juurdepääsu samadele andmetele.

Samaaegsuse võimalikud probleemid

Siin on mõned probleemid, millega DBMS-i samaaegsuse kontrolli meetodi kasutamisel tõenäoliselt kokku puutute.

  • Kaotatud värskendused ilmnevad siis, kui mitu tehingut valib sama rea ​​ja värskendab rida valitud väärtuse alusel
  • Pühendamata sõltuvusprobleemid ilmnevad siis, kui teine ​​tehing valib rea, mida värskendab mõni muu tehing (räpane lugemine)
  • Mittekordatav lugemine tekib siis, kui teine ​​tehing üritab mitu korda samale reale juurde pääseda ja loeb iga kord erinevaid andmeid.
  • Vale kokkuvõtte probleem toimub siis, kui üks tehing võtab kokku korduva andmeüksuse kõigi esinemisjuhtude väärtuse ja teine ​​tehing värskendab selle konkreetse andmeüksuse üksikuid eksemplare. Sellises olukorras ei kajasta saadud kokkuvõte õiget tulemust.

Miks kasutada samaaegsuse meetodit?

Samaaegsuse kontrolli meetodi kasutamise põhjused on DBMS:

  • Rakendada isolatsiooni vastuoluliste tehingute vastastikuse välistamise kaudu
  • Lugemise-kirjutamise ja kirjutamise-kirjutamise konfliktide lahendamiseks
  • Andmebaasi järjepidevuse säilitamiseks pideva täitmise takistuste säilitamise kaudu
  • Süsteem peab kontrollima samaaegsete tehingute vahelist suhtlust. See juhtimine saavutatakse samaaegse juhtimise skeemide abil.
  • Samaaegsuse kontroll aitab tagada serialiseeritavuse

Näide

Oletame, et kaks inimest, kes lähevad samal ajal elektroonilistesse kioskidesse, et osta samale filmile ja samale etendusele kinopilet.

Siiski on selles konkreetses teatris filmietendusele jäänud vaid üks koht. Ilma DBMS-i samaaegsuse kontrollita on võimalik, et mõlemad filmikülastajad ostavad pileti. Samaaegsuse kontrolli meetod ei võimalda seda aga juhtuda. Mõlemad kinokülastajad pääsevad endiselt ligi filmikohtade andmebaasi kirjutatud teabele. Kuid samaaegsuse kontroll annab pileti ainult ostjale, kes on tehinguprotsessi esimesena lõpetanud.

Samaaegsuse kontrolli protokollid

Erinevad samaaegsuse juhtimisprotokollid pakuvad erinevaid eeliseid lubatud samaaegsuse ja nende kehtestatud üldkulude vahel. Järgmised on DBMS-i samaaegsuse kontrolli tehnikad.

  • Lukupõhised protokollid
  • Kahefaasiline lukustusprotokoll
  • Ajatemplipõhised protokollid
  • Valideerimispõhised protokollid

Lukupõhised protokollid

Lukupõhised protokollid DBMS-is on mehhanism, mille puhul tehing ei saa andmeid lugeda ega kirjutada enne, kui see omandab asjakohase luku. Lukupõhised protokollid aitavad kõrvaldada DBMS-i samaaegsusprobleemi samaaegsete tehingute puhul, lukustades või eraldades konkreetse tehingu ühe kasutaja jaoks.

Lukk on andmemuutuja, mis on seotud andmeüksusega. See lukk tähistab toiminguid, mida saab andmeüksusega teha. DBMS-i lukud aitavad sünkroonida juurdepääsu andmebaasi üksustele samaaegsete tehingute kaudu.

Kõik lukustustaotlused esitatakse samaaegsuse kontrolli haldurile. Tehingud jätkuvad alles siis, kui lukustustaotlus on rahuldatud.

Binaarsed lukud: Andmeüksuse binaarlukk võib olla kas lukustatud või lukustamata.

Jagatud/eksklusiivne: Seda tüüpi lukustusmehhanism eraldab DBMS-is lukud nende kasutusalade alusel. Kui andmeüksusele lukustatakse kirjutamistoimingu tegemiseks, nimetatakse seda eksklusiivseks lukuks.

1. Jagatud lukk (S):

Jagatud lukku nimetatakse ka kirjutuskaitstud lukuks. Jagatud lukuga saab andmeüksust tehingute vahel jagada. Seda seetõttu, et teil ei ole kunagi luba andmeüksuse andmete värskendamiseks.

Mõelgem näiteks juhtumile, kus kaks tehingut loevad inimese kontojääki. The andmebaas laseb neil lugeda, pannes jagatud luku. Kui aga mõni muu tehing soovib selle konto saldot värskendada, takistab jagatud lukk seda seni, kuni lugemisprotsess on lõppenud.

2. Eksklusiivne lukk (X):

Eksklusiivse lukuga saab andmeüksust nii lugeda kui ka kirjutada. See on eksklusiivne ja seda ei saa samal andmeüksusel samaaegselt hoida. X-locki küsitakse lock-x käsu abil. Tehingud võivad andmeüksuse avada pärast kirjutamistoimingu lõpetamist.

Näiteks kui tehinguga on vaja värskendada inimese kontojääki. Saate selle tehingu lubada, pannes sellele X-luku. Seega, kui teine ​​tehing soovib lugeda või kirjutada, takistab eksklusiivne lukk seda toimingut.

3. Lihtsustatud lukustusprotokoll

Seda tüüpi lukupõhised protokollid võimaldavad tehingutel enne töö alustamist iga objekti lukustada. Tehingud võivad andmeüksuse avada pärast kirjutamistoimingu lõpetamist.

4. Eelnõude lukustamine

Eelnõudmise lukuprotokoll aitab toiminguid hinnata ja koostada täitmisprotsessi algatamiseks vajalike nõutavate andmeüksuste loendi. Kui kõik lukud on antud, siis tehing teostatakse. Pärast seda vabastatakse kõik lukud, kui kõik selle toimingud on lõppenud.

Nälg

Nälgimine on olukord, kus tehinguga on vaja luku omandamiseks määramata aja oodata.

Nälgimise põhjused on järgmised:

  • Lukustatud esemete ootamise skeem ei ole korralikult hallatud
  • Ressursi lekke korral
  • Sama tehing valitakse ohvriks korduvalt

tupik

Ummik viitab konkreetsele olukorrale, kus kaks või enam protsessi ootavad teineteist ressursi vabastamist või rohkem kui kaks protsessi ootab ressurssi ringahelas.

Kahefaasiline lukustusprotokoll

Kahefaasiline lukustusprotokoll tuntud ka kui 2PL-protokoll, on DBMS-i samaaegsuse kontrolli meetod, mis tagab jadatavuse, rakendades tehinguandmetele lukku, mis blokeerib teiste tehingute samaaegse juurdepääsu samadele andmetele. Kahefaasiline lukustusprotokoll aitab kõrvaldada DBMS-i samaaegsusprobleemi.

See lukustusprotokoll jagab tehingu täitmise etapi kolmeks erinevaks osaks.

  • Esimeses faasis, kui tehing hakkab täitma, nõuab see vajalike lukkude jaoks luba.
  • Teine osa on see, kus tehing saab kõik lukud. Kui tehing vabastab oma esimese luku, algab kolmas faas.
  • Selles kolmandas etapis ei saa tehing nõuda uusi lukke. Selle asemel vabastab see ainult omandatud lukud.

Kahefaasiline lukustusprotokoll

Kahefaasiline lukustusprotokoll võimaldab igal tehingul teha lukustus- või avamistaotlus kahes etapis.

  • Kasvamise faas: selles faasis võib tehing saada lukke, kuid ei pruugi lukke vabastada.
  • Kahanemise faas: selles faasis võib tehing vabastada lukud, kuid mitte saada uut lukku

On tõsi, et 2PL-protokoll pakub serialiseeritavust. See aga ei taga, et ummikseisu ei juhtuks.

Ülaltoodud diagrammil on näha, et kohalikud ja globaalsed ummikudetektorid otsivad ummikseisu ja lahendavad need tehingute taastamisega algolekusse.

Range kahefaasiline lukustusmeetod

Strict-Two faasi lukustussüsteem on peaaegu sarnane 2PL-ga. Ainus erinevus seisneb selles, et Strict-2PL ei vabasta kunagi lukku pärast selle kasutamist. See hoiab kõiki lukke kuni sidumispunktini ja vabastab kõik lukud korraga, kui protsess on lõppenud.

Tsentraliseeritud 2PL

Centralized 2 PL-is vastutab lukuhaldusprotsessi eest üks sait. Sellel on kogu DBMS-i jaoks ainult üks lukuhaldur.

Esmane koopia 2PL

Esmane koopia 2PL mehhanism, paljud lukuhaldurid levitatakse erinevatele saitidele. Pärast seda vastutab teatud lukuhaldur teatud andmeüksuste luku haldamise eest. Kui esmane koopia on värskendatud, edastatakse muudatus alamseadmetele.

Levitatud 2PL

Seda tüüpi kahefaasilise lukustusmehhanismi korral jaotatakse lukuhaldurid kõigile saitidele. Nad vastutavad selle saidi andmete lukustamise haldamise eest. Kui andmeid ei kopeerita, on see samaväärne esmase koopiaga 2PL. Distributed 2PL sidekulud on üsna suuremad kui 2PL esmasel koopial

Ajatemplipõhised protokollid

Ajatemplipõhine protokoll DBMS-is on algoritm, mis kasutab süsteemiaega või loogilist loendurit ajatemplina samaaegsete tehingute täitmise järjestamiseks. Ajatemplipõhine protokoll tagab, et kõik vastuolulised lugemis- ja kirjutamistoimingud täidetakse ajatempli järjekorras.

Selle meetodi puhul eelistatakse alati vanemat tehingut. See kasutab tehingu ajatempli määramiseks süsteemiaega. See on kõige sagedamini kasutatav samaaegsusprotokoll.

Lukupõhised protokollid aitavad teil hallata vastuoluliste tehingute vahelist järjekorda nende täitmise ajal. Ajatemplipõhised protokollid haldavad konflikte kohe pärast toimingu loomist.

Näide:

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.

Eelised:

  • Ajakavad on järjestatavad nagu 2PL protokollid
  • Ei mingit tehingu ootamist, mis välistab ummikseisu!

Puudused:

Näljutamine on võimalik, kui sama tehingut uuesti käivitada ja pidevalt katkestada

Valideerimisel põhinev protokoll

Valideerimisel põhinev protokoll DBMS-is, mida tuntakse ka kui Optimistliku samaaegsuse kontrolli tehnikat, on meetod tehingute samaaegsuse vältimiseks. Selles protokollis värskendatakse tehinguandmete kohalikke koopiaid, mitte andmeid endid, mis põhjustab tehingu sooritamisel vähem häireid.

Valideerimisel põhinev protokoll viiakse läbi kolmes järgmises etapis:

  1. Loe faasi
  2. Valideerimisfaas
  3. Kirjuta faas

Loe faasi

Lugemisfaasis saab tehinguga andmebaasi andmeväärtusi lugeda, kuid kirjutamistoimingut või värskendusi rakendatakse ainult kohalikele andmekoopiatele, mitte tegelikule andmebaasile.

Valideerimisfaas

Valideerimisfaasis kontrollitakse andmeid tagamaks, et andmebaasi tehinguvärskenduste rakendamisel ei esineks serialiseeritavuse rikkumisi.

Kirjuta faas

Kirjutamisfaasis rakendatakse värskendused andmebaasile, kui valideerimine on edukas, muidu; värskendusi ei rakendata ja tehing tühistatakse.

Hea samaaegsusprotokolli omadused

Ideaalsel samaaegsuse kontrolli DBMS-i mehhanismil on järgmised eesmärgid:

  • Peab olema vastupidav saidi- ja sidetõrgetele.
  • See võimaldab tehingute paralleelset teostamist, et saavutada maksimaalne samaaegsus.
  • Selle salvestusmehhanismid ja arvutusmeetodid peaksid üldkulude minimeerimiseks olema tagasihoidlikud.
  • See peab kehtestama teatud piirangud tehingute tuumatoimingute struktuurile.

kokkuvõte

  • Samaaegsuse kontroll on protseduur DB-süsteemid samaaegsete toimingute haldamiseks ilma üksteisega konflikti tekitamata.
  • Kaotatud värskendused, määrdunud lugemine, mittekorduv lugemine ja vale kokkuvõtte probleem on probleemid, millega tuleb kokku puutuda samaaegsuse kontrolli puudumise tõttu.
  • Lukustuspõhised, kahefaasilised, ajatemplipõhised ja valideerimispõhised on samaaegsuse käsitlemise protokollide tüübid
  • Lukk võib olla jagatud (S) või eksklusiivne (X)
  • Kahefaasiline lukustusprotokoll, mida tuntakse ka 2PL-i protokolli vajavate tehingutena, peaks saama lukustuse pärast ühe luku vabastamist. Sellel on 2 kasvu- ja kahanemisfaasi.
  • Ajatemplil põhinev algoritm kasutab ajatemplit samaaegsete tehingute täitmise järjestamiseks. Protokoll kasutab Süsteemi aeg või loogiline arv kui a Ajatempel.