# Two Phase Commit (2PC) - Warum



## Alex04 (15. Jul 2011)

Hallo,
ich verstehe was ein 2pc (oder prepared commit) ist, jedoch ist mir nicht ganz klar, warum dieser benötigt wird.
Kann ich eine erfolgreich abgeschlossene Transaktion nicht mehr rückgängig machen, d.h. einen Rollback ausführen obwohl eine Transaktion erfolgreich war?
Weil ansonsten ist ein 2PC ja nur eine konservativere Vorgehensweise um mögliche Fehlerquellen auszuschließen...?


----------



## turtle (15. Jul 2011)

Lies mal Two-phase commit protocol - Wikipedia, the free encyclopedia


----------



## Alex04 (15. Jul 2011)

Ja danke, ich weiß was es ist, ich habe auch schon mehrere Seiten darüber gelesen.
Ich verstehe nur nicht, warum ich statt einem prepared commit nicht einfach den standard commit mache und im Fehlerfall einfach einen Rollback über alle Transaktionen durchführe...


----------



## SlaterB (15. Jul 2011)

ein Commit ist doch ne ernste Sache, da kann man doch nicht sagen erstmal commiten und später vielleicht wieder Rollback wenn es irgendwo Probleme gibt

Beispiel Überweisung, Bank1 und Bank2 beteiligt, am Ende einfaches Commit, Bank2 bekommt das Geld und hat keine Einwände, commitet,
Bank1 stellt aber fest dass der User gar kein Geld hat, findet die Transaktion nicht ok, 
das wird dann übergeordnet festgestellt und Bank2 daraufhin auch zum Rollback geboten, 
aber zwischenzeitlich war dort das Geld schon frei verfügbar, ein Commit ist endgültig mit allen Konsequenzen, das Geld könnte bereits wieder weg sein, 
mal abgesehen davon dass in diesem äußerst denkbaren Fall immer noch 2 Phasen nötig sind, willst du so eine Situation riskieren?

ist doch vollkommen logisch dass man erstmal alle Beteiligten prüfen läßt, und dann erst Commit

edit:
wobei das der extreme inhaltliche Fall ist, die Absicherung gegen Ausfall usw. ist natürlich auch sehr wichtig,
nicht dass eine DB Änderungen freigibt und die andere ihre Informationen unwiederruflich verliert


----------



## Alex04 (15. Jul 2011)

Schon wieder du SlaterB, langsam muss ich dich bezahlen 

Ja sowas in der Art dachte ich mir schon, nur konnte ich genau diese Tatsache leide nirgendwo lesen. Alle sagen immer es ist gut weil... Nachteile... Dass man eine TA eigentlich nicht Rückgängig machen kann wurde mir nicht bestätigt!

Vielen Dank!


----------



## Tobias (15. Jul 2011)

Das ergibt sich auch irgendwie aus der Definition einer Transaktion, bzw aus dem ACID-Prinzip:

A tomic
C onsistent
I solated
D urable

Eine per Commit beendete Transaktion hat also als Ergebnis dauerhafte Änderungen am Datenbestand verursacht.


----------

