[pgcluster: 43] Re: PGCluster-1.0.6b公開

Wataru Oguro oguro @ zenrin-datacom.net
2004年 1月 21日 (水) 22:39:36 JST


oguroです。

お世話になっております。

本格的に検証を開始するのは明日ですが、ちょっと使用してみた感じの感想
(?)をお伝えします。
まず、大量のトランザクション処理中にレプリケーションサーバのセッションで
解除不可能なデッドロックが発生していた件ですが、全くと言っていいほど発生
しなくなっていました。

ですが、BEGIN〜LOCK TABLEの間にSELECT文が入ると、解除不可能なデッドロッ
クが発生するようです。

具体的には、、、
-----
begin;
select count(*) from test;
lock table test;
insert into test values('123');
commit;
-----
というSQLを、2台のクラスタサーバに同時に発行します。

トランザクションの量には関係なく、2台あるクラスタサーバのそれぞれに対し
て同時にSQLを発行するとかなり高い確率で発生するようです。(弊社では 100%)

SELECT文はレプリケーションしない関係上、仮想キューへ入ることがないと思い
ますが、
それが影響して、キューに入る順番が変化してしまったりしているのでしょうか
ねぇ・・・・

ちなみに、BEGIN;のすぐ後にLOCK TABLE;を持ってくると、なんだかうまくいき
ます。。。
具体的には、、、
-----
begin;
lock table test;
insert into test values('123');
select count(*) from test;
commit;
-----
な感じです。

検証結果は後日報告したいと思います。

mitani wrote:

>三谷@広島です.
>
>トランザクション処理についても仮想キューを実装してみました.
>PGCluster-1.0.6bとして開発サイトに公開しましたので,お試しください.
>http://hiroshima.sraw.co.jp/people/mitani/jpug/pgcluster/current/download.html
>
>尚,regression testは以下の2点が通っていません.
>・シーケンスデータのINSERTを失敗するクエリー実行直後,currvalで得られる
>の値が古い.
>・更新処理を複数行う関数を指定したトリガーで,実行が失敗するクエリーを実
>行するとトリガーの処理は全て失敗する.
>
>また,PGClusterでは時刻同期をレプリケーションサーバから行っているため,
>タイムゾーンを環境変数で渡すテストでは時刻がずれてしまいます.
>regression testを行う場合は,レプリケーションサーバで
>
>$ PGTZ='PST8PDT7,M04.01.0,M10.05.03'; export PGTZ
>
>と環境変数を設定しておいてください.
>
>引き続き,頂いたパッチの検討やバグフィックスを行いますので,
>バグレポートや要望等,よろしくお願いします.
>
>=============================
>三谷 篤<mitani @ sraw.co.jp>
>=============================
>  
>




pgcluster メーリングリストの案内