Content deleted Content added
No edit summary |
Joerg Bader (talk | contribs) m specified wiki link |
||
Line 11:
| last2 = Stonebraker
| first2 = M.
}}</ref> is a [[distributed algorithm]] which lets all nodes in a [[distributed system]] agree to [[Commit (data management)|commit]] a [[database transaction|transaction]]. Unlike the [[two-phase commit protocol]] (2PC) however, 3PC is non-blocking. Specifically, 3PC places an upper bound on the amount of time required before a transaction either commits or [[Abort (computing)|aborts]]. This property ensures that if a given transaction is attempting to commit via 3PC and holds some [[lock (computer science)|resource locks]], it will release the locks after the timeout.
3PC was originally described by [[Dale Skeen]] and [[Michael Stonebraker]] in their paper, “A Formal Model of Crash Recovery in a Distributed System”.<ref name=3PC /> In that work, they modeled 2PC as a system of [[non-deterministic finite automaton|non-deterministic finite state automata]] and proved that it is not resilient to a random single site failure. The basic observation is that in 2PC, while one site is in the “prepared to commit” state, the other may be in either the “commit” or the “abort” state. From this analysis, they developed 3PC to avoid such states and it is thus resilient to such failures.
|