1.1.3 Phase Zero

The transaction processing services protocols extend the two-phase commit protocol by adding Phase Zero, which expands the beginning of Phase One. It begins when the root application requests completion of the transaction and it ends when all Phase Zero participants have voted that the phase is complete, after which Phase One proceeds, as described previously. The value of the additional phase is that during Phase Zero, new participants can be enlisted in the transaction.

In the two-phase commit protocol that is described in [GRAY], the set of participants is fixed from the moment that Phase One begins. Phase Zero is a useful extension in several scenarios. For example, a caching resource manager can be placed between an application and a database resource manager so that all requested changes are held in memory until the caching resource manager receives a request from the transaction manager to exit Phase Zero. Only then is the database resource manager enlisted in the transaction and the changes are made to the durable store, yielding potentially significant performance gains. Further details of Phase Zero are described in [MS-DTCO] section 1.3.1.1.