PostgreSQL日記

アクセスカウンタ

zoom RSS pgpool-II: master/slaveモードでの一時テーブル問題解決

<<   作成日時 : 2009/11/03 20:32   >>

ブログ気持玉 0 / トラックバック 2 / コメント 1

以前のエントリにも書いた、pgpool-IIのmaster/slaveモードで一時テーブルが使えない件ですが、解決しました。

問題になっていたのは、CREATE TEMP TABLEはmasterだけにしか発行されないのに、PARSEはすべてのバックエンドノードに送られるという点です。

これは、負荷分散を考慮して、すべてのノードでEXECUTEできるようにしているためです。それが仇になって、一時テーブル作られていないmaster以外のノードではエラーになってしまいます。

そこで、PARSEでは、INSERT/DELETE/UPDATEが対象にするテーブルが一時テーブルかどうかを判定し、一時テーブルならばmasterのみにPARSEを送るようにしました。

ちなみに、一時テーブルかどうかを調べるのはPostgreSQL 8.4以降では簡単で、pg_classにずばりその情報があるのですが、それ以前では少しやっかいで、テーブルスペースが"pg_temp"で始まる名前かどうか調べる、ということになります。

ただし、SELECTはちょっと難しいのです。というのは、SELECTはいくらでも入れ子にSELECTを組み込んだり、複雑ですから、簡単に一時テーブルが使われていることを調べることはできません。そこで、/*NO LOAD BALANCE*/というコメントがあったらmasterだけでPARSEを実行する、という苦肉の策を取ることにしました。このあたりは、8.4のパーサを取り込んだ次期メジャーバージョンアップではコメント不要で対応できる予定です。

ところで、今回のこの修正は、海外のあるお客さんからの依頼で行っています。わたしも霞を食べて生きているわけではないので、こういった資金援助があると、正直非常に助かります。これでpgpool-IIの改良を加速できます。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(2件)

タイトル (本文) ブログ名/日時
プラダ メンズ
pgpool-II: master/slaveモードでの一時テーブル問題解決 PostgreSQL日記/ウェブリブログ ...続きを見る
プラダ メンズ
2013/07/07 15:54
エアマックス 95
pgpool-II: master/slaveモードでの一時テーブル問題解決 PostgreSQL日記/ウェブリブログ ...続きを見る
エアマックス 95
2013/07/09 18:32

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
In complete contrast to competitors such as H which used the plussize model to promote their new swimwear series; Forever 21, which has its own plus size section; and American Eagle, which carries up for you to size XXL for females; A seems to end up being going backwards. http://www.rockspringstexas.net/ 特定のスーリヤ缶は、晴れやかな理由です.スーリヤは、中断したところ見つけることができますコーチ アウトレット 青く光るまたは遠灰色で滑
JosephFuff
2014/07/23 15:33

コメントする help

ニックネーム
本 文
pgpool-II: master/slaveモードでの一時テーブル問題解決 PostgreSQL日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる