[Ludia-users 125] Re: 形態素インデックスで投入に1秒以上かかります

Back to archive index

Shunsuke Tanaka tanak****@nttda*****
2007年 10月 29日 (月) 15:24:51 JST


田中です。

> こちらでも、
> > ludia 1.2.0
> > Senna 1.0.9
> > mecab 0.96
> > mecab-ipadic 2.7.0 20070801
> EUC-JP
> ludia.initial_n_segments = 2048
> shared_buffers = 512MB
> 200Kbyte 10万レコード
> のインデックス構築(copyした後、create index)を行ってみましたが、
> 状況は再現できませんでした。
> ludia1.3.1も同様でした。

試してみてくださり、誠にありがとうございます。
shared_buffers = 512MB にしてみるのと、Linuxカーネルを新しいものにしてみ
るのを、トライしてみたいと思います。
 
> > LOG:  pgsenna2: |A| malloc fail (139096976)=(nil) (inv.c:934) <12770>
> > ERROR:  pgsenna2: sen_index_upd failed while do_insert (1)
> エラー内容はmallocに失敗しましたというものです。
> 原因として、1プロセスの使用メモリの制限(32bitマシンの場合2Gbyte)を
> 超えてmallocを試みたという事が考えられます。
> インデックス構築中のメモリ使用量はどのようになっていますか?

一番多くメモリを使っているプロセスは、
postgres: postgres ludiatestdb [local] INSERT
というプロセスで、900Mbyteくらい使っています
(psコマンドの出力のVSZが900MbyteくらでRSSも900Mbyteくらいでした)。
2Gbyteまでは行っていません。
 
> また、postgresql.confのshared_buffersの値はいくつにしていますか?
> この値とSennaのメモリ使用量の合計が2Gを超えると、
> 上記のエラーが出る可能性があります。

postgresql.confのshared_buffersは、デフォルトのままで、24MBです。
一番多くメモリを使っているプロセスのメモリ使用量と足しても2Gは超えません。
 
> インデックスサイズが非常に大きい場合(数GByte)は、
> パーティショニングを行うと、インデックス構築の時間短縮になります。
> http://www.postgresql.jp/document/pg825doc/html/ddl-partitioning.html
> この方法も試してみたらいかがでしょうか。

情報提供ありがとうございます。
1つのテーブルではどうやっても無理という結果になりましたら、
パーティショニングを試してみたいと思います。




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