[pgsql-jp: 40365] Re: ODBCドライバの設定についてわかりません

Hiroshi Inoue inoue @ tpf.co.jp
2010年 9月 3日 (金) 22:27:55 JST


井上です。

(2010/09/03 17:10), toshihideka4316 @ zenrin.co.jp wrote:
> こんにちは。片山と申します。
> 
> 「エラー時のロールバック発行」という項目があるのですが、これらの違いがわから
> ないので教えていただけないでしょうか。
> 
> 具体的に困っていること経緯については以下の通りです。
> 現在サーバ、クライアント共にPostgreSQL8.2.4を使用しており、ODBCドライバ
> (ver8.2.4)の設定項目「エラー時のロールバック発行」を「無し」を指定した場合、
> サーバのメモリ不足が発生しました。
> 原因調査を進める上でODBCドライバのログを見ましたところ、insert文ごとに
> savepointが発行されており、これがメモリ不足の原因であると考えています。

これは「無し」で想定されている動作でなく「文単位]のロールバックの動作
です。もしかしたらデフォルトの動作と混同されているのではないでしょうか?
デフォルトの動作はサーバーバージョンが7.4なら全キャンセル、それ以後なら
「文単位」のロールバックとなります。

エラー時のロールバック発行のオプションの違いは次のとおりです。

無し:自動的なロールバックは行わず、ロールバックの処理はユーザーに任さ
れます。
文単位:当該のステートメントを自動的にロールバックします。当該トランザ
クションのそれ以前のステートメントの実行結果は有効なまま残ります。エラ
ーの種類などによって更に全キャンセルをするかどうかはユーザーの判断に任
されます。
全キャンセル:当該トランザクションを自動的にキャンセルします。


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