Kaj je nadzor sočasnosti?

Pri programiranju upravljanja s podatki je nadzor sočasnosti mehanizem, zasnovan tako, da zagotovi, da sočasne operacije ustvarijo točne rezultate. Prav tako je treba te rezultate pridobiti pravočasno. Nadzor sočasnosti je zelo pogosto viden v bazah podatkov, kjer je predpomnilnik informacij, ki jih lahko iščejo uporabniki.

Programerji poskušajo oblikovati bazo podatkov na tak način, da bo učinek pomembnih transakcij na skupne podatke serijsko enak. To pomeni, da bi bili podatki, ki vzpostavijo stik z nizi transakcij, v določenem stanju, v katerem so rezultati dosegljivi, če se vse transakcije izvajajo serijsko in v določenem vrstnem redu. Včasih so ti podatki neveljavni, ker so bili spremenjeni z dvema transakcijama hkrati.

Obstaja več načinov za zagotovitev, da se transakcije izvajajo ena za drugo, vključno z uporabo vzajemne izključitve in ustvarjanjem vira, ki odloča, katere transakcije imajo dostop. Vendar je to preveč in programerju ne bo omogočilo, da bi imel koristi od nadzora sočasnosti v porazdeljenem sistemu. Nadzor sočasnosti omogoča hkratno izvajanje več transakcij, medtem ko te transakcije ločuje drug od drugega, kar zagotavlja linearizacijo. Eden od načinov izvajanja nadzora sočasnosti je uporaba izključne ključavnice na določenem viru za serijske izvedbe transakcij, ki si delijo vire. Transakcije bodo zaklenile objekt, ki je namenjen uporabi, in če neka druga transakcija zahteva za zaklenjeni objekt, mora ta transakcija počakati, da se objekt odklene.

Izvedba te metode v porazdeljenih sistemih vključuje upravljalce zaklepanja – strežnike, ki izdajajo zaklepanje virov. To je zelo podobno strežnikom za centralizirane medsebojne izključitve, kjer lahko odjemalci zahtevajo zaklepanje in pošiljajo sporočila za sprostitev zaklepanja določenega vira. Ohranjanje serijskega izvajanja pa je še vedno potrebno za nadzor sočasnosti. Če dve ločeni transakciji dostopata do podobnega nabora objektov, morajo biti rezultati podobni in kot da bi bile te transakcije izvedene v določenem vrstnem redu. Za zagotovitev reda pri dostopu do vira je uvedeno dvofazno zaklepanje, kar pomeni, da transakcijam ni dovoljeno nove zaklepanje ob sprostitvi ločene ključavnice.

Pri dvofaznem zaklepanju za nadzor sočasnosti se njegova začetna faza šteje za naraščajočo fazo, kjer transakcija pridobi potrebno zaklepanje. Naslednja faza se šteje za fazo krčenja, v kateri se sprostijo ključavnice transakcije. Pri tej vrsti zaklepanja obstajajo težave. Če se transakcije prekinejo, lahko druge transakcije uporabijo podatke iz predmetov, ki so bili spremenjeni in odklenjeni s prekinjenimi transakcijami. To bi povzročilo prekinitev drugih transakcij.