The biggest problem is scalability due to the blocking nature of the 2-phase commit protocol.
2PC requires careful coordination between the parties involved: in particular, each side must recognize the preparation phase and fixation. As soon as the participant confirms that he is ready to commit, he must block until the transaction coordinator sends a commit or rollback message. If either side is on the network, network latency causes a bottleneck for communication between nodes.
In addition, as soon as the party recognizes that it is ready for fixation, it should actually be able to complete the transaction subsequently, even if it crashed between them. This requires a breakpoint for persistence (even when the transaction rolls back later), and also possibly limits bandwidth.
Alexander Langer
source share