Esto (DBMS)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17. joulukuuta 2019 tarkistetusta versiosta . vahvistus vaatii 1 muokkauksen .

Lukitus ( eng.  lock ) DBMS :ssä  - merkki kohteen sieppauksesta tapahtumalla rajoitetulla tai yksinomaisella pääsyllä törmäysten estämiseksi ja tietojen eheyden ylläpitämiseksi .

Luokittelujen estäminen

Laajuuden mukaan lukot luokitellaan pieniin kirjaimiin, rakeisiin ja predikaattisiin. Vakavuuden mukaan lukot on jaettu yhteisiin ( englanniksi  jaettu ) ja eksklusiivisiin (exclusive, Englanti  yksinomainen ). Toteutuslogiikan mukaan esto jaetaan optimistiseen ja pessimistiseen.

Laajuuden mukaan

Rivin lukitus  - toimi vain yhdellä tietokantataulukon rivillä rajoittamatta käsittelyä taulukon muilla riveillä.

Rakeinen lukitus  - vaikuttaa koko taulukkoon tai koko sivuun ja kaikkiin riveihin. Lukkoa, joka rajoittaa taulukon datasivun käsittelyä (joukko riviä, joita yhdistää jaettu tallennusattribuutti), kutsutaan joskus sivun lukitukseksi . 

Predikaattilukko vaikuttaa predikaatin rajoittamaan alueeseen. Tämä on yleensä avainalueen lukko . Tällaisella lukolla avain tai indeksi määrittää arvon tai arvoalueen, jota lukko koskee. Tällainen lukko (samoin kuin pöydän laajuinen lukko) muun muassa suojaa haamulukuja vastaan ​​ja tarjoaa sarjoitettavan tapahtuman eristystason.

Vakavuuden mukaan

Jaettu lukko hankitaan tapahtumalla objektiin, jos sen suorittama toiminto on turvallinen, eli se ei muuta tietoja eikä sillä ole sivuvaikutuksia . Samanaikaisesti kaikki tapahtumat voivat suorittaa samantyyppisen toiminnon objektille, jos sillä on jaettu lukko, yleensä tällaista lukkoa käytetään lukutoimintoihin.

Tapahtuma asettaa objektiin eksklusiivisen lukon , jos sen suorittama toiminto muuttaa tietoja. Vain yksi tapahtuma voi suorittaa tällaisen toiminnon objektille, jos sillä on eksklusiivinen lukitus. Objektiin ei voi asettaa lukkoa, jos sillä on jo jaettu lukko.


Toteutuslogiikan mukaan

Pessimistinen lukitus asetetaan ennen ehdotettua datamuutosta kaikille riveille, joihin muutoksen odotetaan vaikuttavan. Tällaisen lukituksen aikana kolmannen osapuolen istuntojen tietojen muuttaminen ei ole mahdollista, lukittujen rivien tiedot ovat saatavilla tapahtuman eristystason mukaan . Suunnitellun muutoksen valmistuttua tulosten johdonmukainen kirjaaminen taataan.

Optimistinen lukitus ei rajoita kolmannen osapuolen istunnoissa käsiteltyjen tietojen muokkaamista, mutta ennen ehdotetun muokkauksen alkamista se pyytää jokaisen tietorivin jonkin valitun attribuutin arvon (yleensä nimen VERSIONja kokonaislukutyypin käytetään alkuarvoa 0). Ennen kuin muutokset kirjoitetaan tietokantaan, valitun attribuutin arvo tarkistetaan uudelleen, ja jos se on muuttunut, tapahtuma peruutetaan tai käytetään erilaisia ​​törmäyksenratkaisumenetelmiä. Jos valitun attribuutin arvo ei ole muuttunut, muutokset tehdään samalla, kun valitun attribuutin arvoa muutetaan (esimerkiksi inkrementti ), jotta tiedot ovat muuttuneet muille istunnoille.