[pgsql-jp: 41204] Re: 一時テーブルに関して

test test2011y @ kotanikogyo.co.jp
2012年 8月 30日 (木) 14:23:39 JST


石井様

コメント有難うございました。
残念ながら今のところpgpool-II環境下で一時テーブルを使用する案件
はありませんが、チャンスがあればいずれ使用してみたいと思います。

-----Original Message----- 
From: Tatsuo Ishii 
Sent: Friday, August 10, 2012 8:46 AM 
To: pgsql-jp @ ml.postgresql.jp ; kasahara.tatsuhito @ gmail.com 
Subject: [pgsql-jp: 41183] Re: 一時テーブルに関して 

石井です。

> 笠原と申します。
> 
>> 解決策としては、テーブルの作成と削除を明示的に行ない、
>> 1つの関数内など短期間で使用するぶんにはなんら問題は
>> 無いように思うのですが、間違っているでしょうか。
> いえ、そのような用途であれば、一時テーブルを使う上で問題は無いと思います。
> 
> ただ、過去のPostgreSQLのバージョン(8.3より前)では、例えばPL/pgSQLで作成した
> 関数内での一時テーブルの使用がうまく行かないといった問題もありました。
> # 上記は、厳密に言えば PL/pgSQLの仕様の影響ですが・・・
> PL/pgSQLで作成された関数がキャッシュされる関係で、複数回関数を実施した際、
> 2回目の実施時に既に存在しない一時テーブルを処理対象にしてしまいエラーとなる
> 問題がありました。
> http://wiki.postgresql.org/wiki/FAQ/ja
> 
>> 試してはいないのですが、pgpool-IIなどでコネクションプール
>> を利用しているときは、ユーザー側でコネクションの制御が
>> 難しくなるのでそのあたりが関係するのかなと思っています。
> 確かに、コネクションプールのような形態ですと、うっかり一時テーブルが
> 残存していたり、などの問題が発生しやすくなると思います。

皆さんご存知とは思いますが、一応念の為。

pgpool-IIに関して言えば、DISCARD ALLが実装されているPostgreSQL 8.3以降
と組み合わせて使用するのであれば、pgpool-IIがユーザのセッション終了時に
DISCARD ALLを発行して一時テーブルなどを消去するため、一時テーブルが残存
するなどの問題は起きないはずです。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp


pgsql-jp メーリングリストの案内