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

Tatsuo Ishii ishii @ sraoss.co.jp
2006年 7月 4日 (火) 10:11:04 JST


石井です.

> xeon-koyamaです。
> 
> Pgpool のレプリケーション動作で質問させてください
> 
> 
> >レプリケーションについて
> 
> >同じ問い合わせを送っても異なる結果を返すようなデータ,
> >たとえば乱数やトランザクションID,OID,SERIAL,シーケンス,
> >CURRENT_TIMETSTAMPのようなものに関する問い合わせを
> >レプリケーションすることはできません
> >(正確には,同じ値でレプリケーションされる保証がありません)
> >SERIALやシーケンスに関しては,関連テーブルをロックする
> >ことによって回避することもできます.
> 
> という説明がありますが、例えば
> 
> CREATE SEQUENCE seq1;
> 
> CREATE TABLE tb1 (
>   col_1 INTEGER NOT NULL DEFAULT nextval('seq1') PRIMARY KEY,
>   col_2 VARCHAR(10)
> );
> 
> の場合、常に INSERT 文を 
> 
> INSERT INTO tb1(col_2) VALUES('AAAA');
> 
> の利用に限定した場合(シーケンスでキーを作成させる)
> 
> 以下のレプリケーションの構成で、キーがずれる事がありますか?
> ※データ参照は、常に Postgres1 で行うので、負荷分散は利用しない
> 
> CLIENT -------- pgpool  --------------  DB1
>                         --------------  DB2
> 
> 私の考えだと、pgpoolにINSERT 文が入った場合、
> 
> 指令1--> INSERT INTO tb1(col_2) VALUES('AAA');  9:50分
> 指令2-->  INSERT INTO tb1(col_2) VALUES('BBB');  9:51分
> 指令3-->  INSERT INTO tb1(col_2) VALUES('CCC'): 9:52分
> 
> 指令1から3までが順番にDB1,DB2 それぞれに対して行われれば、
> 必ずキーは一致すると思っておりますが、
> PGPOOLの場合、DB1への入力は順番通りにINSERT を行い、
> DB2への入力は、順不同でおこなわれた場合、キーがずれる事になります。
> 
> PGPOOLの冒頭での説明は、これを言っているのでしょうか?

同時セッションが一つに限定されるならば,シーケンス値のずれは発生しませ
ん.

READMEは同時セッションが2つ以上の場合を問題にしています.
--
Tatsuo Ishii
SRA OSS, Inc. Japan



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