2010年9月10日

[pgsql-jp: 40384] Re:サーバカーソル使用時のメモリ増加について

井上です。

(2010/09/09 17:29), toshihideka4316@xxxxx wrote:
> 片山です。お世話になります。
> サーバ、クライアント共にPostgreSQL ver8.2.4を使用しております。
> ODBC接続にてサーバカーソルでSQLを複数回発行すると、サーバのメモリを大
> 量に消費して困っております。
> (メモリ消費量約500MB、オープンクローズは正しく行っています)


Declare〜Fetchを使用するを選択しておられますか?
ODBCドライバのバージョンも8.2でしょうか?

もしそうなら新しいバージョン(最新は8.4.2)をお薦めします。
ODBCドライバのバージョンとサーバーのバージョンにはさほど密接
な関連はありません。基本的には新しいほどよいバージョンです。
上記の現象には少し心当たりがあり、改善されている可能性があり
ます。

> クライアントカーソルに変更することで、解決することはわかったのですが、
> サーバカーソルにて、SQLを大量に発行すると、サーバのメモリを大量に消費する
> メカニズムがわかりません。

Declare〜Fetchを使用するを選択している場合、ODBCドライバは
HOLDABLEカーソルを利用します。途中でコミットなどが発生して
も生きているのがHOLDABLEカーソルですが、実際にコミットが
発生した場合のサーバー側の処理は決してsmartとはいえず運が
悪いと大量のデータをサーバー側で保持することになります。

以前のドライバでは必要のない所でCOMMITを発生させている場合
があり、それがご指摘の現象につながっている可能性があります。

> ご存知でしたらご教授願えないでしょうか。
>
> 以上です。


投稿者 xml-rpc : 2010年9月10日 07:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/98264
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。