Transaktioiden hallinta tietokannan hallinnan järjestelmässä: tilat, tyypit ja ACID

⚡ Älykäs yhteenveto

Tietokannan tapahtumien hallinta käsittelee yhtä tai useampaa tietokannan operaatiota yhtenä loogisena yksikkönä, joka siirtää tietokannan yhdestä yhtenäisestä tilasta toiseen. Se perustuu ACID-ominaisuuksiin, määriteltyihin tapahtumatiloihin ja aikatauluihin pitääkseen samanaikaisen käytön oikein.

  • 🔁 Ydinyksikkö: Transaktio ryhmittelee toisiinsa liittyvät luku- ja kirjoitusoperaatiot siten, että ne onnistuvat tai epäonnistuvat yhdessä, eivätkä koskaan puolitiehen jääden.
  • 🧪 ACID-ominaisuudet: Atomtarkkuus, johdonmukaisuus, eristäytyneisyys ja kestävyys takaavat oikeat tulokset jopa vikaantuessa tai samanaikaisessa käytössä.
  • 🚦 Transaktiotilat: Aktiivinen, osittain vahvistettu, vahvistettu, epäonnistunut ja lopetettu kuvaavat tapahtuman elinkaarta.
  • 👥 Miksi rinnakkaisuus: Tietokanta on jaettu, joten monta tapahtumaa suoritetaan samanaikaisesti eivätkä ne saa vioittaa toistensa tietoja.
  • 📋 aikataulut: Aikataulu järjestää rinnakkaisten tapahtumien toiminnot säilyttäen samalla kunkin tapahtuman sisäisen järjestyksen.
  • 🔗 Sarjoitettavuus: Rinnakkainen aikataulu on oikea, kun sen tulos on yhtä suuri kuin jokin sarjallinen suoritus, arvioituna konfliktin tai näkökulmien ekvivalenssin perusteella.
  • ↩️ Elpyminen: Epäonnistunut tapahtuma peruutetaan, joten sen osittaiset kirjoitukset eivät koskaan päädy vahvistettuun tietokantaan.

Transaktioiden hallinta tietokannan hallinnan järjestelmässä

Mikä on tietokantatapahtuma?

A Tietokantatapahtuma on tietokannan hallintajärjestelmän looginen prosessointiyksikkö, joka sisältää yhden tai useamman tietokannan käyttöoperaation. Lyhyesti sanottuna tietokannan tapahtumat edustavat minkä tahansa yrityksen reaalimaailman tapahtumia.

Kaikki tietokannan käyttöoperaatiot, joita pidetään tapahtumalausekkeiden alussa ja lopussa, pidetään yhtenä loogisena tapahtumana tietokannan hallintajärjestelmässä. Tapahtuman aikana tietokanta on epäjohdonmukainen. Vasta tapahtuman vahvistamisen jälkeen tila muuttuu yhtenäisestä tilasta toiseen.

Tietokantatapahtuma liikkuu yhtenäisten tilojen välillä
Tietokantatapahtuma

Tietoja tietokantatapahtumista

  • Tapahtuma on ohjelmayksikkö, jonka suorittaminen voi muuttaa tietokannan sisältöä tai ei.
  • DBMS:n tapahtumakonsepti suoritetaan yhtenä yksikkönä.
  • Jos tietokantatoiminnot eivät päivitä tietokantaa, vaan vain hakevat tietoja, tämän tyyppistä tapahtumaa kutsutaan vain luku -tapahtumaksi.
  • Onnistunut tapahtuma voi muuttaa tietokannan CONSISTENT STATE -tilasta toiseen.
  • Tietokannan hallintajärjestelmien tapahtumien on oltava atomisia, yhdenmukaisia, erillisiä ja kestäviä.
  • Jos tietokanta oli epäjohdonmukaisessa tilassa ennen tapahtumaa, se pysyisi epäjohdonmukaisessa tilassa tapahtuman jälkeen.

Miksi tarvitset samanaikaisuutta transaktioissa?

Tietokanta on jaettu resurssi. Sitä käyttävät useat käyttäjät ja prosessit samanaikaisesti. Esimerkkejä ovat pankkijärjestelmät, rautatie- ja lentovarausjärjestelmät, osakemarkkinoiden seuranta sekä supermarkettien varastot ja kassat.

Samanaikaisen käytön hallinta voi aiheuttaa ongelmia, kuten:

  • Laitteistoviat ja järjestelmän kaatumiset.
  • Saman tapahtuman suorittaminen samanaikaisesti, umpikujatai hidas suorituskyky.

Tämän jaetun käyttöoikeuden hallinta on tehtävä samanaikaisuuden hallinta, joka käyttää lukitusta ja aikaleimoja tapahtumien turvalliseen lomittamiseen. Ennen sitä on hyödyllistä tietää, minkä tilojen läpi tapahtuma kulkee.

Liiketoimien tilat

DBMS:n tapahtumakonseptin eri tilat on lueteltu alla:

Osavaltio Tuotetiedot
Aktiivinen tila Tapahtuma siirtyy aktiiviseen tilaan, kun suoritusprosessi alkaa. Tämän tilan aikana voidaan suorittaa luku- tai kirjoitusoperaatioita.
Osittain sitoutunut Transaktio siirtyy osittain vahvistettuun tilaan transaktion päättymisen jälkeen.
Sitoutunut tila Kun tapahtuma saavuttaa vahvistettu-tilan, se on suorittanut suorituksen onnistuneesti ja kaikki sen muutokset tallennetaan tietokantaan pysyvästi.
Epäonnistunut tila Tapahtuma katsotaan epäonnistuneeksi, kun jokin tarkistuksista epäonnistuu tai jos tapahtuma keskeytetään sen ollessa aktiivisessa tilassa.
Päätetty valtio Transaktio saavuttaa terminoidun tilan, kun se poistuu järjestelmästä eikä sitä voida käynnistää uudelleen.

Tietokantatapahtuman tilasiirtymäkaavio

Tutkitaanpa erästä tilasiirtymäkaavio joka korostaa, kuinka tapahtuma liikkuu näiden eri tilojen välillä.

  1. Kun transaktion suoritus alkaa, siitä tulee aktiivinen. Se voi suorittaa READ- tai WRITE-operaation.
  2. Kun READ- ja WRITE-toiminnot ovat valmistuneet, tapahtuma saavuttaa osittain vahvistettu -tilan.
  3. Seuraavaksi joidenkin palautusprotokollien on varmistettava, että järjestelmävirhe ei estä tapahtuman muutosten tallentamista pysyvästi. Jos tämä tarkistus onnistuu, tapahtuma committoidaan ja siirtyy commited-tilaan.
  4. Jos tarkistus epäonnistuu, tapahtuma siirtyy epäonnistuneeseen tilaan.
  5. Jos tapahtuma keskeytetään aktiivisessa tilassa, se siirtyy epäonnistuneeseen tilaan. Tapahtuma tulisi peruuttaa, jotta sen kirjoitustoimintojen vaikutus tietokantaan kumotaan.
  6. Lopetettu tila viittaa tapahtumaan, joka lähtee järjestelmästä.

Mitä ovat ACID-ominaisuudet?

ACID-ominaisuudet käytetään tietokannan eheyden ylläpitämiseen tapahtumien käsittelyn aikana. ACID tietokannan hallintajärjestelmässä on lyhenne sanoista Amyrkyllisyys, Cpysyvyys, Ilohdutusta ja Dkäytettävyyttä.

  • Atomicity: Tapahtuma on yksi toimintayksikkö. Joko suoritat sen kokonaan tai et suorita sitä ollenkaan. Osittaista toteutusta ei voi tehdä.
  • Johdonmukaisuus: Kun tapahtuma on suoritettu, sen pitäisi siirtyä johdonmukaisesta tilasta toiseen.
  • Eristäminen: Transaktio tulisi suorittaa erillään muista transaktioista. Samanaikaisen toteutuksen aikana samanaikaisesti toteutettujen transaktioiden välituloksia ei tulisi asettaa toistensa saataville.
  • Kestävyys: Transaktion onnistuneen suorittamisen jälkeen tietokannan muutosten tulisi säilyä, myös järjestelmävikojen sattuessa.

ACID-ominaisuus tietokannan hallinnan järjestelmässä esimerkin avulla

Alla on esimerkki ACID-ominaisuudesta tietokannan hallintajärjestelmässä:

Transaction 1: Begin X=X+50, Y = Y-50 END
Transaction 2: Begin X=1.1*X, Y=1.1*Y END

Tapahtuma 1 siirtää 50 dollaria tililtä X tilille Y.

Tapahtuma 2 hyvitetään jokaiselle tilille 10 %:n korkomaksu.

Jos molemmat tapahtumat lähetetään yhdessä, ei ole takeita siitä, että tapahtuma 1 suoritetaan ennen tapahtumaa 2 tai päinvastoin. Järjestyksestä riippumatta tuloksen on oltava ikään kuin tapahtumat tapahtuisivat sarjassa peräkkäin.

Tapahtumatyypit

Sovellusalueiden perusteella:

  • Hajauttamaton vs. hajautettu.
  • Korvaavat tapahtumat.
  • Transaktioiden ajoitus.
  • Verkossa vs. eräajo.

Toimien perusteella:

  • Kaksivaiheinen.
  • Rajoitettu.
  • Toimintamalli.

Rakenteen perusteella:

  • Yksinkertaiset transaktiot: koostuvat sarjasta alkeellisia operaatioita, jotka suoritetaan aloitus- ja lopetusoperaation välillä.
  • Sisäkkäiset tapahtumat: tapahtuma, joka sisältää muita tapahtumia.
  • Työnkulku.

Mikä on aikataulu?

Aikataulu on prosessi, jossa luodaan yksi ryhmä useita rinnakkaisia ​​​​tapahtumia ja suoritetaan ne yksi kerrallaan. Sen tulisi säilyttää käskyjen esiintymisjärjestys kussakin tapahtumassa. Jos kaksi tapahtumaa suoritetaan samanaikaisesti, toisen tapahtuman tulos voi vaikuttaa toisen tapahtuman tulosteeseen.

esimerkki

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Jos tapahtuma 2 suoritetaan ennen tapahtumaa 1, vanhentuneet tiedot tuotteen määrästä luetaan. Siksi aikatauluja tarvitaan.

Rinnakkainen suorittaminen tietokannassa on väistämätöntä. Mutta rinnakkainen suorittaminen on sallittua, kun samanaikaisesti suoritettavien tapahtumien välillä on ekvivalenssirelaatio. Tätä ekvivalenssia on kolmenlaisia.

Tulosten vastaavuus: Jos kaksi aikataulua näyttää saman tuloksen suorituksen jälkeen, sitä kutsutaan tulosekvivalenttiaikatauluksi. Ne voivat tarjota saman tuloksen joillekin arvoille ja eri tuloksia toisille arvoille. Esimerkiksi yksi tapahtuma päivittää tuotemäärän, kun taas toinen päivittää asiakastiedot.

Näytä vastaavuus: Näkymien vastaavuus tapahtuu, kun molempien aikataulujen tapahtumat suorittavat samanlaisen toiminnon. Esimerkiksi yksi tapahtuma lisää tuotetiedot tuotetaulukkoon, kun taas toinen tapahtuma lisää tuotetiedot arkistotaulukkoon. Tapahtuma on sama, mutta taulukot ovat erilaisia.

Konfliktien vastaavuus: Tässä tapauksessa kaksi tapahtumaa päivittää tai tarkastelee samaa datajoukkoa. Tapahtumien välillä on ristiriita, koska suoritusjärjestys vaikuttaa tulosteeseen.

Mitä on serialoitavuus?

Sarjoitettavuus on prosessi, jossa etsitään samanaikaista aikataulua, jonka tuloste on yhtä suuri kuin sarjallinen aikataulu, jossa tapahtumat suoritetaan peräkkäin. Aikataulun tyypistä riippuen sarjoitettavuus jakautuu kahteen tyyppiin:

  • Konfliktien sarjallistettavuus.
  • Näytä sarjoitettavuus.

Nämä kaksi eroavat toisistaan ​​siinä, kuinka tiukasti ne arvioivat vastaavuutta, kuten alla on tiivistettynä.

Aspect Konfliktien sarjallistuvuus Näytä sarjoitettavuus
Perusta Ristiriitaisten toimintojen järjestys Lue-lähde- ja lopullinen kirjoitussuhteet
Testi Precedence-graafin on oltava asyklinen Näytä vastaavuus sarja-aikataulun kanssa
tiukkuus Tiukempi, osajoukko Laajempi, sisältää sokkokirjoitukset
Tarkistuksen hinta Tehokas Laskennallisesti vaikea

Jokainen konfliktien sarjoitettava aikataulu on myös katselusarjoitettava, mutta ei päinvastoin, minkä vuoksi konfliktien sarjoitettavuus on käytännön testi, jota tietokannan hallintajärjestelmä käyttää.

UKK

Commit tekee tapahtuman muutoksista pysyviä tietokannassa. Rollback kumoaa kaikki tapahtuman alkamisen jälkeen tehdyt muutokset ja palauttaa tietokannan sen alkamista edeltäneeseen yhteneväiseen tilaan.

AtomKestävyys. Jos kaatuminen tapahtuu kesken, atomisuus varmistaa, että osittainen työ hylätään, joten tapahtumaa käsitellään ikään kuin sitä ei olisi koskaan suoritettu. Kestävyys suojaa sitten sidottua työtä palautumisen jälkeen.

Tekoäly analysoi lukitusodotuksia ja lukkiutumia havaitsevia kaavioita havaitakseen muita tapahtumia estävät tapahtumat ja suosittelee sitten eristystasoa tai indeksin muutosta, joka vähentää kilpailua heikentämättä virheettömyyttä.

Tietyssä määrin. Oppimalla aiempia umpikujia edeltäneet lukituspyyntömallit malli voi merkitä riskialttiita transaktioyhdistelmiä varhaisessa vaiheessa, jolloin ajoittaja voi viivyttää tai järjestää uudelleen ennen syklin muodostumista.

Sarjallinen aikataulu suorittaa yhden tapahtuman kokonaan ennen seuraavan alkamista, joten lomitus ei voi vioittaa tietoja. Se on hidas, minkä vuoksi tavoitteena on siihen sarjallistettava samanaikainen aikataulu.

Tiivistä tämä viesti seuraavasti: