I have an application that interacts with several databases and some custom services. For some operations, I need transactional behavior when a set of changes is either fixed in all databases / services, or all are rolled back if an error occurs.
The XA standard from the X / Open group and the Java JTA seem to solve this problem exactly using a two-phase commit process. Some databases (mySQL, Postgres, Oracle) support these interfaces, but I feel that they are not often used or are declining in popularity. It's true? And if so, why?
I know some replication issues from XA to mySQL. In addition, XA transactions can be significantly slower. Are there other reasons why XA is unpopular / unusual?
source share