PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.2 » Internes » Traitement des transactions » Transactions en deux phases

74.4. Transactions en deux phases #

PostgreSQL accepte un protocole de validation en deux phases (two-phase commit ou 2PC) qui permet à des systèmes distribués de fonctionner ensemble d'une façon transactionnelle. Les commandes sont PREPARE TRANSACTION, COMMIT PREPARED et ROLLBACK PREPARED. Les transactions en deux phases ont pour but d'être utilisées par des systèmes de gestion externe des transactions. PostgreSQL suit les fonctionnalités et le modèle proposés par le standard X/Open XA, mais n'implémente pas certains aspects mois fréquemment utilisés.

Quand l'utilisateur exécute PREPARE TRANSACTION, les seules commandes possibles après sont COMMIT PREPARED ou ROLLBACK PREPARED. En général, cet état préparé est sensé avoir une durée de vie très courte, mais des problèmes externes de disponibilité pourraient forcer les transactions à rester dans cet état pour un long moment. Les transactions préparées rapides sont stockées uniquement en mémoire partagée et dans les WAL. Les transactions qui durent pendant plusieurs checkpoints sont enregistrées dans le répertoire pg_twophase. Les transactions préparées en cours peuvent être inspectées en utilisant la vue pg_prepared_xacts.