Skip to main content

Wat is gelijktijdigheidscontrole?

In het programmeren van gegevensbeheer is concurrency -besturing een mechanisme dat is ontworpen om ervoor te zorgen dat nauwkeurige resultaten worden gegenereerd door gelijktijdige bewerkingen.Die resultaten moeten ook tijdig worden verkregen.Concurrency -besturing wordt heel vaak gezien in databases waar er een cache is met doorzoekbare informatie voor gebruikers om te verkrijgen.

Programmeurs proberen een database op een zodanige manier te ontwerpen dat het effect van belangrijke transacties op gedeelde gegevens serieel equivalent zal zijn.Wat dit betekent is dat gegevens die contact maken met sets transacties in een bepaalde status zouden zijn waar de resultaten verkrijgbaar zijn als alle transacties serieel en in een bepaalde volgorde uitvoeren.Soms zijn die gegevens ongeldig als gevolg van het tegelijkertijd worden gewijzigd door twee transacties.

Er zijn meerdere manieren om ervoor te zorgen dat transacties de een na de andere uitvoeren, inclusief het gebruik van wederzijdse uitsluiting en het creëren van een bron die beslist welke transacties hebben welke transacties hebbentoegang.Dit is echter overdreven en zal een programmeur niet laten profiteren van gelijktijdigheidscontrole in een gedistribueerd systeem.Concurrency Control maakt de gelijktijdige uitvoering van meerdere transacties mogelijk, terwijl deze transacties van elkaar worden weggehouden, waardoor linearizeerbaarheid wordt gewaarborgd.Een manier om gelijktijdigheidscontrole te implementeren, is het gebruik van een exclusieve slot op een bepaalde bron voor seriële transactie -uitvoeringen die middelen delen.Transacties vergrendelen een object dat bedoeld is om te worden gebruikt, en als een andere transactie een verzoek indient om het object dat is vergrendeld, moet die transactie wachten tot het object ontgrendeling is.

Implementatie van deze methode in gedistribueerde systemen omvat lock managers mdash;Servers die resource sloten uitgeven.Dit lijkt erg op servers voor gecentraliseerde wederzijdse uitsluitingen, waarbij clients vergrendelingen kunnen aanvragen en berichten kunnen verzenden voor de release van sloten op een bepaalde bron.Behoud van seriële uitvoering is echter nog steeds nodig voor gelijktijdigheidscontrole.Als twee afzonderlijke transacties toegang krijgen tot een vergelijkbare objectset, moeten de resultaten vergelijkbaar zijn en alsof deze transacties in een bepaalde volgorde zijn uitgevoerd.Om de volgorde van de toegang tot een bron te garanderen, wordt tweefasen vergrendeling geïntroduceerd, wat betekent dat transacties geen nieuwe sloten zijn toegestaan bij de release van een afzonderlijk slot.

in tweefasige vergrendeling voor gelijktijdigheidscontrole, de beginfase wordt beschouwd als de groeiFase, waarbij de transactie haar benodigde slot verwerft.De volgende fase wordt beschouwd als een krimpende fase, waarin de transactie zijn sloten heeft vrijgegeven.Er zijn problemen met dit soort vergrendeling.Als transacties afbreken, kunnen andere transacties gegevens van objecten gebruiken die zijn gewijzigd en ontgrendeld door afgebroken transacties.Dit zou ertoe leiden dat andere transacties worden afgebroken.