Tietokannan hallinnan samanaikaisuuden hallinta: Lukitus- ja aikaleimapohjaiset protokollat

โšก ร„lykรคs yhteenveto

Tietokannan hallinnan (DBMS) samanaikaisuuden hallinta hallitsee samanaikaisia โ€‹โ€‹tapahtumia, jotta ne toimivat tarkasti rikkomatta tietojen eheyttรค. Se estรครค poikkeavuuksia, kuten pรคivitysten katoamista ja likaisia โ€‹โ€‹lukuja, kรคyttรคmรคllรค lukituspohjaisia, kaksivaiheisia, aikaleimapohjaisia โ€‹โ€‹ja validointipohjaisia โ€‹โ€‹protokollia, jotka takaavat sarjoitettavat tulokset.

  • ๐Ÿ‘ฅ Ydintarkoitus: Samanaikaisuuden hallinta sallii useiden tapahtumien koskettaa jaettua dataa samanaikaisesti samalla kunping tietokanta on johdonmukainen.
  • โš ๏ธ Estetyt poikkeavuudet: Kadonnut pรคivitys, likainen luku, ei-toistettava luku ja virheellinen yhteenveto ovat neljรค ongelmaa, jotka se pysรคyttรครค.
  • ๐Ÿ”’ Lukitusperusteinen: Jaetut ja eksklusiiviset lukot hallitsevat sitรค, voivatko muut lukea tai kirjoittaa dataelementtiรค.
  • ๐Ÿ” Kaksivaiheinen lukitus: Kasvava vaihe hankkii lukkoja ja kutistuva vaihe vapauttaa ne, mikรค takaa sarjoitettavuuden.
  • โฑ๏ธ Aikaleimaan perustuva: Vanhemmilla tapahtumilla on etusija, ja ristiriitaiset toiminnot jรคrjestetรครคn jรคrjestelmรคn aikaleiman mukaan.
  • โœ… Validointiin perustuva: Optimistinen ohjaus toimii paikallisissa kopioissa ja validoi vain ennen kirjoitusvaihetta.
  • ๐ŸŽฏ Tavoite: Maksimaalinen samanaikaisuus minimaalisella lisรคkululla, sietรครค sijainti- ja tietoliikennekatkoksia.

Lukitus- ja aikaleima-ajoittajat tietokannan hallinnan jรคrjestelmรคssรค

Mikรค on Concurrency Control?

Samanaikaisuuden valvonta Tietokannan hallintajรคrjestelmรคssรค se on menetelmรค samanaikaisten toimintojen hallitsemiseksi ilman ristiriitoja. Se varmistaa, ettรค tietokannan tapahtumat 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 dataa, koska he eivรคt voi hรคiritรค toisiaan. Kรคytรคnnรถssรค missรค tahansa tietokannassa on kuitenkin sekรค READ- ettรค WRITE-operaatioita, joten samanaikaisuudesta tulee haaste.

Tietokannan hallintajรคrjestelmien (DBMS) samanaikaisuuden hallintaa kรคytetรครคn tรคllaisten ristiriitojen ratkaisemiseen, joita esiintyy enimmรคkseen usean kรคyttรคjรคn jรคrjestelmรคssรค. Samanaikaisuuden hallinta on siksi yksi tรคrkeimmistรค tekijรถistรค tietokannan moitteettoman toiminnan kannalta, kun kaksi tai useampi tapahtuma suoritetaan samanaikaisesti ja vaatii pรครคsyn samaan dataan. Se toimii kรคsi kรคdessรค transaktioiden hallinta, joka mรครคrittelee tyรถyksikรถt, jotka samanaikaisuuden hallinnan on lomitettava turvallisesti.

Mahdollisia samanaikaisuuden ongelmia

Tรคssรค on joitakin ongelmia, joita todennรคkรถisesti kohtaat ilman asianmukaista tietokannan hallinnan samanaikaisuuden hallintaa:

  • Kadonneet pรคivitykset tapahtuu, kun useat tapahtumat valitsevat saman rivin ja pรคivittรคvรคt sen valitun arvon perusteella.
  • Sitoutumaton riippuvuus (likainen luku) tapahtuu, kun toinen tapahtuma valitsee rivin, jota on pรคivittรคnyt toinen, vielรค vahvistamaton tapahtuma.
  • Ei-toistettavissa oleva luku tapahtuu, kun toinen tapahtuma kรคyttรครค samaa riviรค useita kertoja ja lukee joka kerta eri tietoja.
  • Virheellinen yhteenveto tapahtuu, kun yksi tapahtuma tekee yhteenvedon toistuvien tietokohteiden kaikkien esiintymien arvosta, kun taas toinen tapahtuma pรคivittรครค muutamia nรคistรค esiintymistรค. Tuloksena oleva yhteenveto ei heijasta oikeaa tulosta.

Miksi kรคyttรครค samanaikaisuusmenetelmรครค?

Syitรค samanaikaisuuden hallintamenetelmรคn kรคyttรถรถn tietokannan hallinnan jรคrjestelmรคssรค:

  • Soveltaa eristรคmistรค keskinรคisen poissulkemisen avulla ristiriitaisten tapahtumien vรคlillรค.
  • Luku- ja kirjoitus- sekรค kirjoitus-ristiriitaongelmien ratkaiseminen.
  • Tietokannan yhtenรคisyyden sรคilyttรคmiseksi valvotaan jatkuvasti suoritusrajoituksia.
  • Samanaikaisten tapahtumien vรคlisen vuorovaikutuksen hallitsemiseksi kรคytetรครคn samanaikaisuuden hallintajรคrjestelmiรค.
  • Auttaa varmistamaan sarjoitettavuus.

esimerkki

Oletetaan, ettรค kaksi ihmistรค menee samaan aikaan elektronisille kioskeille ostamaan elokuvalippuja samaan elokuvaan ja samaan nรคytรถsaikaan.

Elokuvateatterissa on kuitenkin jรคljellรค vain yksi paikka kyseiseen esitykseen. Ilman samanaikaisuuden hallintaa on mahdollista, ettรค molemmat katsojat ostavat lipun. Samanaikaisuuden hallinta ei salli tรคtรค. Molemmat katsojat voivat edelleen kรคyttรครค elokuvakatsomotietokannan tietoja, mutta samanaikaisuuden hallinta tarjoaa lipun vain sille ostajalle, joka suorittaa maksuprosessin ensimmรคisenรค.

Samanaikaisuuden ohjausprotokollat

Eri samanaikaisuuden hallintaprotokollat โ€‹โ€‹tarjoavat erilaisia โ€‹โ€‹kompromisseja sallitun samanaikaisuuden mรครคrรคn ja aiheuttamansa lisรคkustannusten vรคlillรค. Tietokannan hallintajรคrjestelmien tรคrkeimmรคt samanaikaisuuden hallintatekniikat ovat:

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

Kutakin tarkastellaan vuorollaan alla alkaen yleisimmin kรคytetyistรค, lukkoon perustuvista protokollista.

Lukituspohjaiset protokollat

Lukituspohjaiset protokollat Tietokannan hallintajรคrjestelmissรค (DBMS) on mekanismi, jossa tapahtuma ei voi lukea tai kirjoittaa tietoalkiota ennen kuin se on saanut asianmukaisen lukituksen. Lukituspohjaiset protokollat โ€‹โ€‹auttavat poistamaan samanaikaisuusongelman lukitsemalla tai eristรคmรคllรค tietyn tietoalkion yhteen tapahtumaan.

Lukko on dataelementtiin liittyvรค datamuuttuja, joka ilmaisee, mitรค toimintoja sille voidaan suorittaa. Lukot auttavat synkronoimaan pรครคsyn tietokannan elementteihin samanaikaisten tapahtumien avulla. Kaikki lukituspyynnรถt tehdรครคn samanaikaisuuden hallinnan hallintaan, ja tapahtumat jatkuvat vasta, kun lukituspyyntรถ on myรถnnetty.

Binรครคrilukot: Tietoalkion binรครคrilukko voi olla joko lukitussa tai lukitsemattomassa tilassa.

Jaettu/yksinoikeudella: Tรคmรค lukitusmekanismi erottelee lukot niiden kรคytรถn perusteella. Jos lukko hankitaan kirjoitustoiminnon suorittamiseksi, sitรค kutsutaan eksklusiiviseksi lukoksi.

1. Jaettu lukko (S): Jaettua lukkoa kutsutaan myรถs vain luku -lukoksi. Jaetussa lukossa tietoja voidaan jakaa tapahtumien vรคlillรค, koska kenellรคkรครคn niistรค ei ole oikeutta pรคivittรครค niitรค. Esimerkiksi jos kaksi tapahtumaa lukee henkilรถn tilin saldoa, tietokanta antaa heidรคn lukea asettamalla jaetun lukituksen. Jos toinen tapahtuma haluaa pรคivittรครค saldoa, jaettu lukitus estรครค sen, kunnes lukeminen on valmis.

2. Ainutlaatuinen lukko (X): Yksinoikeudella lukituksen avulla tietoalkiota voidaan sekรค lukea ettรค kirjoittaa. Se on eksklusiivinen, eikรค sitรค voida pitรครค samanaikaisesti samassa tietoalkiossa. X-lukkoa pyydetรครคn lock-x-kรคskyllรค. Esimerkiksi kun tapahtuman on pรคivitettรคvรค tilin saldoa, se sallitaan asettamalla X-lukko; toinen tapahtuma, joka haluaa lukea tai kirjoittaa, estetรครคn tรคllรถin.

3. Yksinkertainen lukitusprotokolla: Tรคmรค mahdollistaa tapahtumien lukituksen saamisen jokaiselle objektille ennen toiminnon aloittamista. Tapahtumat voivat avata dataelementin lukituksen kirjoitustoiminnon pรครคtyttyรค.

4. Lukituksen ennakkovaatimus: Tรคmรค protokolla arvioi operaatioita ja luo luettelon suorituksen aloittamiseen tarvittavista tiedoista. Kun kaikki lukot on myรถnnetty, tapahtuma suoritetaan ja kaikki lukot vapautetaan, kun operaatiot ovat pรครคttyneet.

Nรคlkรค: Nรคlkรค eli nรคlรคnhรคtรค tarkoittaa tilannetta, jossa tapahtuma odottaa lukon saamista mรครคrรครคmรคttรถmรคn ajan. Syitรค voivat olla huonosti hallittu odotusjรคrjestelmรค lukituille kohteille, resurssivuoto tai saman tapahtuman toistuva valinta uhriksi.

Umpikuja: Lukkiutumistila tarkoittaa tilannetta, jossa kaksi tai useampi prosessi odottaa toisiaan vapauttamaan resurssin muodostaen ympyrรคnmuotoisen ketjun.

Kaksivaiheinen lukitusprotokolla (2PL)

Kaksivaiheinen lukitusprotokolla, joka tunnetaan myรถs nimellรค 2PL, on samanaikaisuuden hallintamenetelmรค, joka varmistaa sarjoitettavuuden lukitsemalla tapahtumatiedot. Tรคmรค estรครค muita tapahtumia kรคyttรคmรคstรค samoja tietoja samanaikaisesti.

Kaksivaiheinen lukitusprotokolla mahdollistaa jokaisen tapahtuman tehdรค lukitus- tai lukituksen avauspyynnรถn kahdessa vaiheessa:

  • Kasvuvaihe: Tรคssรค vaiheessa tapahtuma voi saada lukituksia, mutta ei vรคlttรคmรคttรค vapauta lukkoja.
  • Kutistumisvaihe: Tรคssรค vaiheessa tapahtuma voi vapauttaa lukkoja, mutta ei vรคlttรคmรคttรค saada uusia lukkoja.

Kaksivaiheinen lukitus, kasvava ja kutistuva vaihe

On totta, ettรค 2PL tarjoaa sarjoitettavuuden. Se ei kuitenkaan takaa, ettei lukkiutumisia tapahdu. Yllรค olevassa kaaviossa paikalliset ja globaalit lukkiutumisten ilmaisimet etsivรคt lukkiutumisia ja ratkaisevat ne palauttamalla tapahtumat alkuperรคiseen tilaansa.

Tiukka kaksivaiheinen lukitusmenetelmรค

Strict 2PL on lรคhes sama asia kuin 2PL. Ainoa ero on, ettรค Strict-2PL ei koskaan vapauta lukkoa kรคytรถn jรคlkeen. Se pitรครค kaikki lukot voimassa commit-pisteeseen asti ja vapauttaa ne kaikki kerralla prosessin pรครคtyttyรค.

Keskitetty 2PL

Keskitetyssรค 2PL-jรคrjestelmรคssรค yksi toimipaikka vastaa lukkojen hallintaprosessista. Sillรค on vain yksi lukkojen hallintaohjelma koko tietokannan hallintajรคrjestelmรคlle.

Ensisijainen kopio 2PL

Primary Copy 2PL -mekanismissa useita lukkohallintaohjelmia on jaettu eri toimipisteisiin, ja tietty lukkohallintaohjelma vastaa tietyn tietojoukon lukon hallinnasta. Kun ensisijainen kopio pรคivitetรครคn, muutos vรคlitetรครคn orjille.

Jaettu 2PL

Tรคssรค mekanismissa lukkojen hallintaohjelmat on jaettu kaikkiin toimipisteisiin ja ne vastaavat kyseisen toimipisteen datalukkojen hallinnasta. Jos dataa ei replikoida, se vastaa ensisijaista kopiota 2PL. Hajautetun kopiota 2PL:n viestintรคkustannukset ovat huomattavasti korkeammat kuin ensisijaisen kopiota 2PL:n.

Aikaleimapohjaiset protokollat

Aikaleimapohjainen protokolla DBMS:ssรค on algoritmi, joka kรคyttรครค jรคrjestelmรคn aikaa tai loogista laskuria aikaleimana samanaikaisten tapahtumien suorittamisen sarjoittamiseen. Se varmistaa, ettรค jokainen ristiriitainen luku- ja kirjoitusoperaatio suoritetaan aikaleimajรคrjestyksessรค.

Tรคssรค menetelmรคssรค vanhemmalle tapahtumalle annetaan aina etusija. Se kรคyttรครค jรคrjestelmรคn aikaa tapahtuman aikaleiman mรครคrittรคmiseen, ja se on yleisimmin kรคytetty samanaikaisuusprotokolla. Lukituspohjaiset protokollat โ€‹โ€‹hallitsevat ristiriitaisten tapahtumien vรคlistรค jรคrjestystรค niiden suorituksen yhteydessรค; aikaleimapohjaiset protokollat โ€‹โ€‹hallitsevat ristiriitoja heti operaation luomisen jรคlkeen.

Esimerkiksi:

Suppose there are three 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 T2 and lastly T3.

edut:

  • Aikataulut ovat sarjoitettavissa, aivan kuten 2PL-protokollat.
  • Ei odottelua tapahtuman edessรค, mikรค poistaa umpikujien mahdollisuuden.

Haitat: Nรคlkรคkuolema on mahdollinen, jos sama tapahtuma kรคynnistetรครคn uudelleen ja keskeytetรครคn jatkuvasti.

Validointiin perustuva protokolla

Validointiin perustuva protokolla Tietokannan hallinnan tekniikkana tunnettu optimistinen samanaikaisuuden hallintatekniikka on menetelmรค tapahtumien samanaikaisuusristiriitojen vรคlttรคmiseksi. Tรคssรค protokollassa tapahtumadatan paikalliset kopiot pรคivitetรครคn itse datan sijaan, mikรค vรคhentรครค hรคiriรถitรค suorituksen aikana.

Validointiin perustuva protokolla suoritetaan kolmessa vaiheessa:

  1. Lue vaihe
  2. Validointivaihe
  3. Kirjoita vaihe

Lue vaihe

Lukuvaiheessa tapahtuma voi lukea data-arvoja, mutta kirjoitusoperaatiot tai pรคivitykset koskevat vain paikallisia datakopioita, eivรคt varsinaista tietokantaa.

Validointivaihe

Validointivaiheessa tiedot tarkistetaan sen varmistamiseksi, ettรค pรคivitysten kรคyttรถรถnotto ei riko sarjoitettavuutta.

Kirjoita vaihe

Kirjoitusvaiheessa pรคivitykset otetaan kรคyttรถรถn tietokannassa, jos validointi onnistuu; muuten pรคivitykset hylรคtรครคn ja tapahtuma peruutetaan.

Samanaikaisuuden hallintaprotokollien vertailu

Neljรค protokollaperhettรค tekevรคt erilaisia โ€‹โ€‹veikkauksia siitรค, kuinka usein tapahtumat todellisuudessa ovat ristiriidassa. Alla oleva taulukko yhteenvetรครค, mihin kukin sopii.

Protokolla Lรคhestymistapa umpikuja Parhaimmillaan
Lukituspohjainen Pessimistinen, lukot ennen pรครคsyรค mahdollinen Konfliktit ovat usein
Kaksivaiheinen lukitus Pessimistiset, kasvu- ja kutistumisvaiheet mahdollinen Sarjoitettavuus vaaditaan
Aikaleimapohjainen Tilaukset aikaleiman mukaan Lukkiutumaton Tilaaminen on tรคrkeรครค, odottaminen on kallista
Validointiin perustuva Optimistinen, validoi ennen kirjoittamista Lukkiutumaton Konfliktit ovat harvinaisia

Lyhyesti sanottuna lukituspohjaiset ja 2PL-protokollat โ€‹โ€‹olettavat konfliktien olevan yleisiรค ja estรคvรคt ne etukรคteen, kun taas aikaleima- ja validointiprotokollat โ€‹โ€‹olettavat konfliktien olevan harvinaisia โ€‹โ€‹ja ratkaisevat ne vasta, kun niitรค ilmenee.

Hyvรคn samanaikaisuusprotokollan ominaisuudet

Ihanteellisella samanaikaisuuden hallintamekanismilla on seuraavat tavoitteet:

  • Sen on oltava joustava sivuston ja tietoliikenteen hรคiriรถiden varalta.
  • Se mahdollistaa tapahtumien rinnakkaisen suorittamisen maksimaalisen samanaikaisuuden saavuttamiseksi.
  • Sen tallennusmekanismien ja laskentamenetelmien tulee olla vaatimattomia yleiskustannusten minimoimiseksi.
  • Sen on asetettava joitakin rajoituksia transaktioiden atomitason toimintojen rakenteelle.

UKK

Jaettu lukko sallii samanaikaiset lukemiset, mutta ei kirjoituksia, joten useat tapahtumat voivat sรคilyttรครค sitรค. Yksinoikeudella toimiva lukko sallii lukemisen ja kirjoittamisen, eikรค sitรค voida jakaa, joten sitรค sรคilyttรครค vain yksi tapahtuma.

Ei. 2PL takaa sarjoitettavuuden, mutta ei lukkiutumisvaaraa. Kaksi tapahtumaa voi silti odottaa toistensa lukkoja, joten erillinen tunnistus- tai aikakatkaisumekanismi tarvitaan edelleen.

Kun konfliktit ovat harvinaisia. Validointiin perustuva ohjaus vรคlttรครค lukituskuormituksen ja antaa tapahtumien toimia vapaasti, tarkistuksilla vain commit-hetkellรค. Raskaan kilpailun aikana se tuhlaa tyรถtรค toistuvien peruutusten vuoksi.

Tekoรคly tutkii aiempia tyรถkuormia ennustaakseen, mitkรค tapahtumat aiheuttavat ristiriitoja, ja suosittelee sitten eristystasoa tai lukitustarkkuutta, joka lisรครค lรคpimenoaikaa samalla kunping tulokset sarjoitettavissa.

Se ei koskaan pakota tapahtumaa odottamaan. Ristiriitainen operaatio joko sallitaan aikaleimamรครคrรคyksen perusteella tai tapahtuma keskeytetรครคn ja kรคynnistetรครคn uudelleen, joten kehรคmรคistรค odotusta ei voi muodostua eikรค lukkiutumista voi tapahtua.

Tiivistรค tรคmรค viesti seuraavasti: