Co je to Concurrency Control?
V programování správy dat je řízení souběžnosti mechanismem navrženým k zajištění toho, aby se pomocí souběžných operací generovaly přesné výsledky. Tyto výsledky musí být rovněž získány včas. Řízení souběžnosti je velmi často vidět v databázích, kde existuje mezipaměť prohledávatelných informací, které mohou uživatelé získat.
Programátoři se snaží navrhnout databázi tak, aby účinek důležitých transakcí na sdílená data byl sériově ekvivalentní. To znamená, že data, která přicházejí do styku se sadami transakcí, by byla v určitém stavu, kde by bylo možné získat výsledky, pokud by všechny transakce byly prováděny sériově a v určitém pořadí. Někdy jsou tato data neplatná v důsledku jejich úpravy dvěma transakcemi současně.
Existuje několik způsobů, jak zajistit, aby se transakce prováděly jeden po druhém, včetně použití vzájemného vyloučení a vytvoření zdroje, který rozhoduje, které transakce mají přístup. To je však nadměrné a neumožní programátorům využívat výhody souběžné kontroly v distribuovaném systému. Kontinuální kontrola umožňuje současné provádění více transakcí, přičemž tyto transakce udržuje od sebe a zajišťuje linearizaci. Jedním ze způsobů, jak implementovat řízení souběžnosti, je použití exkluzivního zámku na konkrétním prostředku pro provádění sériových transakcí, které sdílejí prostředky. Transakce zamknou objekt, který má být použit, a pokud nějaká jiná transakce podá požadavek na uzamčený objekt, musí tato transakce počkat, až se objekt odemkne.
Implementace této metody v distribuovaných systémech zahrnuje správce zámku - servery, které vydávají zámky zdrojů. Je to velmi podobné serverům pro centralizované vzájemné vyloučení, kde klienti mohou požadovat zámky a odesílat zprávy o uvolnění zámků na konkrétním prostředku. Zachování sériového provedení je však stále nezbytné pro řízení souběžnosti. Pokud dva oddělené transakce přistupují k podobné sadě objektů, musí být výsledky podobné a jako by tyto transakce byly provedeny v určitém pořadí. Pro zajištění pořadí přístupu k prostředku je zavedeno dvoufázové zamykání, což znamená, že transakce nejsou povoleny nové zámky po uvolnění samostatného zámku.
V případě dvoufázového zamykání pro řízení souběžnosti se za počáteční fázi považuje fáze růstu, kdy transakce získá potřebný zámek. Další fáze je považována za zmenšující se fázi, ve které má transakce uvolněné zámky. U tohoto typu zamykání jsou problémy. Pokud transakce přeruší, mohou jiné transakce používat data z objektů upravených a odemknutých přerušenými transakcemi. To by mělo za následek přerušení dalších transakcí.