Hvad er konkurrencekontrol?

I datahåndteringsprogrammering er samtidighedskontrol en mekanisme designet til at sikre, at nøjagtige resultater genereres af samtidige operationer. Disse resultater skal også opnås rettidigt. Samtidighedskontrol ses meget ofte i databaser, hvor der er en cache med søgbar information, som brugere kan få.

Programmerere forsøger at designe en database på en sådan måde, at vigtige transaktioners effekt på delte data vil være serielt ækvivalente. Hvad dette betyder er, at data, der kommer i kontakt med sæt af transaktioner, vil være i en bestemt tilstand, hvor resultaterne kan fås, hvis alle transaktioner udføres serielt og i en bestemt rækkefølge. Undertiden er disse data ugyldige som følge af, at de ændres ved hjælp af to transaktioner, samtidigt.

Der er flere måder at sikre, at transaktioner udføres efter hinanden, herunder brugen af ​​gensidig ekskludering samt skabelse af en ressource, der bestemmer, hvilke transaktioner der har adgang. Dette er imidlertid for meget og giver ikke en programmerer mulighed for at drage fordel af samtidighedskontrol i et distribueret system. Samtidig kontrol muliggør samtidig udførelse af flere transaktioner, mens disse transaktioner holdes væk fra hinanden, hvilket sikrer lineariserbarhed. En måde at implementere samtidighedskontrol er brugen af ​​en eksklusiv lås på en bestemt ressource til serielle 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 skal låses op.

Implementering af denne metode i distribuerede systemer involverer låseadministratorer - servere, der udsteder ressourcelåse. Dette ligner meget servere til centraliserede gensidige ekskluderinger, hvor klienter kan anmode om låse og sende beskeder til frigivelse af låse på en bestemt ressource. Bevarelse af seriel eksekvering er dog stadig nødvendig for samtidig kontrol. 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 orden om adgang til en ressource indføres to-faset låsning, hvilket betyder, at transaktioner ikke tillader nye låse ved frigivelse af en separat lås.

Ved to-faset låsning til samtidighedskontrol betragtes dens indledende fase som den voksende fase, hvor transaktionen får den nødvendige lås. Den næste fase betragtes som en krympende fase, hvor transaktionen frigør sine låse. Der er problemer med denne type låsning. Hvis transaktioner afbrydes, kan andre transaktioner muligvis bruge data fra objekter, der er ændret og låst op ved aborterede transaktioner. Dette ville resultere i, at andre transaktioner afbrydes.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?