[Ludia-users 157] データ投入時にメモリ確保エラー

Back to archive index

sakamoto sakam****@ma*****
2007年 12月 18日 (火) 14:01:31 JST


こんにちは、坂本です。

Windows上で、次のようなシーケンスで大量にデータ投入を行っています。
(Ludia1.2+senna1.0.8)

1.全文検索インデックス1個を持った表1へデータを順次投入します。
2.インデックスサイズが約512MB近くになると、表1への
  データ投入を終了し、同一の構造を持った表2を作成し、
  表2へデータ投入を続けます。
3.表2もインデックスサイズが約512MB近くになると、次に
  表3を作成し、表3へデータ投入を続けます。
4.このように1表の(1インデックスサイズ)をある程度抑えて、
  順次表を追加していく形で大量データの投入を試みています。

※1インデックスが2GBを超えると、メモリ確保できずにエラーと
 なる件がありましたが、それを回避するために表を分割しています。
 また、1インデックスが1GBを超えると更新時の性能が出ない
 こともあり、切り替えの設定を低めにしています。

本処理を実行し続けると、途中で、エラーで落ちます。
実際のSQLシーケンスとしては、
  BEGIN → INSERT (100件程度)→ COMMIT
を繰り返しています。

Ludiaログの内容は、次の通りです。

2007-10-24 04:40:42 LOG:  pgsenna2: |A| malloc fail (76836502)=00000000 
(..\lib\inv.c:922) <9617>
2007-10-24 04:40:42 ERROR:  pgsenna2: sen_index_upd failed while do_insert 
(1)
2007-10-24 04:40:42 STATEMENT:  INSERT INTO T_CSV_000012 (SMGSEQ, PAGENO, 
DATA) VALUES(502724, 1, '

Ludia1.3.1でメモリの解放に関する修正を行ったということで、
これも確認しましたが、同じ場所で、同様に落ちます。

2007-10-27 14:09:12 LOG:  pgsenna2: |A| malloc fail (76836502)=00000000 
(..\lib\inv.c:922) <9619>
2007-10-27 14:09:12 ERROR:  pgsenna2: sen_index_update failed 1,0
2007-10-27 14:09:12 STATEMENT:  INSERT INTO T_CSV_000012 (SMGSEQ, PAGENO, 
DATA) VALUES(502724, 1, '

少なくとも、COMMIT時にメモリも解放されて問題なく動作すると
考えているのですが、1APから実行することによる弊害があるのでしょうか。
合計は2GBを優に超えています。

ちなみに、エラー後、以降の処理を再実行すると正常に格納されます。

何か考えらること、良い対応方法は無いでしょうか。 




Ludia-users メーリングリストの案内
Back to archive index