Postgresで2相コミットをする際、
デフォルトの設定で、prepared transactionは、5件しか設定されていません。
すなわち、大規模なDBになると、ロールバックが発生した際に
5件しかロールバックされません。
postgresの設定を変更することで、5件以上トランザクションを格納できるようになります。
/var/lib/pgsql/data/postgresql.conf
の 「max_prepared_transaction」 の数値を増やせば
それ以上prepared transactionにトランザクションを格納できます。
# service postgresql restart
を忘れずに行ってください。
max_prepared_transactionの値ですが、値によってはかなりメモリを使用するようなので、
追々設定周りのチューニングが必要かもしれません。