66.4. Двухфазные транзакции #

Postgres Pro поддерживает протокол двухфазной фиксации (2PC), позволяющий нескольким распределённым системам работать в транзакционной манере. В рамках этого протокола используются следующие команды: PREPARE TRANSACTION, COMMIT PREPARED и ROLLBACK PREPARED. Двухфазные транзакции предназначены для использования внешними системами управления транзакциями. Postgres Pro придерживается особенностей и модели, предложенных в рамках стандарта X/Open XA, однако не применяет некоторые редко используемые аспекты.

Когда пользователь выполняет команду PREPARE TRANSACTION для подготовки транзакции, следующим шагом он может выполнить только команду COMMIT PREPARED или ROLLBACK PREPARED. Как правило, транзакции могут находиться в таком подготовленном состоянии очень непродолжительное время, однако ввиду проблем внешней доступности они могут сохранять такое состояние несколько дольше. Подготовленные транзакции с коротким временем жизни хранятся только в общей памяти и журнале WAL. Транзакции, которые проходят контрольные точки, записываются в каталог pg_twophase. Подготовленные транзакции можно просмотреть в представлении pg_prepared_xacts.