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 .
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.
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.
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.
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.