DBMS-i samaaegsuse kontroll: ajatempel & Lukupõhised protokollid

Lang L: none (table-of-contents):

Anonim

Mis on samaaegne kontroll?

Samaaegsuse juhtimine andmebaaside haldussüsteemis on samaaegsete toimingute haldamine ilma vastuoludeta. See tagab, et andmebaasi tehingud toimuksid samaaegselt ja täpselt, et saada õigeid tulemusi, rikkumata vastava andmebaasi andmete terviklikkust.

Samaaegne juurdepääs on üsna lihtne, kui kõik kasutajad lihtsalt loevad andmeid. Nad ei saa kuidagi üksteist segada. Ehkki mis tahes praktilise andmebaasi jaoks, oleks sellel segu READ ja WRITE operatsioonidest ning seetõttu on samaaegsus väljakutseks.

DBMS Concurrency Control kasutatakse selliste konfliktide lahendamiseks, mis esinevad enamasti mitme kasutaja süsteemiga. Seetõttu on samaaegsuse kontroll andmebaasihaldussüsteemi nõuetekohase toimimise jaoks kõige olulisem element, kus samaaegselt sooritatakse kaks või enam andmebaasi tehingut, mis nõuavad juurdepääsu samadele andmetele.

Selles õpetuses saate teada

  • Mis on samaaegne kontroll?
  • Võimalikud samaaegsuse probleemid
  • Miks kasutada samaaegsuse meetodit?
  • Samaaegsuse kontrollimise protokollid
  • Lukupõhised protokollid
  • Kahefaasilise lukustamise (2PL) protokoll
  • Ajatemplipõhised protokollid
  • Valideerimispõhine protokoll
  • Hea samaaegsuse protokolli omadused

Võimalikud samaaegsuse probleemid

Siin on mõned probleemid, millega peate tõenäoliselt kokku puutuma DBMS-i samaaegsuse kontrollimise meetodi kasutamisel:

  • Kaotatud värskendused ilmnevad siis, kui mitu tehingut valivad sama rea ​​ja värskendavad rida valitud väärtuse põhjal
  • Kohustumatud sõltuvuse probleemid ilmnevad siis, kui teine ​​tehing valib rea, mida värskendatakse teise tehinguga ( määrdunud lugemine )
  • Mittekorratav lugemine toimub siis, kui teine ​​tehing üritab mitu korda samale reale juurde pääseda ja loeb iga kord erinevaid andmeid.
  • Vale kokkuvõtte probleem ilmneb siis, kui üks tehing võtab kokku korduva andmeüksuse kõigi eksemplaride väärtuse kokkuvõtte ja teine ​​tehing värskendab selle konkreetse andmeüksuse mõnda eksemplari. Selles olukorras ei kajasta saadud kokkuvõte õiget tulemust.

Miks kasutada samaaegsuse meetodit?

Põhjused samaaegsuse kontrollimeetodi kasutamiseks on DBMS:

  • Rakendada eraldamist vastuoluliste tehingute vahel vastastikuse välistamise kaudu
  • Loe-kirjuta ja kirjuta-kirjuta konfliktide probleemide lahendamine
  • Andmebaasi järjepidevuse säilitamiseks pidevate täitmistõkete abil
  • Süsteem peab kontrollima samaaegsete tehingute vastastikust mõju. See juhtimine saavutatakse samaaegse juhtimise skeemide abil.
  • Samaaegsuse kontroll aitab tagada jadatavuse

Näide

Oletame, et kaks inimest, kes käivad samaaegselt elektroonilistes kioskites, et osta sama filmi ja sama saate aja kinopilet.

Konkreetse teatri filmisaate jaoks on aga jäänud vaid üks koht. Ilma samaaegsuse kontrollita DBMS-is on võimalik, et mõlemad kinohuvilised ostavad lõpuks pileti. Samas ei võimalda samaaegsuse kontrollimeetod seda juhtuda. Mõlemad kinohuvilised saavad endiselt juurdepääsu filmide istekohtade andmebaasi kirjutatud teabele. Samaaegsuse kontroll annab pileti ainult ostjale, kes on tehinguprotsessi esimesena lõpule viinud.

Samaaegsuse kontrollimise protokollid

Erinevad samaaegsuskontrolli protokollid pakuvad erinevaid eeliseid lubatava samaaegsuse ja kehtestatud üldkulude vahel. Järgnevalt kirjeldatakse DBMS-i samaaegsuse kontrolli tehnikaid:

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

Lukupõhised protokollid

DBMS-i lukupõhised protokollid on mehhanism, milles tehing ei saa andmeid lugeda ega kirjutada enne, kui see on omandanud sobiva luku. Lukustuspõhised protokollid aitavad kõrvaldada samaaegsete tehingute DBMS-i samaaegsuse probleemi, lukustades või eraldades konkreetse tehingu ühele kasutajale.

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 abil.

Kõik lukustaotlused saadetakse samaaegsuse kontrollimise haldurile. Tehingud toimuvad alles siis, kui lukutaotlus on täidetud.

Binaarsed lukud: andmeüksuse kahendlukk võib lukustada või lukustamata olekud.

Jagatud / eksklusiivne: seda tüüpi lukustusmehhanism eraldab DBMS-i lukud nende kasutamise järgi. Kui andmeüksusel on lukustuse saamiseks sooritatud kirjutamistoiming, nimetatakse seda eksklusiivseks lukustuseks.

1. Jagatud lukk (S):

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

Vaatleme näiteks juhtumit, kus kaks tehingut loevad inimese konto saldot. Andmebaas laseb neil lugeda, paigutades jagatud luku. Kui aga mõni teine ​​tehing soovib selle konto saldot värskendada, takistab jagatud lukustus seda seni, kuni lugemisprotsess on lõppenud.

2. Eksklusiivne lukk (X):

Exclusive Locki abil 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 juhiste abil. Tehingud võivad andmeüksuse avada pärast kirjutamisoperatsiooni lõpetamist.

Näiteks kui tehing peab ajakohastama inimese konto saldot. Selle tehingu saate lubada, pannes sellele X-luku. Seega, kui teine ​​tehing soovib lugeda või kirjutada, välistab eksklusiivne lukustus selle toimingu.

3. Lihtsustatud lukustusprotokoll

Seda tüüpi lukupõhised protokollid võimaldavad tehingutel saada enne objekti alustamist igale objektile luku. Tehingud võivad andmeüksuse avada pärast kirjutamisoperatsiooni lõpetamist.

4. Lukustamise eelnõudmine

Lukuprotokolli eeltaotluse esitamine aitab toiminguid hinnata ja koostada vajalike andmeüksuste loetelu, mida on vaja täitmisprotsessi algatamiseks. Olukorras, kui kõik lukud on antud, toimub tehing. Pärast seda vabastatakse kõik lukud, kui kõik selle toimingud on läbi.

Nälgimine

Nälgimine on olukord, kui tehing peab luku omandamiseks ootama määramata aja.

Nälgimise põhjused on järgmised:

  • Kui lukustatud esemete ootamise skeemi ei hallata õigesti
  • Ressursside lekke korral
  • Kannatanuks valitakse korduvalt sama tehing

Ummik

Ummik viitab konkreetsele olukorrale, kus kaks või enam protsessi ootavad üksteist ressursi vabastamiseks või rohkem kui kaks protsessi ressurssi ümmarguses ahelas.

Kahefaasiline lukustusprotokoll

Kahefaasiline lukustusprotokoll, tuntud ka kui 2PL-protokoll, on DBMS-i samaaegsuse juhtimise meetod, mis tagab seerialiseeritavuse, rakendades tehinguandmetele luku, mis blokeerib muudele tehingutele samadele andmetele üheaegse juurdepääsu. Kahefaasiline lukustusprotokoll aitab DBMS-is samaaegsuse probleemi kõrvaldada.

See lukustusprotokoll jagab tehingu sooritamise faasi kolmeks osaks.

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

Kahefaasiline lukustusprotokoll võimaldab igal tehingul teha lukustamis- või avamisnõude kahes etapis:

  • Kasvav faas : selles etapis võib tehing hankida lukke, kuid ei pruugi ühtegi lukku vabastada.
  • Kahanemisfaas : selles etapis võib tehing lukud vabastada, kuid ei saa uut lukku

On tõsi, et 2PL-protokoll pakub jadatavust. Kuid see ei taga, et ummikuid ei juhtuks.

Ülaltoodud diagrammil näete, et kohalikud ja globaalsed ummikdetektorid otsivad ummikuid ja lahendavad need tehingute jätkamisega algsesse olekusse.

Range kahefaasiline lukustusmeetod

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

Tsentraliseeritud 2PL

Tsentraliseeritud 2 PL-is vastutab lukkude haldamise protsessi eest üks sait. Sellel on kogu DBMS-i jaoks ainult üks lukuhaldur.

Esmane eksemplar 2PL

Esmase eksemplari 2PL mehhanism, paljud lukuhaldurid on jaotatud erinevatele saitidele. Pärast seda vastutab konkreetne lukuhaldur andmeüksuste komplekti luku haldamise eest. Kui esmane eksemplar on värskendatud, levitatakse muudatus orjadele.

Jaotatud 2PL

Sellises kahefaasilises lukustusmehhanismis jaotatakse lukuhaldurid kõikidele saitidele. Nad vastutavad selle saidi andmete lukkude haldamise eest. Kui andmeid ei korrata, on need samaväärsed esmase eksemplariga 2PL. Distributed 2PL sidekulud on üsna suured kui esmase eksemplari 2PL

Ajatemplipõhised protokollid

Ajatemplil põhinev protokoll DBMS-is on algoritm, mis kasutab samaaegsete tehingute sooritamise järjendamiseks ajatemplina süsteemi aega või loogilist loendurit. Ajatemplil põhinev protokoll tagab, et kõik vastuolulised lugemis- ja kirjutamistoimingud viiakse läbi ajatempli järjekorras.

Vanemale tehingule antakse selles meetodis alati prioriteet. Tehingu ajatempli määramiseks kasutatakse süsteemi aega. See on kõige sagedamini kasutatav samaaegsuse protokoll.

Lukustuspõhised protokollid aitavad teil konfliktsete tehingute vahelist tellimust hallata, kui need täidetakse. Ajatemplil põhinevad protokollid haldavad konflikte kohe, kui operatsioon on loodud.

Näide:

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.

Eelised :

  • Graafikud on sarjastatavad nagu 2PL-protokollid
  • Tehingut pole vaja oodata, mis välistab ummikute tekkimise võimaluse!

Puudused:

Nälgimine on võimalik, kui sama tehing uuesti käivitatakse ja katkestatakse pidevalt

Valideerimispõhine protokoll

Valideerimispõhine protokoll DBMS-is, mida nimetatakse ka optimistlikuks samaaegsuse kontrollimise tehnikaks, on meetod tehingute samaaegsuse vältimiseks. Selles protokollis värskendatakse tehinguandmete kohalikke koopiaid, mitte andmeid, mis põhjustab tehingu sooritamise ajal vähem sekkumisi.

Valideerimispõhine protokoll viiakse läbi kolmes järgmises etapis:

  1. Loe faas
  2. Valideerimisfaas
  3. Kirjutusfaas

Loe faas

Lugemisfaasis saab andmebaasist pärinevaid andmeväärtusi tehinguga lugeda, kuid kirjutamisoperatsiooni või värskendusi rakendatakse ainult kohalikele andmekoopiatele, mitte tegelikule andmebaasile.

Valideerimisfaas

Valideerimisfaasis kontrollitakse andmeid selle tagamiseks, et tehinguvärskenduste andmebaasi rakendamisel ei rikuta jadatavust.

Kirjutusfaas

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

Hea samaaegsuse protokolli omadused

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

  • Peab olema vastupidav saidi ja sideprobleemide suhtes.
  • See võimaldab tehingute paralleelsel täitmisel saavutada maksimaalne samaaegsus.
  • Selle salvestusmehhanismid ja arvutusmeetodid peaksid üldkulude minimeerimiseks olema tagasihoidlikud.
  • See peab rakendama teatud piiranguid tehingute aatomi toimingute struktuurile.

Kokkuvõte

  • Samaaegsuse kontroll on DBMS-is protseduur samaaegsete toimingute haldamiseks ilma üksteisega vastuolus olles.
  • Kaotatud värskendused, räpane lugemine, kordumatu lugemine ja vale kokkuvõtte probleem on probleemid, mis tekivad samaaegsuse kontrolli puudumise tõttu.
  • Lukustuspõhised, kahefaasilised, ajatemplipõhised, valideerimispõhised on samaaegsuse käitlemise protokollide tüübid
  • Lukk võib olla jagatud (S) või eksklusiivne (X)
  • Kahefaasiline lukustusprotokoll, mida tuntakse ka kui 2PL-protokolli vajavat tehingut, peaks pärast ühe oma lukust vabastamise saama luku. Sellel on 2 faasi, mis kasvavad ja kahanevad.
  • Ajatemplil põhinev algoritm kasutab ajatemplit samaaegsete tehingute täitmise järjestamiseks. Protokoll kasutab ajatemplina süsteemi aega või loogilist loendust.