2015-09-26 10 views

Odpowiedz

38

Oczekiwanie na schemat: Jest to technika zapobiegawcza zapobiegająca powstawaniu zakleszczeń. Gdy transakcja Ti żąda elementu danych aktualnie przechowywanego przez Tj, Ti może czekać tylko wtedy, gdy ma znacznik czasu mniejszy niż czas Tj (To jest Ti jest starszy niż Tj), w przeciwnym razie Ti jest wycofywany (umiera).

W tym schemacie, jeśli żądania transakcji zablokowanie zasobu (pozycja danych), który jest już bowiem w konflikcie blokady przez inną transakcję, wówczas może wystąpić jedna z dwóch możliwości -

(1) Jeśli TS (Ti) < TS (Tj) - czyli Ti, który żąda blokady powodującej konflikt, jest starszy niż Tj - wówczas Ti może czekać, aż pozycja danych stanie się dostępna.

(2) Jeśli TS (Ti)> TS (tj) - czyli Ti jest młodszy od Tj - to Ti umiera. Ti jest ponownie uruchamiany później z losowym opóźnieniem, ale z tym samym znacznikiem czasu.

Ten schemat pozwala starszej transakcji czekać, ale zabija młodszą.

Na przykład

Załóżmy, że T22 transakcji, T23, T24 ma stemple czasowe 5, 10 i 15, odpowiednio. Jeśli T22 zgłosi element danych przechowywany przez T23, T22 będzie czekać. Jeśli T24 zażąda elementu danych przechowywanego przez T23, wówczas T24 zostanie wycofany.

Schemat rany: Jest to technika zapobiegawcza do zapobiegania zakleszczeniom. Jest to odpowiednik schematu wyczekiwania. Kiedy transakcja Ti żąda elementu danych aktualnie przechowywanego przez Tj, Ti może czekać tylko wtedy, gdy ma znacznik czasu większy niż czas Tj, w przeciwnym razie Tj jest wycofywany (Tj jest zraniony przez Ti).

W tym schemacie, jeśli żądania transakcji zablokowanie zasobu (pozycja danych), który jest już bowiem w konflikcie zamka przez jakiś inny transakcja może wystąpić jedna z dwóch możliwości -

(1) Jeśli TS (Ti) < TS (Tj), to Ti zmusza TJ do wycofania - czyli Ti rany Tj. Tj jest ponownie uruchamiany później z losowym opóźnieniem, ale z tym samym znacznikiem czasu.

(2) Jeśli TS (Ti)> TS (Tj), a następnie Ti jest zmuszony czekać, aż zasób jest dostępny.

Ten schemat pozwala młodszej transakcji czekać; ale gdy starsza transakcja zażąda przedmiotu posiadanego przez młodszego, starsza transakcja zmusza młodszego do przerwania i wydania przedmiotu.

Na przykład

Załóżmy, że transakcje T22, T23, T24 mają znaczniki czasu 5, 10 i 15, odpowiednio.Jeśli T22 zgłosi element danych przechowywany przez T23, element danych zostanie wywłaszczony z T23, a T23 zostanie wycofany. Jeśli T24 zażąda elementu danych przechowywanego przez T23, wówczas T24 będzie czekać.

W obu przypadkach transakcja wprowadzana do systemu na późniejszym etapie jest przerywana.

+1

wait-die i gojenia oczekiwania są po raz pierwszy zaproponowana w http://dl.acm.org/citation.cfm?id=320260. –

4

Parth udzielił szczegółowej odpowiedzi. Tutaj streszczam to w inny sposób.

Załóżmy, że Ti żąda blokady w posiadaniu TJ. Poniższa tabela zawiera podsumowanie działań podjętych przez wait-die i gojenia oczekiwania schematu:

      wait-die   wound-wait 
Ti is younger than Tj  Ti dies   Ti waits 
Ti is older than Tj  Ti waits   Tj aborts 

Oba systemy wolą starszych transakcji ze starszym datownik.

+0

Świetna odpowiedź, ale czy 'die' jest taka sama jak przerwanie/wycofanie? –

+1

@ P_95 Tak, 'die' jest taki sam jak przerwanie/wycofanie. –

0

W obu przypadkach Old jest zawsze mistrzem, tzn. Przeżyje. Różnica wynika z perspektywy młodszej transakcji.

Jeśli młodszy żąda zasobu przechowywanego przez starą przesyłkę. , czekając/umierając może poczekać, by dać szacunek Staremu transowi. Jeśli młodszy żąda zasobu przechowywanego przez starą osobę, w ranie/kostce będzie zmuszony wycofać się jako Stary trans.

W obu starych schematach nigdy się nie traci.

Patrz: https://www.tutorialspoint.com/dbms/dbms_deadlock.htm

Powiązane problemy