DBMS-yhdenmukaisuuden valvonta: Aikaleima ja lukituspohjaiset protokollat

Mikä on Concurrency Control?

Samanaikaisuuden valvonta Tietokannan hallintajärjestelmässä on prosessi, jolla hallinnoidaan samanaikaisia ​​toimintoja ilman ristiriitoja keskenään. Se varmistaa, että tietokantatapahtumat suoritetaan samanaikaisesti ja tarkasti oikeiden tulosten tuottamiseksi rikkomatta kyseisen tietokannan tietojen eheyttä.

Samanaikainen käyttö on melko helppoa, jos kaikki käyttäjät vain lukevat tietoja. He eivät voi millään tavalla häiritä toisiaan. Vaikka missä tahansa käytännön tietokannassa, siinä olisi sekoitus READ- ja WRITE-toimintoja, joten samanaikaisuus on haaste.

DBMS Concurrency Controlia käytetään ratkaisemaan tällaisia ​​ristiriitoja, joita esiintyy useimmiten monen käyttäjän järjestelmässä. Siksi Concurrency Control on tärkein elementti tietokannan hallintajärjestelmän asianmukaiselle toiminnalle, jossa kaksi tai useampi tietokantatapahtuma suoritetaan samanaikaisesti, mikä edellyttää pääsyn samoihin tietoihin.

Samanaikaisuuden mahdolliset ongelmat

Tässä on joitain ongelmia, joita todennäköisesti kohtaat käyttäessäsi DBMS-yhteensopivuuden hallintamenetelmää:

  • Kadonneet päivitykset tapahtuu, kun useat tapahtumat valitsevat saman rivin ja päivittävät rivin valitun arvon perusteella
  • Sitoutumattomia riippuvuusongelmia ilmenee, kun toinen tapahtuma valitsee rivin, jota toinen tapahtuma päivittää (likainen lukea)
  • Ei-toistettavissa oleva luku tapahtuu, kun toinen tapahtuma yrittää käyttää samaa riviä useita kertoja ja lukee joka kerta eri dataa.
  • Virheellinen yhteenveto-ongelma tapahtuu, kun yksi tapahtuma ottaa yhteenvedon kaikkien toistuvan tietokohteen esiintymien arvosta ja toinen tapahtuma päivittää muutaman kyseisen tietokohteen esiintymän. Tässä tilanteessa tuloksena oleva yhteenveto ei heijasta oikeaa tulosta.

Miksi käyttää Concurrency-menetelmää?

Syitä samanaikaisuuden hallintamenetelmän käyttöön on DBMS:

  • Eristyksen soveltaminen ristiriitaisten liiketoimien välisen keskinäisen poissulkemisen avulla
  • Luku-kirjoitus- ja kirjoitus-kirjoitusristiriitojen ratkaiseminen
  • Tietokannan johdonmukaisuuden säilyttäminen säilyttämällä jatkuvasti suoritusesteitä
  • Järjestelmän on ohjattava samanaikaisten tapahtumien vuorovaikutusta. Tämä ohjaus saavutetaan käyttämällä rinnakkaisohjausmenetelmiä.
  • Samanaikaisuuden ohjaus auttaa varmistamaan sarjoitettavuuden

esimerkki

Oletetaan, että kaksi henkilöä, jotka menevät samaan aikaan elektronisiin kioskeihin ostamaan elokuvalipun samaan elokuvaan ja samaan esitykseen.

Elokuvanäytökseen on kuitenkin vain yksi paikka jäljellä kyseisessä teatterissa. Ilman samanaikaisuuden hallintaa DBMS:ssä on mahdollista, että molemmat elokuvan katsojat päätyvät ostamaan lipun. Samanaikaisuuden ohjausmenetelmä ei kuitenkaan salli tämän tapahtumista. Molemmat elokuvavieraat pääsevät edelleen käsiksi elokuvapaikkatietokantaan kirjoitettuihin tietoihin. Mutta samanaikaisuuden valvonta tarjoaa lipun vain ostajalle, joka on suorittanut tapahtumaprosessin ensin.

Samanaikaisuuden ohjausprotokollat

Erilaiset samanaikaisuuden ohjausprotokollat ​​tarjoavat erilaisia ​​etuja sallitun samanaikaisuuden määrän ja niiden aiheuttaman yleiskustannusten välillä. Seuraavat ovat DBMS:n samanaikaisuuden ohjaustekniikat:

  • Lukituspohjaiset protokollat
  • Kaksivaiheinen lukitusprotokolla
  • Aikaleimapohjaiset protokollat
  • Validointiin perustuvat protokollat

Lukkoon perustuvat protokollat

Lukituspohjaiset protokollat DBMS:ssä on mekanismi, jossa tapahtuma ei voi lukea tai kirjoittaa tietoja, ennen kuin se saa asianmukaisen lukituksen. Lukituspohjaiset protokollat ​​auttavat poistamaan samanaikaisuusongelman DBMS:ssä samanaikaisissa tapahtumissa lukitsemalla tai eristämällä tietyn tapahtuman yhdelle käyttäjälle.

Lukko on tietomuuttuja, joka liittyy tietokohteeseen. Tämä lukko tarkoittaa, että dataalkiolle voidaan suorittaa toimintoja. DBMS:n lukot auttavat synkronoimaan pääsyn tietokantakohteisiin samanaikaisten tapahtumien avulla.

Kaikki lukituspyynnöt tehdään samanaikaisuuden hallinnan johtajalle. Tapahtumat jatkuvat vasta, kun lukituspyyntö on hyväksytty.

Binäärilukot: Tietokohteen binaarilukko voi joko lukita tai lukitsematon.

Jaettu/yksinomainen: Tämäntyyppinen lukitusmekanismi erottaa DBMS:n lukot niiden käyttötarkoitusten perusteella. Jos tietokohteeseen hankitaan lukko kirjoitustoiminnon suorittamista varten, sitä kutsutaan eksklusiiviseksi lukitukseksi.

1. Jaettu lukko (S):

Jaettua lukkoa kutsutaan myös vain luku -lukoksi. Jaetun lukon avulla tietokohde voidaan jakaa tapahtumien kesken. Tämä johtuu siitä, että sinulla ei ole koskaan lupaa päivittää tietokohteen tietoja.

Ajatellaan esimerkiksi tapausta, jossa kaksi tapahtumaa lukevat henkilön tilin saldoa. The tietokanta antaa heidän lukea asettamalla jaetun lukon. Jos toinen tapahtuma kuitenkin haluaa päivittää kyseisen tilin saldon, jaettu lukitus estää sen, kunnes lukuprosessi on ohi.

2. Ainutlaatuinen lukko (X):

Exclusive Lockin avulla tietokohde voidaan lukea ja kirjoittaa. Tämä on eksklusiivinen, eikä sitä voida pitää samanaikaisesti samassa tietokohteessa. X-lock pyydetään käyttämällä lock-x-käskyä. Tapahtumat voivat avata tietokohteen lukituksen kirjoitustoiminnon päätyttyä.

Esimerkiksi kun tapahtuman on päivitettävä henkilön tilin saldo. Voit sallia tämän tapahtuman asettamalla X-lukon siihen. Siksi, kun toinen tapahtuma haluaa lukea tai kirjoittaa, eksklusiivinen lukitus estää tämän toiminnon.

3. Yksinkertainen lukitusprotokolla

Tämän tyyppisten lukkopohjaisten protokollien avulla tapahtumat voivat saada lukon jokaiseen objektiin ennen toiminnan aloittamista. Tapahtumat voivat avata tietokohteen lukituksen kirjoitustoiminnon päätyttyä.

4. Esivaatimuksen lukitus

Esivaatimuksen tekevä lukitusprotokolla auttaa arvioimaan toimintoja ja luomaan luettelon vaadituista tiedoista, joita tarvitaan suoritusprosessin käynnistämiseen. Tilanteessa, jossa kaikki lukot on myönnetty, tapahtuma suoritetaan. Sen jälkeen kaikki lukot vapautuvat, kun kaikki sen toiminnot ovat ohi.

nälkiintyminen

Nälkä on tilanne, jossa liiketoimi joutuu odottamaan määräämättömän ajan lukon hankkimiseksi.

Seuraavat syyt nälkään:

  • Lukittujen kohteiden odotusjärjestelmää ei hallita oikein
  • Resurssivuodon tapauksessa
  • Sama tapahtuma valitaan uhriksi toistuvasti

umpikuja

Umpikuja viittaa tiettyyn tilanteeseen, jossa kaksi tai useampi prosessi odottaa toisiaan vapauttamaan resurssin tai useampi kuin kaksi prosessia odottaa resurssia ympyräketjussa.

Kaksivaiheinen lukitusprotokolla

Kaksivaiheinen lukitusprotokolla 2PL-protokolla, joka tunnetaan myös nimellä XNUMXPL-protokolla, on DBMS-järjestelmän samanaikaisuuden hallintamenetelmä, joka varmistaa sarjoitettavuuden soveltamalla tapahtumatietoihin lukkoa, joka estää muita tapahtumia pääsemästä samaan dataan samanaikaisesti. Kaksivaiheinen lukitusprotokolla auttaa poistamaan samanaikaisuusongelman DBMS:ssä.

Tämä lukitusprotokolla jakaa tapahtuman suoritusvaiheen kolmeen eri osaan.

  • Ensimmäisessä vaiheessa, kun tapahtuma alkaa suorittaa, se vaatii luvan tarvitsemiinsa lukoihin.
  • Toinen osa on, jossa tapahtuma saa kaikki lukot. Kun tapahtuma vapauttaa ensimmäisen lukituksensa, kolmas vaihe alkaa.
  • Tässä kolmannessa vaiheessa kauppa ei voi vaatia uusia lukkoja. Sen sijaan se vapauttaa vain hankitut lukot.

Kaksivaiheinen lukitusprotokolla

Kaksivaiheisen lukitusprotokollan avulla jokainen tapahtuma voi tehdä lukitus- tai avauspyynnön kahdessa vaiheessa:

  • Kasvuvaihe: Tässä vaiheessa tapahtuma saattaa saada lukkoja, mutta ei voi vapauttaa lukkoja.
  • Kutistuva vaihe: Tässä vaiheessa tapahtuma voi vapauttaa lukot, mutta ei saada uutta lukitusta

On totta, että 2PL-protokolla tarjoaa sarjoitettavuuden. Se ei kuitenkaan takaa, ettei lukkiutumista tapahdu.

Yllä annetusta kaaviosta voit nähdä, että paikalliset ja globaalit lukkiutumisilmaisimet etsivät umpikujaa ja ratkaisevat ne jatkamalla tapahtumia alkuperäisiin tiloihinsa.

Tiukka kaksivaiheinen lukitusmenetelmä

Strict-Two-vaihelukitusjärjestelmä on melkein samanlainen kuin 2PL. Ainoa ero on, että Strict-2PL ei koskaan vapauta lukkoa käytön jälkeen. Se pitää kaikki lukot sitomispisteeseen asti ja vapauttaa kaikki lukot kerralla, kun prosessi on ohi.

Keskitetty 2PL

Centralized 2 PL:ssä yksi toimipaikka vastaa lukonhallintaprosessista. Siinä on vain yksi lukitushallinta koko DBMS:lle.

Ensisijainen kopio 2PL

Ensisijainen kopio 2PL-mekanismi, monet lukkohallintalaitteet jaetaan eri sivustoille. Tämän jälkeen tietty lukon hallinta on vastuussa lukon hallinnasta tietokohteiden joukolle. Kun ensisijainen kopio on päivitetty, muutos välitetään orjille.

Jaettu 2PL

Tällaisessa kaksivaiheisessa lukitusmekanismissa lukituksen hallintalaitteet on jaettu kaikille sivustoille. He ovat vastuussa kyseisen sivuston tietojen lukkojen hallinnasta. Jos tietoja ei replikoida, se vastaa ensisijaista kopiota 2PL. Distributed 2PL:n viestintäkustannukset ovat melko korkeammat kuin ensisijaisen 2PL:n

Aikaleimapohjaiset protokollat

Aikaleimapohjainen protokolla DBMS:ssä on algoritmi, joka käyttää järjestelmän aikaa tai loogista laskuria aikaleimana samanaikaisten tapahtumien suorittamisen sarjoittamiseksi. Aikaleimapohjainen protokolla varmistaa, että kaikki ristiriitaiset luku- ja kirjoitustoiminnot suoritetaan aikaleimajärjestyksessä.

Vanhempi tapahtuma on aina etusijalla tässä menetelmässä. Se käyttää järjestelmän aikaa määrittääkseen tapahtuman aikaleiman. Tämä on yleisimmin käytetty samanaikaisuusprotokolla.

Lukituspohjaiset protokollat ​​auttavat sinua hallitsemaan ristiriitaisten tapahtumien välistä järjestystä, kun ne suoritetaan. Aikaleimapohjaiset protokollat ​​hallitsevat ristiriitoja heti, kun toiminto on luotu.

Esimerkiksi:

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.

edut:

  • Aikataulut ovat sarjoitettavissa kuten 2PL-protokollat
  • Ei odottelua tapahtumaan, mikä eliminoi umpikujan mahdollisuuden!

Haitat:

Nälkä on mahdollista, jos sama tapahtuma käynnistetään uudelleen ja keskeytetään jatkuvasti

Vahvistukseen perustuva protokolla

Validointiin perustuva protokolla DBMS:ssä, joka tunnetaan myös nimellä Optimistic Concurrency Control Technique, on tapa välttää tapahtumien samanaikaisuus. Tässä protokollassa tapahtumatietojen paikalliset kopiot päivitetään itse tietojen sijaan, mikä johtaa vähemmän häiriöitä tapahtuman suorittamiseen.

Validointiin perustuva protokolla suoritetaan seuraavissa kolmessa vaiheessa:

  1. Lue vaihe
  2. Validointivaihe
  3. Kirjoita vaihe

Lue vaihe

Lukuvaiheessa tapahtuma voi lukea tietokannan data-arvot, mutta kirjoitustoimintoa tai päivityksiä sovelletaan vain paikallisiin tietokopioihin, ei varsinaiseen tietokantaan.

Validointivaihe

Validointivaiheessa tiedot tarkistetaan sen varmistamiseksi, että serialoitavuus ei riko, kun tapahtumapäivityksiä käytetään tietokantaan.

Kirjoita vaihe

Kirjoitusvaiheessa päivitykset otetaan käyttöön tietokantaan, jos validointi onnistuu, muuten; päivityksiä ei oteta käyttöön, ja tapahtuma peruutetaan.

Hyvän samanaikaisuusprotokollan ominaisuudet

Ihanteellisella samanaikaisuuden hallinta-DBMS-mekanismilla on seuraavat tavoitteet:

  • On oltava sietokykyinen sivuston ja viestintähäiriöiden suhteen.
  • Se mahdollistaa tapahtumien rinnakkaisen suorittamisen maksimaalisen samanaikaisuuden saavuttamiseksi.
  • Sen tallennusmekanismien ja laskentamenetelmien tulee olla vaatimattomia yleiskustannusten minimoimiseksi.
  • Sen on pakotettava tiettyjä rajoituksia transaktioiden ydintoimintojen rakenteeseen.

Yhteenveto

  • Samanaikaisuuden valvonta on menettely DBMS samanaikaisten toimintojen hallintaan ilman ristiriitoja keskenään.
  • Kadonneet päivitykset, likainen luku, ei-toistettavissa oleva luku ja virheellinen yhteenvetoongelma ovat ongelmia, jotka johtuvat samanaikaisuuden hallinnan puutteesta.
  • Lukituspohjaiset, kaksivaiheiset, aikaleimapohjaiset ja vahvistuspohjaiset ovat samanaikaisuuden käsittelyprotokollien tyyppejä
  • Lukko voi olla jaettu (S) tai eksklusiivinen (X)
  • Kaksivaiheisen lukitusprotokollan, joka tunnetaan myös nimellä 2PL-protokollan tarpeet, pitäisi saada lukko sen jälkeen, kun se vapauttaa yhden lukoistaan. Siinä on 2 kasvu- ja kutistumisvaihetta.
  • Aikaleimapohjainen algoritmi käyttää aikaleimaa sarjoittamaan samanaikaisten tapahtumien suorittamisen. Protokolla käyttää System Time tai Loogical Count as aikaleima.