[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 メーリングリストの案内