DBMS: n samanaikaisuuden hallinta: aikaleima & Lukko-pohjaiset protokollat

Sisällysluettelo:

Anonim

Mikä on samanaikaisuuden hallinta?

Samanaikaisuuden hallinta tietokannan hallintajärjestelmässä on menettely samanaikaisen toiminnan hallitsemiseksi ristiriidassa 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 mitä tahansa käytännön tietokantaa varten, siinä olisi sekoitus READ- ja WRITE-operaatioita, joten samanaikaisuus on haaste.

DBMS-samanaikaisuuden hallintaa käytetään sellaisten ristiriitojen ratkaisemiseen, joita esiintyy enimmäkseen monen käyttäjän järjestelmässä. Siksi samanaikaisuuden hallinta on tärkein tekijä tietokannan hallintajärjestelmän moitteettomalle toiminnalle, kun kaksi tai useampia tietokantatapahtumia suoritetaan samanaikaisesti, mikä edellyttää pääsyä samoihin tietoihin.

Tässä opetusohjelmassa opit

  • Mikä on samanaikaisuuden hallinta?
  • Samanaikaisuuden mahdolliset ongelmat
  • Miksi käyttää samanaikaisuusmenetelmää?
  • Samanaikaisuuden valvontaprotokollat
  • Lukko-pohjaiset protokollat
  • Kaksivaiheinen lukitus (2PL) -protokolla
  • Aikaleimapohjaiset protokollat
  • Vahvistukseen perustuva protokolla
  • Hyvän samanaikaisuuden protokollan ominaisuudet

Samanaikaisuuden mahdolliset ongelmat

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

  • Kadonnut päivitykset tapahtuvat, kun useita tapahtumia valitaan sama rivi ja päivitetään rivi valitun arvon perusteella
  • Sitoutumattomia riippuvuusongelmia ilmenee, kun toinen tapahtuma valitsee rivin, jonka päivittää toinen tapahtuma ( likainen luku )
  • Toistamaton lukeminen tapahtuu, kun toinen tapahtuma yrittää käyttää samaa riviä useita kertoja ja lukee eri tietoja joka kerta.
  • Virheellinen yhteenveto-ongelma ilmenee, kun yksi tapahtuma ottaa yhteenvedon kaikkien toistetun data-alkion kaikkien esiintymien arvosta, ja toinen tapahtuma päivittää muutaman kyseisen tietokohteen esiintymän. Tässä tilanteessa tuloksena oleva yhteenveto ei kuvasta oikeaa tulosta.

Miksi käyttää samanaikaisuusmenetelmää?

Syyt samanaikaisuuden hallintamenetelmään ovat DBMS:

  • Sovelletaan eristämistä ristiriitaisten tapahtumien keskinäisen poissulkemisen avulla
  • Luku-, kirjoitus- ja kirjoitus-ristiriitojen ratkaiseminen
  • Säilyttää tietokannan yhtenäisyys säilyttämällä jatkuvasti suoritusesteitä
  • Järjestelmän on valvottava samanaikaisten tapahtumien välistä vuorovaikutusta. Tämä ohjaus saavutetaan samanaikaisilla ohjausjärjestelmillä.
  • Samanaikaisuuden hallinta auttaa varmistamaan sarjoitettavuuden

Esimerkki

Oletetaan, että kaksi ihmistä, jotka käyvät samanaikaisesti sähköisissä kioskeissa ostamassa elokuvalipun samalle elokuvalle ja samalle esitysajalle.

Kyseisessä teatterissa on kuitenkin vain yksi paikka elokuvaesitykseen. Ilman samanaikaisuuden hallintaa DBMS: ssä on mahdollista, että molemmat elokuvan kävijät ostavat lipun. Samanaikaisuuden valvontamenetelmä ei kuitenkaan salli tämän tapahtua. Molemmat elokuvan kävijät voivat silti käyttää elokuvan istumistietokantaan kirjoitettuja tietoja. Mutta samanaikaisuuden hallinta tarjoaa lipun vain ostajalle, joka on suorittanut tapahtuman ensin.

Samanaikaisuuden valvontaprotokollat

Erilaiset samanaikaisuuden valvontaprotokollat ​​tarjoavat erilaisia ​​etuja niiden salliman samanaikaisuuden määrän ja asettamien yleiskustannusten välillä. Seuraavassa on samanaikaisuuden hallinnan tekniikat DBMS: ssä:

  • Lukko-pohjaiset protokollat
  • Kaksivaiheinen lukitusprotokolla
  • Aikaleimaan perustuvat protokollat
  • Vahvistukseen perustuvat protokollat

Lukko-pohjaiset 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 samanaikaisia ​​tapahtumia koskevan DBMS: n samanaikaisuusongelman lukitsemalla tai eristämällä tietyn tapahtuman yhdelle käyttäjälle.

Lukko on tietomuuttuja, joka liittyy tietokohteeseen. Tämä lukko tarkoittaa, että toiminnot, jotka voidaan suorittaa tietokohteelle. DBMS: n lukot auttavat synkronoimaan pääsyn tietokantakohteisiin samanaikaisilla tapahtumilla.

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

Binäärilukot: Tietokohteen binäärilukko voi joko lukita tai avata tiloja.

Jaettu / yksinomainen: Tämän tyyppinen lukitusmekanismi erottaa DBMS: n lukot niiden käytön perusteella. Jos tietokohteelle hankitaan lukitus kirjoitusoperaation suorittamiseksi, sitä kutsutaan yksinoikeuslukoksi.

1. Jaettu lukko (S):

Jaettua lukitusta kutsutaan myös vain luku -lukoksi. Jaetun lukituksen avulla tieto voidaan jakaa tapahtumien välillä. Tämä johtuu siitä, että sinulla ei ole koskaan lupaa päivittää tietokohteen tietoja.

Tarkastellaan esimerkiksi tapausta, jossa kaksi tapahtumaa lukee henkilön tilisaldoa. Tietokanta antaa heidän lukea asettamalla jaetun lukituksen. Jos jokin toinen tapahtuma haluaa päivittää tilin saldon, jaettu lukitus estää sen, kunnes lukuprosessi on ohi.

2. Yksinomainen lukko (X):

Exclusive Lock -toiminnon avulla tieto voidaan lukea ja kirjoittaa. Tämä on yksinoikeus, eikä sitä voida pitää samanaikaisesti samassa tietueessa. X-lukkoa pyydetään lukitus-x-ohjeella. Tapahtumat voivat avata tietokohteen lukituksen kirjoittamisen jälkeen.

Esimerkiksi, kun tapahtuman on päivitettävä henkilön tilisaldo. Voit sallia tämän tapahtuman asettamalla siihen X-lukon. Siksi, kun toinen tapahtuma haluaa lukea tai kirjoittaa, yksinoikeuslukko estää tämän toiminnan.

3. Yksinkertainen lukitusprotokolla

Tämän tyyppiset lukituspohjaiset protokollat ​​sallivat tapahtumien saada lukituksen jokaiselle objektille ennen toiminnan aloittamista. Tapahtumat voivat avata tietokohteen lukituksen kirjoittamisen jälkeen.

4. Lukituksen ennakkovaatimus

Lukitusprotokollan ennakkovaatimus auttaa arvioimaan toimintoja ja luomaan luettelon tarvittavista tietoeristä, joita tarvitaan suorituksen aloittamiseen. Jos kaikki lukot on myönnetty, tapahtuma toteutetaan. Sen jälkeen kaikki lukot vapautuvat, kun kaikki toiminnot ovat ohi.

Nälkään

Nälkä on tilanne, kun liiketoimen on odotettava määrittelemätöntä aikaa lukon hankkimiseksi.

Nälkään syyt ovat seuraavat:

  • Kun lukittujen esineiden odotusohjelmaa ei hallita oikein
  • Resurssivuodon tapauksessa
  • Sama tapahtuma valitaan uhriksi toistuvasti

Umpikujaan

Umpikuja viittaa tiettyyn tilanteeseen, jossa kaksi tai useampia prosesseja odottavat toistensa vapauttamista tai enemmän kuin kaksi prosessia odottaa resurssia pyöreässä ketjussa.

Kaksivaiheinen lukitusprotokolla

Kaksivaiheinen lukitusprotokolla, joka tunnetaan myös nimellä 2PL-protokolla, on menetelmä samanaikaisuuden hallitsemiseksi DBMS: ssä, joka varmistaa sarjoitettavuuden soveltamalla tapahtumadataan lukituksen, joka estää muita tapahtumia pääsemään samoihin tietoihin 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 tarvitsemilleen lukoille.
  • Toinen osa on se, missä tapahtuma saa kaikki lukot. Kun tapahtuma vapauttaa ensimmäisen lukituksen, kolmas vaihe alkaa.
  • Tässä kolmannessa vaiheessa tapahtuma ei voi vaatia uusia lukituksia. Sen sijaan se vapauttaa vain hankitut lukot.

Kaksivaiheinen lukitusprotokolla antaa jokaiselle tapahtumalle mahdollisuuden tehdä lukitus- tai avauspyyntö kahdessa vaiheessa:

  • Kasvava vaihe : Tässä vaiheessa tapahtuma voi hankkia lukkoja, mutta ei välttämättä vapauta lukkoja.
  • Kutistusvaihe : Tässä vaiheessa tapahtuma voi vapauttaa lukot, mutta ei saada uutta lukitusta

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

Yllä olevasta kaaviosta näet, että paikalliset ja globaalit umpikuja-ilmaisimet etsivät umpikujia ja ratkaisevat ne palauttamalla tapahtumat alkutilaansa.

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 sitoutumispisteeseen asti ja vapauttaa kaikki lukot kerralla, kun prosessi on ohi.

Keskitetty 2PL

Keskitetyssä 2 PL: ssä lukitushallintaprosessista vastaa yksi sivusto. Sillä on vain yksi lukituksenhallinta koko DBMS: lle.

Ensisijainen kopio 2PL

Ensisijaisen kopion 2PL-mekanismi, monet lukitushallinnot jaetaan eri sivustoille. Sen jälkeen tietyn lukituksen hallinta on vastuussa tietokohteiden lukituksen hallinnasta. Kun ensisijainen kopio on päivitetty, muutos levitetään orjille.

Jaettu 2PL

Tällaisessa kaksivaiheisessa lukitusmekanismissa lukkojen hallitsijat jaetaan kaikille sivustoille. He ovat vastuussa tietolukkojen hallinnasta kyseisellä sivustolla. Jos tietoja ei toisteta, ne vastaavat ensisijaista kopiota 2PL. Jaetun 2PL: n viestintäkustannukset ovat melko korkeammat kuin ensisijaisen kopion 2PL

Aikaleimapohjaiset protokollat

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

Vanhemmalle tapahtumalle annetaan aina etusija tässä menetelmässä. Se käyttää järjestelmän aikaa määrittää tapahtuman aikaleiman. Tämä on yleisimmin käytetty samanaikaisuusprotokolla.

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

Esimerkki:

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.

Edut :

  • Aikataulut ovat sarjoitettavissa aivan kuten 2PL-protokollat
  • Ei odota kauppaa, mikä eliminoi umpikujat!

Haitat:

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

Vahvistukseen perustuva protokolla

Vahvistuspohjainen protokolla DBMS: ssä, joka tunnetaan myös nimellä Optimistic Concurrency Control Technique, on menetelmä samanaikaisuuden välttämiseksi tapahtumissa. Tässä protokollassa tapahtumadatan paikalliset kopiot päivitetään itse tietojen sijasta, mikä johtaa vähemmän häiriöihin tapahtuman suorittamisen aikana.

Vahvistuspohjainen protokolla suoritetaan seuraavissa kolmessa vaiheessa:

  1. Lue vaihe
  2. Vahvistusvaihe
  3. Kirjoitusvaihe

Lue vaihe

Lukuvaiheessa tietokannan data-arvot voidaan lukea tapahtumalla, mutta kirjoitusoperaatiota tai päivityksiä käytetään vain paikallisiin tietokopioihin, ei varsinaiseen tietokantaan.

Vahvistusvaihe

Vahvistusvaiheessa tiedot tarkistetaan sen varmistamiseksi, että sarjoitettavuutta ei loukata tapahtumapäivityksiä sovellettaessa tietokantaan.

Kirjoitusvaihe

Kirjoitusvaiheessa päivitykset lisätään tietokantaan, jos vahvistus onnistuu, muuten; päivityksiä ei käytetä ja tapahtuma palautetaan.

Hyvän samanaikaisuuden protokollan ominaisuudet

Ihanteellisella samanaikaisuuden hallinnan DBMS-mekanismilla on seuraavat tavoitteet:

  • Sen on oltava joustava sivuston ja viestinnän häiriöille.
  • Sen avulla tapahtumien samanaikainen toteutus saa aikaan maksimaalisen samanaikaisuuden.
  • Sen varastointimekanismien ja laskentamenetelmien tulisi olla vaatimattomia yleiskustannusten minimoimiseksi.
  • Sen on pantava täytäntöön joitain rajoituksia liiketoimien atomitoimintojen rakenteelle.

Yhteenveto

  • Samanaikaisuuden hallinta on DBMS: ssä menettely samanaikaisen toiminnan hallitsemiseksi ristiriidassa keskenään.
  • Kadonneet päivitykset, likainen lukeminen, toistamaton lukeminen ja virheellinen yhteenvetoongelma ovat ongelmia, jotka johtuvat samanaikaisuuden hallinnan puutteesta.
  • Lukituspohjainen, kaksivaiheinen, aikaleimapohjainen, validointipohjainen ovat samanaikaisuuden käsittelyprotokollatyyppejä
  • Lukko voi olla Jaettu (S) tai Yksinomainen (X)
  • Kaksivaiheisen lukitusprotokollan, joka tunnetaan myös nimellä 2PL-protokollan tarvitseva tapahtuma, pitäisi hankkia lukko, kun se vapauttaa yhden lukkoistaan. Siinä on 2 vaihetta, jotka kasvavat ja kutistuvat.
  • Aikaleimapohjainen algoritmi käyttää aikaleimaa sarjoitettavien tapahtumien suorittamiseen. Protokolla käyttää aikaleimaa järjestelmän aikaa tai loogista lukua.