abort
ALUSTA UUESTI
NIMEKIRJA JUURDE
2. Otsustamise faas
PREPARE!
PREPARE!
commit
commit
commit
O2: ABORTED
end_transaction;
O2: READY
O1: ABORTED
O1: READY
3.Rakendus annab käsu transaktsioon lõpetada:
Account (server 1)
Account (server 2)
START TRANSACTION;
START TRANSACTION;
1. Rakendus annab käsu alustada transaktsiooni:
UPDATE Account SET balance=balance-100 WHERE customer_id=1;
UPDATE Account SET balance=balance-100 WHERE customer_id=1;
UPDATE Account SET balance=balance+100 WHERE customer_id=2;
UPDATE Account SET balance=balance+100 WHERE customer_id=2;
COMMIT;
COMMIT;
2. Rakendus saadab laused transaktsiooni osalistele täitmiseks
rida on transaktsiooni T poolt eksklusiivselt lukustatud
rida on transaktsiooni T poolt eksklusiivselt lukustatud
2PC protokoll
begin_commit
1. Hääletamise faas
ready_commit
ready_commit
commit
COMMIT;
COMMIT;
}
Globaalne
transaktsioon T
TIMEOUT
abort
ROLLBACK;
ROLLBACK;
TIMEOUT
abort