DBVS lygiagretumo valdymas: laiko žyma ir amp; Užrakto protokolai

Kas yra lygiagretumo kontrolė?

Lygiagretumo kontrolė duomenų bazių valdymo sistemoje - tai operacijų vienu metu valdymas, nekonfliktuojant vienas su kitu. Tai užtikrina, kad duomenų bazės operacijos būtų atliekamos vienu metu ir tiksliai, kad būtų gauti teisingi rezultatai, nepažeidžiant atitinkamos duomenų bazės duomenų vientisumo.

Lygiagrečią prieigą yra gana lengva, jei visi vartotojai tik skaito duomenis. Jie niekaip negali trukdyti vienas kitam. Nors ir bet kurioje praktinėje duomenų bazėje, joje būtų READ ir RASTI operacijų derinys, todėl iššūkis yra lygiagretumas.

DBMS lygiagretumo kontrolė naudojama sprendžiant tokius konfliktus, kurie dažniausiai kyla naudojant kelių vartotojų sistemą. Todėl lygiagretumo kontrolė yra svarbiausias tinkamo duomenų bazių valdymo sistemos veikimo elementas, kai vienu metu vykdomos dvi ar daugiau duomenų bazės operacijų, kurioms reikalinga prieiga prie tų pačių duomenų.

Šioje pamokoje sužinosite

  • Kas yra lygiagretumo kontrolė?
  • Galimos lygiagretumo problemos
  • Kodėl verta naudoti lygiagretumo metodą?
  • Lygiagretumo kontrolės protokolai
  • Užrakto protokolai
  • Dviejų fazių užrakinimo (2PL) protokolas
  • Laiko žymos protokolai
  • Patvirtinimu pagrįstas protokolas
  • Gero lygiavertiškumo protokolo charakteristikos

Galimos lygiagretumo problemos

Štai keletas problemų, su kuriomis tikriausiai susidursite naudodamiesi DBVS lygiagretumo valdymo metodu:

  • Prarasti naujinimai įvyksta, kai kelios operacijos pasirenka tą pačią eilutę ir atnaujina eilutę pagal pasirinktą vertę
  • Neprivalomos priklausomybės problemos kyla, kai antra operacija pasirenka eilutę, kurią atnaujina kita operacija ( nešvarus skaitymas )
  • Nepakartojamas skaitymas įvyksta, kai antroji operacija kelis kartus bando pasiekti tą pačią eilutę ir kaskart skaito skirtingus duomenis.
  • Neteisinga suvestinės problema kyla, kai viena operacija perima visų pasikartojančių duomenų elementų egzempliorių vertę, o antroji operacija atnaujina keletą to konkretaus duomenų elemento egzempliorių. Toje situacijoje gauta santrauka neatspindi teisingo rezultato.

Kodėl verta naudoti lygiagretumo metodą?

Priežastys, dėl kurių lygiagretumo valdymo metodas naudojamas, yra DBVS:

  • Taikyti izoliavimą abipusiu konfliktinių sandorių išskyrimu
  • Norėdami išspręsti skaitymo, rašymo ir rašymo ir rašymo konfliktų problemas
  • Išsaugoti duomenų bazės nuoseklumą nuolat saugant vykdymo kliūtis
  • Sistema turi kontroliuoti tuo pačiu metu vykstančių operacijų sąveiką. Ši kontrolė pasiekiama naudojant lygiagretaus valdymo schemas.
  • Lygiagretumo kontrolė padeda užtikrinti nuoseklumą

Pavyzdys

Tarkime, kad du žmonės, kurie tuo pačiu metu lankosi elektroniniuose kioskuose, nusipirkti kino bilietą už tą patį filmą ir tą patį pasirodymo laiką.

Tačiau kino teatre tam tikrame teatre liko tik viena vieta. Netikrinant suderinamumo DBVS, gali būti, kad abu kino žiūrovai galų gale įsigys bilietą. Tačiau lygiagretumo kontrolės metodas neleidžia to padaryti. Abu žiūrovai vis tiek gali naudotis informacija, įrašyta filmų sėdimų vietų duomenų bazėje. Tačiau lygiagretumo kontrolė suteikia bilietą tik pirkėjui, kuris pirmas užbaigė sandorio procesą.

Lygiagretumo kontrolės protokolai

Skirtingi lygiagretumo kontrolės protokolai suteikia skirtingą naudą tarp leidžiamo lygiagretumo ir pridėtinių pridėtinių išlaidų. Toliau pateikiami suderinamumo valdymo metodai DBVS:

  • Užrakto protokolai
  • Dviejų fazių užrakinimo protokolas
  • Laiko žymos protokolai
  • Patvirtinimo protokolai

Užrakto protokolai

Užrakto protokolai DBVS yra mechanizmas, kurio metu operacija negali skaityti ar rašyti duomenų, kol neįgyja tinkamo užrakto. Užraktu pagrįsti protokolai padeda pašalinti vienu metu atliekamų operacijų DBVS lygiagretumo problemą, užrakinant arba izoliuojant tam tikrą operaciją vienam vartotojui.

Užraktas yra duomenų kintamasis, susietas su duomenų elementu. Šis užraktas reiškia, kad operacijas, kurias galima atlikti su duomenų elementu. DBVS spynos padeda sinchronizuoti prieigą prie duomenų bazės elementų atliekant vienu metu atliekamas operacijas.

Visos užrakto užklausos pateikiamos lygiagretumo valdymo vadybininkui. Operacijos tęsiamos tik tada, kai bus įvykdyta užrakto užklausa.

Dvejetainiai užraktai: Dvejetainis duomenų elemento užraktas gali užrakinti arba atrakinti būsenas.

Bendras / išskirtinis: šio tipo užrakinimo mechanizmas atskiria DBVS spynas pagal jų paskirtį. Jei duomenų elementui yra užraktas, skirtas atlikti rašymo operaciją, jis vadinamas išskirtiniu užraktu.

1. Bendras užraktas (S):

Bendras užraktas taip pat vadinamas tik skaitymo užraktu. Naudojant bendrą užraktą, duomenų elementą galima bendrinti tarp operacijų. Taip yra todėl, kad niekada neturėsite leidimo atnaujinti duomenų elemento duomenis.

Pavyzdžiui, apsvarstykite atvejį, kai dvi operacijos rodo asmens sąskaitos likutį. Duomenų bazė leis jiems skaityti uždėjus bendrą užraktą. Tačiau jei kita operacija nori atnaujinti tos paskyros likutį, bendras užraktas neleidžia, kol skaitymo procesas nebus baigtas.

2. Išskirtinis užraktas (X):

Naudojant „Exclusive Lock“ duomenų elementą galima skaityti ir rašyti. Tai yra išskirtinė ir negali būti laikoma tuo pačiu duomenų elementu. „X-lock“ prašoma naudojant „lock-x“ instrukciją. Operacijos gali atrakinti duomenų elementą baigus „rašymo“ operaciją.

Pavyzdžiui, kai operacijai reikia atnaujinti asmens sąskaitos likutį. Galite leisti atlikti šią operaciją uždėdami „X lock“. Todėl, kai antrasis sandoris nori skaityti ar rašyti, išskirtinis užraktas neleidžia atlikti šios operacijos.

3. Paprastas užrakto protokolas

Šio tipo užraktu pagrįsti protokolai leidžia operacijoms gauti kiekvieno objekto užraktą prieš pradedant veikti. Operacijos gali atrakinti duomenų elementą baigus „rašymo“ operaciją.

4. Išankstinis reikalavimas užrakinti

Iš anksto pareikalavus užrakto protokolas padeda įvertinti operacijas ir sukurti reikalingų duomenų elementų, reikalingų vykdymo procesui pradėti, sąrašą. Tais atvejais, kai suteikiamos visos spynos, operacija vykdoma. Po to visos spynos atleidžiamos, kai baigiasi visos jos operacijos.

Badavimas

Badavimas yra situacija, kai norint įsigyti spyną, sandorio reikia laukti neribotą laiką.

Bado priežastys yra šios:

  • Laukiant užrakintų daiktų schema nėra tinkamai valdoma
  • Išteklių nutekėjimo atveju
  • Tas pats sandoris auka pasirenkamas pakartotinai

Aklavietė

Aklavietė reiškia konkrečią situaciją, kai du ar daugiau procesų laukia, kol vienas kitas išlaisvins šaltinį, arba daugiau nei du procesai laukia ištekliaus žiedinėje grandinėje.

Dviejų fazių užrakinimo protokolas

Dviejų fazių užrakinimo protokolas, taip pat žinomas kaip 2PL protokolas, yra lygiagretumo valdymo būdas DBVS, užtikrinantis nuoseklumą, taikant užraktą operacijų duomenims, kurie blokuoja kitas operacijas, kad būtų galima vienu metu pasiekti tuos pačius duomenis. Dviejų fazių užrakinimo protokolas padeda pašalinti lygiagretumo problemą DBVS.

Šis užrakinimo protokolas padalija operacijos vykdymo etapą į tris skirtingas dalis.

  • Pirmajame etape, kai operacija pradedama vykdyti, jai reikalingas leidimas reikalingoms spynoms.
  • Antroje dalyje sandoris gauna visas spynas. Kai sandoris atleidžia pirmąjį užraktą, prasideda trečiasis etapas.
  • Šiame trečiame etape sandoris negali reikalauti jokių naujų spynų. Vietoj to, jis atleidžia tik įsigytas spynas.

Dviejų fazių užrakinimo protokolas leidžia kiekvienai operacijai atlikti užrakto arba atrakinimo užklausą dviem veiksmais:

  • Augantis etapas : šiame etape sandoris gali gauti spynų, bet negali išleisti jokių spynų.
  • Susitraukimo fazė : šiame etape sandoris gali išlaisvinti spynas, bet neįgyti naujo užrakto

Tiesa, kad 2PL protokolas suteikia galimybę serijizuoti. Tačiau tai neužtikrina, kad neatsirastų aklavietės.

Pirmiau pateiktoje diagramoje galite pamatyti, kad vietiniai ir pasauliniai aklavietės detektoriai ieško aklavietės ir jas išsprendžia atnaujindami operacijas į pradines būsenas.

Griežtas dviejų fazių užrakinimo metodas

„Strict-Two“ fazių užrakinimo sistema yra beveik panaši į 2PL. Vienintelis skirtumas yra tas, kad „Strict-2PL“ niekada neatleidžia spynos po jo naudojimo. Jis užrakina visas spynas iki įsipareigojimo taško ir atleidžia visas spynas vienu ypu, kai procesas baigiasi.

Centralizuotas 2PL

Centralizuotame 2 PL už užrakto valdymo procesą atsakinga viena svetainė. Jis turi tik vieną užrakto tvarkyklę visai DBVS.

Pirminė kopija 2PL

Pirminis 2PL kopijos mechanizmas, daugelis užrakto tvarkyklių yra paskirstytos skirtingoms svetainėms. Po to tam tikras užrakto tvarkytuvas yra atsakingas už duomenų elementų rinkinio užrakto valdymą. Atnaujinus pirminę kopiją, pakeitimas perduodamas vergams.

Paskirstyta 2PL

Tokiu dviejų fazių užrakinimo mechanizmu užrakto valdikliai paskirstomi visoms svetainėms. Jie yra atsakingi už duomenų spynų valdymą toje svetainėje. Jei duomenys nėra pakartojami, jie prilygsta pagrindinei 2PL kopijai. Distributed 2PL ryšio išlaidos yra gana didesnės nei pirminės 2PL kopijos

Laiko žymos protokolai

Laiko žyme pagrįstas protokolas DBVS yra algoritmas, kuris naudoja sistemos laiką arba loginį skaitiklį kaip laiko žymę, kad nuosekliai atliktų vienu metu atliekamų operacijų vykdymą. Laiko žyme pagrįstas protokolas užtikrina, kad visos prieštaringos skaitymo ir rašymo operacijos būtų vykdomos laiko žymos tvarka.

Šiuo metodu pirmenybė visada teikiama senesniam sandoriui. Jis naudoja sistemos laiką nustatydamas operacijos laiko žymą. Tai dažniausiai naudojamas lygiagretumo protokolas.

Užraktu pagrįsti protokolai padeda valdyti konfliktinių operacijų tvarką, kai jos bus vykdomos. Laiko žymos protokolai konfliktus valdo iškart, kai tik sukuriama operacija.

Pavyzdys:

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.

Privalumai :

  • Tvarkaraščiai yra serijiniai, kaip ir 2PL protokolai
  • Nereikia laukti sandorio, kuris pašalina aklavietės galimybę!

Trūkumai:

Badas yra įmanomas, jei ta pati operacija pradedama iš naujo ir nuolat nutraukiama

Patvirtinimu pagrįstas protokolas

Patvirtinimu pagrįstas protokolas DBVS, taip pat žinomas kaip „Optimistic Concurrency Control Technique“ yra metodas išvengti sutapimo operacijose. Šiame protokole vietinės operacijos duomenų kopijos yra atnaujinamos, o ne patys duomenys, o tai sukelia mažiau trukdžių vykdant operaciją.

Patvirtinimo protokolas atliekamas šiais trimis etapais:

  1. Perskaitykite fazę
  2. Patvirtinimo etapas
  3. Rašymo fazė

Perskaitykite fazę

Skaitymo fazėje duomenų vertes iš duomenų bazės galima nuskaityti atliekant operaciją, tačiau rašymo operacija ar naujinimai taikomi tik vietinėms duomenų kopijoms, o ne tikrajai duomenų bazei.

Patvirtinimo etapas

Patvirtinimo fazėje duomenys yra tikrinami, siekiant užtikrinti, kad taikant operacijų naujinimus duomenų bazėje nebūtų pažeidžiamas nuoseklumas.

Rašymo fazė

Rašymo fazėje naujinimai pritaikomi duomenų bazei, jei patvirtinimas yra sėkmingas, kita; naujinimai netaikomi, o operacija grąžinama atgal.

Gero lygiavertiškumo protokolo charakteristikos

Idealus lygiagretumo valdymo DBVS mechanizmas turi šiuos tikslus:

  • Turi būti atsparus svetainės ir komunikacijos gedimams.
  • Tai leidžia lygiagrečiai vykdyti operacijas, kad būtų pasiektas maksimalus sutapimas.
  • Jo saugojimo mechanizmai ir skaičiavimo metodai turėtų būti kuklūs, kad sumažėtų pridėtinės išlaidos.
  • Ji turi įgyvendinti tam tikrus sandorių atominių veiksmų struktūros apribojimus.

Santrauka

  • Lygiagretumo kontrolė yra DBVS procedūra, skirta vienu metu valdyti operacijas, nekonfliktuojant tarpusavyje.
  • Prarasti atnaujinimai, nešvarus skaitymas, nepakartojamas skaitymas ir neteisinga suvestinės problema yra problemos, su kuriomis susiduria dėl to, kad trūksta lygiagretumo kontrolės.
  • Užraktu pagrįsti, dviejų fazių, laiko žymų, patvirtinimo pagrindu yra lygiagretumo valdymo protokolų tipai
  • Spyna gali būti „Shared“ (S) arba „Exclusive“ (X)
  • Dviejų fazių užrakinimo protokolas, kuris taip pat žinomas kaip 2PL protokolo poreikio operacija, turėtų įsigyti užraktą, kai jis atleis vieną iš savo spynų. Jis turi 2 fazes auga ir susitraukia.
  • Laiko žyme pagrįstas algoritmas naudoja laiko žymą, kad nuosekliai atliktų vienu metu atliekamų operacijų vykdymą. Protokole naudojamas laiko laikas arba loginis skaičius kaip laiko žymė.

Įdomios straipsniai...