[pgsql-jp: 37330] Re: popoolとシーケンスキー

Kiyoshi Mizuno kiyoshi_mizuno @ mail.toyota.co.jp
2006年 7月 4日 (火) 08:40:25 JST


水野%朝型 です。


pgpoolは使い込んでいないので、間違ってたらごめんなさい。

> -----Original Message-----
> Pgpool のレプリケーション動作で質問させてください

これはpgpoolというより、PosatgreSQL本体の仕様に影響されての事だと思っています。

例えば2台のマシンに”同時に”それぞれPostgreSQLをインストールしたとします。
この時PosatgreSQL自体の仕様として、これら2つのPostgreSQLインスタンスに
対して同一のSQL、例えばCREATE TABLEを同時に発行しても、
そのテーブルに同一のOIDが割り振られる保証はありませんし、
INSERT文を実行した時もレコードに同一OIDが付与される事は保証されていません。
#同時にインストールした場合、同期がずれるまではたいてい「たまたま同一になる」でしょうが。

またシーケンスに関しては、例えばトランザクション内部でシーケンスを取得したとき、
トランザクションがロールバックされてもシーケンスは一意を保証するため
インクリメントされたまま元の値に戻らないという性質があります。

そういった諸々のPosatgreSQL仕様があるため、pgpoolとしても
別インスタンス間で値の一致を保証できないオブジェクトに関しては
> たとえば乱数やトランザクションID,OID,SERIAL,シーケンス,
> CURRENT_TIMETSTAMPのようなものに関する問い合わせを
> レプリケーションすることはできません
という事になるのだと思います。




pgsql-jp メーリングリストの案内