[pgsql-jp: 38080] Re: コミット待ちトランザクションのメモリ消費量について

Kiyoshi Mizuno kiyoshi_mizuno @ mail.toyota.co.jp
2007年 2月 27日 (火) 08:29:16 JST


水野です。

> -----Original Message-----
> 【経緯】
> バッチ処理で大量のデータを処理する必要があるのですが、
> その際に「ある程度の件数を処理したらコミットを切る」
> という話になりました。
> 今までも1000件単位だとかでコミット切るプログラムを
> 組んできた経験はあったのですが、
> 果たして「1000件単位」とはどれくらい妥当なのかが気になりました。

DBではなく、ファイル転送ですが私も似たプログラムを書いた事があります。
このような処理において何件が適正値かは、扱うデータの件数や処理時間、
処理が中断してリトライになった時の影響等からケースバイケースで
決めるしかないと思います。
以上経験談。


> また、件数で制約を設けると処理の途中で終わってしまう可能性を
> 考慮しリカバリ可能なテーブル設計に修正する必要が出てくるので、
> 思惑としては全件処理後にコミットを切りたいところです。

以下、個人的な好き嫌いになります。
こういうのはテーブル設計よりもデータを更新するアプリケーション側で
対応するのが王道だと思います。
そして処理途中で異常終了するのがシステムにとって致命的(≒回復不能)
というのなら、多少重くても1トランザクションで処理するのが筋だろうと
いう事ではないでしょうか。




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