6.5. Kétfázisú COMMIT

Ha egy tranzakción belül különböző csomópontokon módosítunk adatokat, akkor az adatbázis-kezelő rendszernek biztosítania kell, hogy a módosítások egyetlen műveletként legyenek kezelve. Minden tranzakció véget ér vagy egy COMMIT utasítással vagy valamilyen ok miatt visszagörgetéssel. A COMMIT utasítás hatására a véglegesítés lehet sikeres vagy sikertelen. Elosztott adatbázisok esetén ennek ugyanígy kell lennie, azaz a tranzakcióban lévő minden műveletnek az eredményét alkalmazni kell az összes adatbázison, vagy a tranzakció minden műveletét vissza kell vonni, függetlenül attól, hogy melyik csomópont melyik adatbázisában történt a változás. Az elosztott rendszerekben a véglegesítést kétfázisú COMMIT segítségével valósíthatjuk meg, ahol az első fázis az előkészítés, a második pedig maga a véglegesítés.

Elosztott kétfázisú COMMIT segítségével egy alkalmazói program egyetlen tranzakción belül több adatbázis-kezelő rendszerben lévő adatot tud frissíteni. A kétfázisú COMMIT koordinálja a különböző csomópontokon végbemenő COMMIT-okat. A kétfázisú COMMIT konzisztens kimenetet biztosít, garantálva az adatintegritás megőrzését a csomópontok között kommunikációs vagy rendszerhibák esetén is. Az egyik adatbázis-kezelő rendszer koordinálja a kétfázisú COMMIT-ot, míg a másik résztvevőként van jelen.

Az előkészítő szakaszban minden résztvevő felkészül egy COMMIT-ra. Minden résztvevő informálja a koordinátort, ha a naplórekordok sikeresen kiíródtak és jelzi, hogy kész a COMMIT végrehajtására. Ha minden résztvevő kész a COMMIT végrehajtására, a következő fázis, azaz a COMMIT végrehajtása megkezdődik. Ez a fázis úgy valósul meg, hogy a koordinátor és az alárendelt résztvevők sorozatosan kommunikálnak egymással. A COMMIT fázis alatt a siker még rendszerhiba esetén is feltételezett. Ha minden résztvevő a COMMIT folytatását választja, a siker az adatintegritás sérülése nélkül feltételezhető. Azonban ha egyetlen résztvevő nem képes a COMMIT végrehajtására, akkor a koordinátornak vissza kell állítania a változásokat az összes résztvevőnél.

Ha egy alkalmazás egy tranzakción belül olyan módosítást végez, amelynek több csomópontra van hatása, kétfázisú COMMIT-ot kell használni az adatintegritás biztosítása érdekében.