[pgsql-jp: 38899] Re: 大量のデータの登録時に、メモリ不足エラー

ITAGAKI Takahiro itagaki.takahiro @ oss.ntt.co.jp
2007年 10月 26日 (金) 17:45:59 JST


板垣です。

"笹倉 雅和" <sasakura @ technicalunion.co.jp> wrote:

> 問題になっているトランザクションでは、
> テーブルAに登録されているデータを元に、テーブルBに追加、または更新を
> 行い、テーブルAの処理済みレコードのフラグ操作(更新)を行っています。
> エラーは、UPDATEを実行した時の結果としてかえってきていて、

> 2007-10-25 15:52:39 ERROR:  out of memory
> 2007-10-25 15:52:39 DETAIL:  Failed on request of size 720400.

1つのトランザクションの中で、行数ぶんだけSQLを繰り返し発行するような
パターンでしょうか?  ループを組んでいるのならば、その中でメモリリークが
発生しているのかもしれません。例えば、Prepared Statement を
何度も作ってしまうような場合です。
該当部分のSQLやプログラムを見せてもらうことはできますか?


> 2007-10-25 15:52:39 PANIC:  ERRORDATA_STACK_SIZE exceeded
> このログを見てみると、スタックが不足しているという事なのでしょうか?

これは、副次的なものなので、とりあえず気にしないでください。
「メモリ確保に失敗」というエラーを処理するために、
新たなメモリを確保しようとし、再び失敗することが繰り返されたのだと思います。
Postgres のバグですが、レアケースなので、きちんと修正されるかはわかりません。




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