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
.