Databaselåsning

(eller: låsning).

Metode, der sikrer, at en transaktion altid opererer på en konsistent database. Dette sker ved, at transaktionen, mens den udføres, har eneadgang til - låser - de data, den ajourfører. Det betyder i praksis, at to brugere f.eks. ikke samtidig kan postere på samme bogføringskonto. Et databasesystems låsningsprocedurer vil i større eller mindre udstrækning være baseret på følgende begreber og teknikker:

  • Låsningens omfang kan være hele databasen, en eller flere filer, en eller flere poster eller et eller flere felter, dvs. låsning kan være på database-, fil-, post- eller feltniveau. I praksis kan der være stor forskel på, hvordan forskellige databasesystemer håndterer låsningsomfanget, ligesom det fra system til system vil variere, hvor mange låsninger der samtidig kan være aktiveret.
  • Låsningens form kan være læselås (read lock) eller skrivelås (write lock). Læselås forhindrer opdatering, men ikke læsning, dvs. alle brugere kan forespørge på låste data. Skrivelås forhindrer derimod såvel opdatering som samtidig læsning. Read og write lock optræder ofte i forskellige databaseprodukter under betegnelserne shared og exclusive lock.
  • Låsningen kan være betinget eller ubetinget. En ubetinget låsning betyder, at såfremt de ønskede data allerede skulle være låst, stiller transaktionen sig i kø og venter på frigivelse. Under betinget låsning vil systemet under lignende omstændigheder give et signal herom og tillade en reaktion fra programmets eller brugerens side, f.eks. at prøve igen efter x sekunder eller at prøve andre data.
  • Låsning kan styres manuelt gennem programmering eller reguleres automatisk af databasesystemet. Ad programmeringsvej opnås den bedste optimering i forhold til hovedreglen for låsestrategi: lås så lidt som muligt så sent som muligt. Automatisk regulerede låsninger er ofte meget grove og opererer på database- eller filniveau, men tendensen er, at disse bliver stadig mere forfinede, dvs. låser på postniveau (row level locking).
  • Håndtering af deadlock (baglås). Deadlock opstår, når to transaktioner under ubetinget låsning hver venter på at låse data, som allerede er låst af den anden transaktion. Uden midler til at styre en sådan situation vil transaktionerne derfor aldrig holde op med at vente på hinanden - systemet går i stå. Deadlock undgås normalt i et databasesystem ved at gøre udførelsen af transaktioner seriel, hvilket vil sige, at databaseoperationerne udføres, som var der tale om serielle transaktioner. Seriel udførelse betyder, at en transaktion udføres og afsluttes, før næste transaktion begynder.

Forfattere: 
Troels Andreasen
Casper Thomsen