Tehingute haldamine andmebaasihaldussüsteemis: olekud, tüübid ja ACID

⚡ Nutikas kokkuvõte

Andmebaasi tehingute haldus käsitleb ühte või mitut andmebaasi toimingut ühe loogilise üksusena, mis liigutab andmebaasi ühest järjepidevast olekust teise. See tugineb ACID omadustele, määratletud tehingute olekutele ja ajakavadele, et samaaegne juurdepääs oleks korrektne.

  • 🔁 Põhiüksus: Tehing koondab omavahel seotud lugemis- ja kirjutamisoperatsioonid nii, et need õnnestuvad või ebaõnnestuvad koos, mitte kunagi poolelioleval hetkel.
  • 🧪 HAPPE omadused: AtomJärjepidevus, isoleeritus ja vastupidavus tagavad õiged tulemused isegi rikke või samaaegse kasutamise korral.
  • 🚦 Tehinguseisundid: Tehingu elutsüklit kirjeldavad aktiivne, osaliselt kinnitatud, kinnitatud, ebaõnnestunud ja lõpetatud.
  • 👥 Miks samaaegsus: Andmebaas on jagatud, seega toimub korraga palju tehinguid, mis ei tohi üksteise andmeid rikkuda.
  • ???? Kavad: Ajakava järjestab paralleelsete tehingute toiminguid, säilitades samal ajal iga tehingu sisemise järjestuse.
  • 🔗 Serialiseeritavus: Samaaegne ajakava on õige, kui selle tulemus võrdub mingi järjestikuse teostusega, mida hinnatakse konflikti või vaate ekvivalentsuse põhjal.
  • ↩️ Taastamine: Ebaõnnestunud tehing tühistatakse, nii et selle osalised kirjutusoperatsioonid ei jõua kunagi kinnitatud andmebaasi.

Tehingute haldamine andmebaasihalduses

Mis on andmebaasi tehing?

A Andmebaasi tehing on andmebaasihaldussüsteemi loogiline töötlemisüksus, mis hõlmab ühte või mitut andmebaasile juurdepääsu toimingut. Lühidalt öeldes esindavad andmebaasitehingud iga ettevõtte reaalseid sündmusi.

Kõik andmebaasile juurdepääsu toimingud, mis toimuvad tehingu algus- ja lõpplausete vahel, loetakse andmebaasihaldussüsteemis üheks loogiliseks tehinguks. Tehingu ajal on andmebaas ebajärjekindel. Alles pärast tehingu kinnitamist muutub olek ühest järjepidevast olekust teise.

Andmebaasi tehing liigub järjepidevate olekute vahel
Andmebaasi tehing

Faktid andmebaasitehingute kohta

  • Tehing on programmiüksus, mille täitmine võib või ei pruugi muuta andmebaasi sisu.
  • DBMS-i tehingukontseptsioon täidetakse ühe üksusena.
  • Kui andmebaasitoimingud ei värskenda andmebaasi, vaid toovad ainult andmeid, nimetatakse seda tüüpi tehingut kirjutuskaitstud tehinguks.
  • Edukas tehing võib muuta andmebaasi ühest PÜSIVALT OLEKUST teise.
  • Andmebaasihaldussüsteemi tehingud peavad olema atomaarsed, järjepidevad, isoleeritud ja vastupidavad.
  • Kui andmebaas oleks enne tehingut ebajärjekindlas olekus, jääks see ka pärast tehingut ebajärjekindlasse olekusse.

Miks on tehingutes vaja samaaegsust?

Andmebaas on jagatud ressurss. Seda kasutavad samaaegselt paljud kasutajad ja protsessid. Näideteks on pangandussüsteemid, raudtee- ja lennupiletite broneerimissüsteemid, börsi jälgimine ning supermarketite inventuur ja kassasüsteemid.

Samaaegse juurdepääsu mittehaldamine võib põhjustada selliseid probleeme nagu:

  • Riistvararike ja süsteemi krahhid.
  • sama tehingu samaaegne teostamine, ummikseisvõi aeglane jõudlus.

Selle jagatud juurdepääsu kontrollimine on ülesanne samaaegsuse kontroll, mis kasutab tehingute turvaliseks põimimiseks lukustamist ja ajatempleid. Enne seda on kasulik teada, milliseid olekuid tehing läbib.

Tehingute olekud

DBMS-i tehingukontseptsiooni erinevad olekud on loetletud allpool.

riik Kirjeldus
Aktiivne olek Tehing läheb aktiivsesse olekusse, kui täitmisprotsess algab. Selle oleku ajal saab teha lugemis- või kirjutamisoperatsioone.
Osaliselt pühendunud Pärast tehingu lõppu läheb tehing osaliselt kinnitatud olekusse.
Pühendunud olek Kui tehing jõuab kinnitatud olekusse, on selle täitmine edukalt lõpule viidud ja kõik muudatused salvestatakse andmebaasi jäädavalt.
Ebaõnnestunud olek Tehing loetakse ebaõnnestunuks, kui mõni kontrollidest ebaõnnestub või kui tehing katkestatakse aktiivses olekus.
Lõpetatud riik Tehingu olek jõuab lõpetatud olekusse, kui tehing lahkub süsteemist ja seda ei saa enam taaskäivitada.

Andmebaasi tehingu oleku ülemineku diagramm

Uurime ühte oleku ülemineku diagramm mis näitab, kuidas tehing nende erinevate olekute vahel liigub.

  1. Kui tehing on käivitatud, muutub see aktiivseks. See saab käivitada READ (lugemise) või WRITE (kirjutamise) operatsiooni.
  2. Kui lugemis- ja kirjutamistoimingud on lõpule viidud, jõuab tehing osaliselt kinnitatud olekusse.
  3. Järgmiseks peavad mõned taasteprotokollid tagama, et süsteemi rike ei põhjustaks tehingu muudatuste jäädavat salvestamist. Kui see kontroll õnnestub, siis tehing kinnitatakse ja läheb kinnitatud olekusse.
  4. Kui kontroll ebaõnnestub, läheb tehing ebaõnnestunud olekusse.
  5. Kui tehing katkestatakse aktiivses olekus olles, läheb see ebaõnnestunud olekusse. Tehing tuleks tagasi pöörata, et tühistada selle kirjutamisoperatsioonide mõju andmebaasile.
  6. Lõpetatud olek viitab süsteemist väljuvale tehingule.

Mis on happe omadused?

HAPE omadused kasutatakse andmebaasi terviklikkuse säilitamiseks tehingute töötlemise ajal. ACID tähistab andmebaasihaldussüsteemides Amürgisus, Cjärjekindlus, Ilohutus ja Dkasutatavus.

  • Atomicity: Tehing on üks operatsiooniühik. Te kas teostate selle täielikult või ei tee seda üldse. Osalist täitmist ei saa olla.
  • Järjepidevus: Kui tehing on sooritatud, peaks see liikuma ühest järjepidevast olekust teise.
  • Isolatsioon: Tehing tuleks teostada teistest tehingutest eraldi. Samaaegse teostamise ajal ei tohiks samaaegselt teostatud tehingute vahetulemusi üksteisele kättesaadavaks teha.
  • Vastupidavus: Pärast tehingu edukat lõpuleviimist peaksid andmebaasis tehtud muudatused püsima isegi süsteemi rikete korral.

ACID omadus andmebaasihaldussüsteemis koos näitega

Allpool on näide ACID omadusest andmebaasihaldussüsteemis:

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

Tehing 1 kannab 50 dollarit kontolt X kontole Y.

Tehing 2 on iga konto krediteerimine 10% intressimaksega.

Kui mõlemad tehingud esitatakse koos, ei ole mingit garantiid, et tehing 1 täidetakse enne tehingut 2 või vastupidi. Järjekorrast olenemata peab tulemus olema selline, nagu tehingud toimuksid järjestikku, üksteise järel.

Tehingute tüübid

Rakendusvaldkondade põhjal:

  • Jaotamata vs. jaotatud.
  • Kompenseerivad tehingud.
  • Tehingute ajastus.
  • Veebipõhine vs partiipõhine.

Toimingute põhjal:

  • Kaheastmeline.
  • Piiratud.
  • Tegevusmudel.

Struktuuri põhjal:

  • Lamedad ehk lihtsad tehingud: koosnevad primitiivsete toimingute jadast, mis täidetakse algus- ja lõpp-toimingu vahel.
  • Pesastatud tehingud: tehing, mis sisaldab teisi tehinguid.
  • Töövoog.

Mis on ajakava?

Ajakava on protsess, mille käigus luuakse mitu paralleelset tehingut korraga ja neid ükshaaval täidetakse. See peaks säilitama käskude järjestuse igas tehingus. Kui kaks tehingut täidetakse samaaegselt, võib ühe tehingu tulemus mõjutada teise tehingu väljundit.

Näide

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

Kui Tehing 2 sooritatakse enne Tehingut 1, loetakse toote koguse kohta aegunud infot. Seetõttu on ajakava vaja.

Paralleeltäitmine andmebaasis on vältimatu. Kuid paralleeltäitmine on lubatud, kui samaaegselt täidetavate tehingute vahel on ekvivalentsusseos. Seda ekvivalentsust on kolme tüüpi.

Tulemuste samaväärsus: Kui kaks ajakava kuvavad pärast täitmist sama tulemust, nimetatakse seda tulemustega samaväärseks ajakavaks. Need võivad pakkuda sama tulemust mõne väärtuse puhul ja erinevaid tulemusi teise väärtuste komplekti puhul. Näiteks üks tehing uuendab toote kogust, samas kui teine ​​uuendab kliendi andmeid.

Vaata samaväärsust: Vaate ekvivalentsus ilmneb siis, kui mõlema ajakava tehingud sooritavad sarnase toimingu. Näiteks lisab üks tehing toote üksikasjad tootetabelisse, teine ​​aga arhiivitabelisse. Tehing on sama, aga tabelid on erinevad.

Konfliktide samaväärsus: Sellisel juhul uuendavad või vaatavad kaks tehingut sama andmekogumit. Tehingute vahel on konflikt, kuna täitmisjärjekord mõjutab väljundit.

Mis on serialiseeritavus?

Serialiseeritavus on protsess, mille käigus otsitakse samaaegset ajakava, mille väljund on võrdne järjestikuse ajakavaga, kus tehingud täidetakse üksteise järel. Sõltuvalt ajakava tüübist on kahte tüüpi serialiseeritavust:

  • Konfliktide serialiseeritavus.
  • Vaata serialiseeritavust.

Need kaks erinevad selle poolest, kui rangelt nad samaväärsust hindavad, nagu allpool kokku võetud.

Aspekt Konfliktide järjestatavus Vaate serialiseeritavus
Alus Vastuoluliste toimingute järjekord Lugemis- ja kirjutamissuhted
test Eelistusgraaf peab olema atsükliline Vaate ekvivalentsus jadagraafikuga
Rangus Rangem alamhulk Laiem, hõlmab pimekirjutusi
Kontrollimise hind Tõhus Arvutuslikult keeruline

Iga konfliktide serialiseeritav ajakava on ka vaatamiseks serialiseeritav, aga mitte vastupidi, mistõttu on konfliktide serialiseeritavus praktiline test, mida andmebaasisüsteem rakendab.

KKK

Kinnitus (Commit) muudab tehingu muudatused andmebaasis püsivaks. Tagasivõtmine (rollback) tühistab kõik muudatused alates tehingu algusest, taastades andmebaasi järjepideva oleku, mis oli enne tehingu algust.

Atomvastupidavus. Kui krahh toimub poolelioleva töö käigus, tagab aatomilisus, et osaline töö visatakse ära, seega käsitletakse tehingut nii, nagu see poleks kunagi käivitunud. Vastupidavus kaitseb seejärel pärast taastumist tehtud tööd.

Tehisintellekt analüüsib lukustusooteaegu ja ummikseisu graafikuid, et tuvastada tehinguid, mis teisi blokeerivad, ning seejärel soovitab isolatsioonitaset või indeksi muutust, mis vähendab konkurentsi, nõrgestamata korrektsust.

Teatud määral. Õppides tundma lukustustaotluste mustreid, mis eelnesid varasematele ummikseisudele, saab mudel riskantse tehingute kombinatsiooni varakult märgistada, võimaldades ajastajat enne tsükli moodustumist edasi lükata või ümber järjestada.

Järjestikuse ajakava puhul käivitatakse üks tehing enne järgmise algust täielikult, seega põimimine ei saa andmeid rikkuda. See on aeglane, mistõttu on eesmärgiks samaaegne ajakava, mida saab sellele serialiseerida.

Võta see postitus kokku järgmiselt: