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

TAKATSUKA Haruka harukat @ postgresql.jp
2010年 9月 3日 (金) 18:10:53 JST


高塚と申します。

psqlODBC のバージョンは何でしょうか?

 [エラー時のロールバック発行:無し]
は、新しい psqlODBC の
 [Level of rollback on errors: Statement]
と、おそらく同じ意味かと思います。

エラーを起こしたときに、該当のSQL文だけロールバックできるように
したい場合に使います。Oracle のようにトランザクションの中でエラーを
起こしたSQLがあっても、それ以外の成功している処理については
コミットできるようになります。

# なお、PostgreSQL 8.4.x では SAVEPOINT 、RELEASE SAVEPOINT を繰り返し
# てもそれほどメモリは喰いません。


On Fri, 3 Sep 2010 17:10:17 +0900
<toshihideka4316 @ zenrin.co.jp> wrote:

> 「エラー時のロールバック発行」という項目があるのですが、これらの違いがわから
> ないので教えていただけないでしょうか。
> 
> 具体的に困っていること経緯については以下の通りです。
> 現在サーバ、クライアント共にPostgreSQL8.2.4を使用しており、ODBCドライバ
> (ver8.2.4)の設定項目「エラー時のロールバック発行」を「無し」を指定した場合、
> サーバのメモリ不足が発生しました。
> 原因調査を進める上でODBCドライバのログを見ましたところ、insert文ごとに
> savepointが発行されており、これがメモリ不足の原因であると考えています。
> 
> メモリ不足になるAP使用時におけるODBCドライバの設定項目「エラー時のロールバッ
> ク発行」を「全キャンセル」に変更したところ、以下のようにサーバメモリ使用量、
> 実行時間共に改善されました。
> ■サーバメモリ使用量
> 7.4:実メモリ450MB 仮想メモリ550MB
> ↓  ↓  ↓
> 7.4-1:実メモリ17MB 仮想メモリ150MB
> (大幅低下)
> 
> ■実行時間
> 7.4:22分8秒
> ↓  ↓  ↓
> 7.4-1:17分31秒
> (3割減少)
> 
> この結果により、このAPについてはODBCの設定項目(「エラー時のロールバック発
> 行」)を「全キャンセル」に設定することで解決しそうですが、全体的なパフォーマ
> ンス改善の為システム全体的に変更したいと考えています。
> しかし設定項目の「無し」と「全キャンセル」の違いがわからない為、システム全体
> の動作確認観点がつかめない状況です。(システム規模が大きい為全機能を動作検証
> するのは非常に困難な状況です)
> そこでODBCドライバの設定項目「エラー時のロールバック発行」における設定の違い
> について何か情報等ご存知でしたら教えていただけないでしょうか。
> 
> よろしくお願いいたします。
> 
> 片山 年秀


______________________________________________________________________
 日本PostgreSQLユーザ会  事務局 高塚   http://www.postgresql.jp 
 E-Mail:harukat @ postgresql.jp



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