Što je kontrola istodobnosti?

U programiranju upravljanja podacima, kontrola istodobnosti je mehanizam dizajniran da osigura da se točni rezultati generiraju istodobnim operacijama. Ti se rezultati također moraju dobiti na vrijeme. Kontrola istodobnosti vrlo se često može vidjeti u bazama podataka u kojima postoji predmemorija pretraživih informacija koje korisnici mogu dobiti.

Programeri pokušavaju dizajnirati bazu podataka na takav način da učinak važnih transakcija na dijeljene podatke bude serijski ekvivalentan. To znači da bi podaci koji stupaju u kontakt sa skupovima transakcija bili u određenom stanju u kojem su rezultati dostupni ako se sve transakcije izvršavaju serijski i određenim redoslijedom. Ponekad su ti podaci nevažeći jer su ih istodobno modificirale dvije transakcije.

Postoji više načina da se osigura da se transakcije izvršavaju jedna za drugom, uključujući korištenje međusobnog isključivanja kao i stvaranje resursa koji odlučuje koje transakcije imaju pristup. To je, međutim, pretjerano i neće dopustiti programeru da ima koristi od kontrole istodobnosti u distribuiranom sustavu. Kontrola istodobnosti omogućuje istovremeno izvršenje više transakcija, držeći te transakcije podalje jedna od druge, osiguravajući linearizaciju. Jedan od načina implementacije kontrole istodobnosti je korištenje ekskluzivnog zaključavanja određenog resursa za serijske transakcije koje dijele resurse. Transakcije će zaključati objekt namijenjen za korištenje, a ako neka druga transakcija zatraži objekt koji je zaključan, ta transakcija mora pričekati da se objekt otključa.

Implementacija ove metode u distribuiranim sustavima uključuje upravitelje zaključavanja — poslužitelje koji izdaju zaključavanje resursa. Ovo je vrlo slično poslužiteljima za centralizirana međusobna isključenja, gdje klijenti mogu zahtijevati zaključavanje i slati poruke za otpuštanje zaključavanja na određenom resursu. Međutim, očuvanje serijskog izvršenja je još uvijek potrebno za kontrolu istodobnosti. Ako dvije odvojene transakcije pristupaju sličnom skupu objekata, rezultati moraju biti slični i kao da su te transakcije izvršene određenim redoslijedom. Kako bi se osigurao red pristupa resursu, uvodi se dvofazno zaključavanje, što znači da transakcijama nije dopušteno novo zaključavanje nakon otpuštanja zasebnog zaključavanja.

U dvofaznom zaključavanju za kontrolu konkurentnosti, njegova početna faza se smatra rastućom fazom, gdje transakcija stječe potrebno zaključavanje. Sljedeća faza se smatra fazom smanjivanja, u kojoj se otpuštaju zaključavanja transakcije. Postoje problemi s ovom vrstom zaključavanja. Ako se transakcije prekinu, druge transakcije mogu koristiti podatke iz objekata modificiranih i otključanih prekinutim transakcijama. To bi rezultiralo prekidom drugih transakcija.