Перейти к основному содержимому

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

примечание

Эта страница переведена при помощи нейросети 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.