Graf čekání
Wait graph (neboli graf čekání transakcí ) je nástroj používaný při vývoji DBMS a vícevláknových systémů a sloužící zejména k určení situace uváznutí . Ve skutečnosti je graf čekající transakce řízený bipartitní graf obsahující dva typy vrcholů:
- vrcholy typu odpovídající transakcím nebo běžícím vláknům. Tvoří první část grafu.
![T](https://wikimedia.org/api/rest_v1/media/math/render/svg/ec7200acd984a1d3a3d7dc455e262fbe54f7f6e0)
- vrcholy typu odpovídající zdrojům a objektům, které mohou být zachyceny transakcemi. Tvoří druhou část grafu.
![R](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b0bfb3769bf24d80e15374dc37b0441e2616e33)
Oblouky čekacího grafu mají také dvojí význam:
- oblouky jdoucí z transakčního uzlu do zdrojového uzlu indikují, že tento zdroj již byl zachycen transakcí
![{\displaystyle (T,R)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dc7f8f1898cca258f50fd24e2a2f16f14230a774)
![T](https://wikimedia.org/api/rest_v1/media/math/render/svg/ec7200acd984a1d3a3d7dc455e262fbe54f7f6e0)
![R](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b0bfb3769bf24d80e15374dc37b0441e2616e33)
- oblouky jdoucí z uzlu zdroje do uzlu transakce indikují, že transakce čeká na uvolnění zdroje .
![{\displaystyle (R,T)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/49f7eb43d71aacb310117c02ff20517c2483190a)
![R](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b0bfb3769bf24d80e15374dc37b0441e2616e33)
![T](https://wikimedia.org/api/rest_v1/media/math/render/svg/ec7200acd984a1d3a3d7dc455e262fbe54f7f6e0)
![R](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b0bfb3769bf24d80e15374dc37b0441e2616e33)
Nejjednodušší vlastnosti
- Zdroj, který nemá žádné příchozí oblouky, je zdarma.
- Pokud má vrchol transakce určitý nenulový počet příchozích oblouků, pak je odpovídající proces (samotná transakce) ve stavu čekání, to znamená, že je pozastaven a nemůže být v aktuálním čase proveden.
- Pokud existuje cesta mezi dvěma transakcemi , musí být transakce provedena (dokončena) před zahájením provádění , protože ta vyžaduje uvolnění některých zdrojů zachycených transakcí .
![{\displaystyle T_{1}\rightarrow T_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3725af58a3e5f11857310f9d562d5d18fc340b98)
![T_{1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f304724948a3ef606c4a92459e22b87a954d993)
![T_{2}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d1ba5f12fbb0ff766aec6e22148b429373608555)
![T_{1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f304724948a3ef606c4a92459e22b87a954d993)
Z poslední vlastnosti samozřejmě vyplývá, že mrtvá situace odpovídá cyklu na čekacím grafu.
Zdroje