Hvad er samtidighedskontrol?

I datastyringsprogrammering er concurrency control 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 at skabe en ressource, der bestemmer, hvilke transaktioner der har adgang. Dette er dog overdreven ogtillader ikke, at en programmør kan 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åses op.

Implementering af denne metode i distribuerede systemer involverer låseadministratorer - 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 exeCution 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-fase-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 den voksende fase, 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.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

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