[pgsql-jp: 37329] popoolとシーケンスキー
koyama
mlus @ hintmark.com
2006年 7月 4日 (火) 02:47:06 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の冒頭での説明は、これを言っているのでしょうか?
ご存じの方がいらっしゃいましたら、ご返答宜しくお願いします。
pgsql-jp メーリングリストの案内