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