Skip to main content

Hvad er samtidighedskontrol?

I datastyringsprogrammering er samtidighedskontrol en mekanisme designet til at sikre, at nøjagtige resultater genereres af samtidige operationer.Disse resultater skal også opnås rettidigt.Samtidig kontrol ses meget ofte i databaser, hvor der er en cache af søgbare oplysninger, som brugerne kan få.

Programmerere forsøger at designe en database på en sådan måde, at vigtige transaktionernes virkning på delte data vil være serielt ækvivalente.Hvad dette betyder er, at data, der skaber kontakt med sæt transaktioner, ville være i en bestemt tilstand, hvor resultaterne kan fås, hvis alle transaktioner udfører serielt og i en bestemt rækkefølge.Nogle gange er disse data ugyldige som et resultat af, at de ændres af to transaktioner, samtidigt.

Der er flere måder at sikre, at transaktioner udfører den ene efter den anden, herunder brugen af gensidig ekskludering samt oprettelse af en ressource, der bestemmer, hvilke transaktioneradgang.Dette er dog overdreven og vil ikke give en programmør mulighed for at drage fordel af samtidighedskontrol i et distribueret system.Concurrency Control tillader samtidig gennemførelse af flere transaktioner, samtidig med at disse transaktioner holder sig væk fra hinanden, hvilket sikrer lineariserbarhed.En måde at implementere samtidighedskontrol på er brugen af en eksklusiv lås på en bestemt ressource til seriel transaktionsudførelser, der deler ressourcer.Transaktioner låser et objekt, der er beregnet til at blive brugt, og hvis en anden transaktion fremsætter en anmodning om det objekt, der er låst, skal denne transaktion vente på, at objektet låser op.

Implementering af denne metode i distribuerede systemer involverer låseadministratorer mdash;Servere, der udsteder ressourcelåse.Dette ligner meget servere til centraliserede gensidige undtagelser, hvor klienter kan anmode om låse og sende beskeder til frigivelse af låse på en bestemt ressource.Bevarelse af seriel udførelse er imidlertid stadig nødvendig for samtidighedskontrol.Hvis to separate transaktioner får adgang til et lignende objektsæt, skal resultaterne være ens, og som om disse transaktioner blev udført i en bestemt rækkefølge.For at sikre ordre om adgang til en ressource indføres to-faset låsning, hvilket betyder, at transaktioner ikke er tilladt nye låse ved frigivelse af en separat lås.

I to-faset låsning til samtidighedskontrol, betragtes dens indledende fase som voksendeFase, hvor transaktionen erhverver sin nødvendige lås.Den næste fase betragtes som en krympende fase, hvor transaktionen har sine låse frigivet.Der er problemer med denne type låsning.Hvis transaktioner aborterer, kan andre transaktioner muligvis bruge data fra objekter, der er ændret og ulåst af aborterede transaktioner.Dette ville resultere i, at andre transaktioner aborteres.