Procházet otázky :: SZZ na MFF UK

#

- Hlavní strana
- Okruhy
- Projít
- Stáhnout
- Co je potřeba
- Chci přispět
- Kredity

Hledat:

## Prohlížení státnicových textů

### Vlastnosti transakcí

Podívejme se nyní na vlastnosti požadované po transakcích. Obvykle se používá zkratka prvních písmen anglických názvů vlastností ACID - atomicity, consistency, isolation (independence), durability.

atomicita
  - transakce se tváří jako jeden celek, musí buď proběhnout celá, nebo vůbec ne.
konzistence
  - transakce transformuje databázi z jednoho konzistentního stavu do jiného konzistentního stavu.
nezávislost
  - transakce jsou nezávislé, tj. dílčí efekty transakce nejsou viditelné jiným transakcím.
trvanlivost
  - efekty úspěšně ukončené (potvrzené,commited) transakce jsou nevratně uloženy do databáze a nemohou být zrušeny.

Transakce mohou být v uživatelských programech prováděny paralelně (spíše zdánlivě paralelně, stejně jako je paralelismus multitaskingu na jednoprocesorových strojích jen zdánlivý, zajistí to ale možnost paralelizace nedatabázových akcí a pomalé transakce nebrzdí rychlé). Je zřejmé, že posloupnost transakcí může být zpracována paralelně různým způsobem. Každá transakce se skládá z několika akcí. Stanovené pořadí provádění akcí více transakcí v čase nazveme rozvrhem.

Rozvrh, který splňuje následující podmínky, budeme nazývat legální:

- Objekt je nutné mít uzamknutý, pokud k němu chce transakce přistupovat.
- Transakce se nebude pokoušet uzamknout objekt již uzamknutý jinou transakcí (nebo musí počkat, než bude objekt odemknut).

Důležitými pojmy pro paralelní zpracování jsou sériovost či uspořádatelnost. Sériové rozvrhy zachovávají operace každé transakce pohromadě (a provádí se jen jedna transakce najednou). Pro transakcí tedy existuje různých sériových rozvrhů. Pro získání korektního výsledku však můžeme použít i rozvrhu, kde jsou operace různých transakcí navzájem prokládány. Přirozeným požadavkem na korektnost je, aby efekt paralelního zpracování transakcí byl týž, jako kdyby transakce byly provedeny v nějakém sériovém rozvrhu. Předpokládáme-li totiž, že každá transakce je korektní program, měl by vést výsledek sériového zpracování ke konzistentnímu stavu. O systému zpracování transakcí, který zaručuje dosažení konzistentního stavu nebo stejného stavu jako sériové rozvrhy, se říká, že zaručuje uspořádatelnost.

Mohou se vyskytnout problémy, které uspořádatelnosti zamezují. Ty nazýváme konflikty. Plynou z pořadí dvojic akcí různých transakcí na stejném objektu. Existují tři typy konfliktních situací:

1. WRITE-WRITE - přepsání nepotvrzených dat
2. READ-WRITE - neopakovatelné čtení
3. WRITE-READ - čtení nepotvrzených (uncommitted) dat

Řekneme, že rozvrh je konfliktově uspořádatelný, je-li konfliktově ekvivalentní nějakému sériovému rozvrhu (tedy jsou v něm stejné, tj. žádné konflikty). Test na konfliktovou uspořádatelnost se dá provést jako test acykličnosti grafu, ve kterém konfliktní situace představují hrany a transakce vrcholy. Konfliktová uspořádatelnost je slabší podmínka než uspořádatelnost - nezohledňuje ROLLBACK (zotavitelnost - zachování konzistence, i když kterákoliv transakce selže) a dynamickou povahu databáze (vkládání a mazání objektů). Zotavitelnosti se dá dosáhnout tak, že každá transakce je potvrzena až poté, co jsou potvrzeny všechny ostatní transakce, které změnily data čtená v . Pokud v zotavitelném rozvrhu dochází ke čtení změn pouze potvrzených transakcí, nemůže dojít ani k jejich kaskádovému rušení.

Při zpracování (i uspořádatelného) rozvrhu může dojít k situaci uváznutí - deadlocku. To nastane tehdy, pokud jedna transakce čeká na zámek na objekt, který má přidělený a naopak. Situaci lze zobecnit i na více transakcí. Uváznutí lze buď přímo zamezit charakterem rozvrhu, nebo detekovat (hledáním cyklu v grafu čekajících transakcí, tzv. waits-for grafu) a jednu z transakcí zabít a spustit znova.

K zajištění uspořádatelnosti a zotavitelnosti a zabezpečení proti kaskádovým rollbackům a deadlocku se používají různá schémata (požadavky na rozvrhy). Jedním z nich jsou uzamykací protokoly.