Lås ( eng. lock ) i DBMS'et - et mærke på fangst af et objekt ved en transaktion i begrænset eller eksklusiv adgang for at forhindre kollisioner og bevare dataintegriteten .
Efter omfang klassificeres låse i små bogstaver, granulære og prædikater. Ifølge sværhedsgraden af låsene er opdelt i fælles ( engelsk delt ) og eksklusive ( eksklusiv , engelsk eksklusiv ). Ifølge implementeringslogikken er blokering opdelt i optimistisk og pessimistisk.
Rækkelås - ager kun på én række i databasetabellen uden at begrænse manipulationer på andre rækker i tabellen.
Granulær lås - påvirker hele tabellen eller hele siden og alle rækker. En lås , der begrænser manipulationer med en side med data i en tabel (et sæt rækker forenet af en delt lagringsattribut) kaldes nogle gange sidelåsning .
En prædikatlås virker på det område, der er afgrænset af prædikatet. Dette er normalt en nøgleområdelås . Med en sådan lås angiver nøglen eller indekset den værdi eller værdiområde, som låsen gælder for. En sådan lås (såvel som en borddækkende lås) beskytter blandt andet mod fantomlæsninger og giver et serialiserbart transaktionsisolationsniveau.
En delt lås erhverves af en transaktion på et objekt, hvis operationen udført af den er sikker, det vil sige, at den ikke ændrer nogen data og ikke har nogen bivirkninger . Samtidig kan alle transaktioner udføre en operation af samme type på et objekt, hvis det har en delt lås, normalt bruges en sådan lås til læseoperationer.
En eksklusiv lås placeres på et objekt af en transaktion, hvis den operation, den udfører, ændrer data. Kun én transaktion kan udføre en sådan operation på et objekt, hvis det har en eksklusiv lås. En lås kan ikke placeres på et objekt, hvis det allerede har en delt lås.
En pessimistisk lås placeres før en foreslået dataændring på alle rækker, som ændringen forventes at påvirke. Under varigheden af en sådan lås er ændring af data fra tredjepartssessioner udelukket, data fra låste rækker er tilgængelige i henhold til transaktionens isolationsniveau . Når den påtænkte ændring er gennemført, er en ensartet registrering af resultaterne garanteret.
Optimistisk låsning begrænser ikke ændringen af de behandlede data af tredjepartssessioner, men inden starten af den foreslåede ændring anmoder den om værdien af en udvalgt attribut for hver af datarækkerne (normalt et navn VERSIONog en heltalstype med en begyndelsesværdi på 0 bruges). Før ændringerne skrives til databasen, kontrolleres værdien af den valgte attribut igen, og hvis den er ændret, rulles transaktionen tilbage, eller der anvendes forskellige kollisionsløsningsordninger. Hvis værdien af den valgte attribut ikke er ændret, foretages ændringer med en samtidig ændring i værdien af den valgte attribut (f.eks. stigning ) for at signalere andre sessioner, at dataene er ændret.