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.

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.
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:
- Lue vaihe
- Validointivaihe
- 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.

