[pgcluster: 695] Re: 1.3.0bと1.1.0c リリース

Tatsuo Ishii t-ishii @ sra.co.jp
2005年 2月 26日 (土) 23:53:58 JST


石井です.

> 三谷@広島です.
> 
> > # pgpoolを接続プーリング以外の目的で利用した事は無いですが、serialとかnow()
> > # とかって仕組み的にレプリケーションできないんでしょうね・・・。
> 石井さんがその気になれば,勿論できるようになります(^^)/

serialについては色々あがいてみたんですが,エレガントな方法が思い付かな
くて...

最近試して挫折したのは以下のようなアイデアです.

1) sequencelをgenerateするシステム関数をぱくって,ユーザ定義関数を作る.
   その中では,shared lockではなく,execlusive lockをかけるようになっ
   ているので,sequence値がマスタとセカンダリで一致しなくなる問題は避
   けられる.

2) その関数をpgpool用のスキーマを作った上で登録し,search pathで優先順
   位を上げておく

3) sequenceとかserialを使うとその関数が呼ばれて,うまく処理してくれる.

exclusive lockになるので,同時実行性は多少犠牲になりますが,アプリケー
ションの変更がいらないので良いアイデアかなと思ったのですが,一つ抜けが
ありました.明示的なトランザクションを開始していないと駄目なんです.

そんなことする位なら,アプリケーションで明示的にトランザクションを開始
し,かつテーブルロックを併用すれば,1)や2)のような小細工は要りません.

うーん,私の頭ではこの程度のアイデアしか出てこない...
--
Tatsuo Ishii



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