Skip to main content

Vad är samtidighetskontroll?

I datahanteringsprogrammering är samtidighetskontroll en mekanism utformad för att säkerställa att exakta resultat genereras av samtidiga operationer.Dessa resultat måste också erhållas i rätt tid.Samtidighetskontroll ses ofta i databaser där det finns en cache med sökbar information för användare att få.

Programmerare försöker utforma en databas på ett sådant sätt att viktiga transaktionernas effekt på delade data kommer att vara seriellt ekvivalenta.Vad detta betyder är att data som tar kontakt med uppsättningar transaktioner skulle vara i ett visst tillstånd där resultaten kan erhållas om alla transaktioner kör seriellt och i en viss ordning.Ibland är dessa uppgifter ogiltiga till följd av att de ändras av två transaktioner, samtidigt.

Det finns flera sätt att säkerställa att transaktioner kör en efter varandra, inklusive användning av ömsesidig uteslutning samt skapa en resurs som bestämmer vilka transaktioner som hartillgång.Detta är emellertid överdrivet och kommer inte att tillåta en programmerare att dra nytta av samtidighetskontroll i ett distribuerat system.Samtidskontroll tillåter samtidigt genomförande av flera transaktioner samtidigt som dessa transaktioner håller bort från varandra, vilket säkerställer lineariserbarhet.Ett sätt att implementera samtidighetskontroll är användningen av ett exklusivt lås på en viss resurs för seriefråtkörningar som delar resurser.Transaktioner kommer att låsa ett objekt som är avsett att användas, och om någon annan transaktion gör en begäran om objektet som är låst måste den transaktionen vänta på att objektet låses upp.

Implementering av denna metod i distribuerade system involverar låshanterare mdash;servrar som utfärdar resurslås.Detta är mycket lik servrar för centraliserade ömsesidiga undantag, där klienter kan begära lås och skicka meddelanden för frisläppandet av lås på en viss resurs.Bevarande av seriell exekvering är dock fortfarande nödvändig för samtidskontroll.Om två separata transaktioner har tillgång till en liknande objektuppsättning måste resultaten vara liknande och som om dessa transaktioner genomfördes i en viss ordning.För att säkerställa order om tillgång till en resurs införs tvåfaslåsning, vilket innebär att transaktioner inte tillåts nya lås vid frisläppandet av ett separat lås.

I tvåfaslåsning för samtidskontroll anses dess initiala fas den växande växandeFas, där transaktionen förvärvar sitt nödvändiga lås.Nästa fas anses vara en krympningsfas, där transaktionen har släppt sina lås.Det finns problem med denna typ av låsning.Om transaktioner avbryter kan andra transaktioner använda data från objekt som modifieras och låses upp av avbrutna transaktioner.Detta skulle resultera i att andra transaktioner avbryts.