[groonga-dev,04078] Re: io_flushが大量のメモリを確保する

Back to archive index

高見 直輝 takam****@orega*****
2016年 7月 13日 (水) 18:55:13 JST


高見です。

> > 実際に試してみました。
> > 1GBで新しいファイルが作られた時点でio_flushを実行したところ、テーブルが
> > 空のときと比較して、使用されるメモリの容量に違いは見られませんでした。
> > ※双方共に60MB程度。
> > ファイルの増加によるメモリ使用量の変更は、それほど大きくない(1つあたり、
> > 数十KB程度?)と考えて良いのでしょうか?
> 
> あれ、そうですか。「1GBで新しいファイルが作られた時点」とい
> うのはpgrn.XXX.1みたいなファイルができるくらいデータを入れた
> ということですよね?

その通りです。

> その状態だとファイルサイズと同等(1GB)くらいの仮想メモリー
> を使用する気がします。(実メモリーではなく仮想メモリーです。)
> 
> 実メモリーの話だけをしているのであれば、ファイルの増加による
> メモリー使用量の変更は、Groongaのテーブル・カラム(とくにイ
> ンデックスカラム)が増えることに比べればそれほど大きくない、
> というのはその通りです。

現状、問題になるのが実メモリーだけなので、レコード数による増加は考慮しな
くて良さそうです。

> >> 「Lexicon*」テーブルとそれらのテーブル内にあるカラムです。
> > 
> > 以下のもので全てでしょうか?
> > 1.Sources*
> > 2.Lexicon*_0
> > 3.Lexicon*_0._key
> > 4.Lexicon*_0.index
> 
> いえ、すべてではありません。
> 
> マルチカラムインデックスを使っている場合はLexicon*_1,
> Lexicon*_2, ...というようなものが増えます。
> 
> なお、2.と3.は同じものなので3.は考えなくてよいです。
> 
> たぶん使っていないとは思いますが、jsonb型を使っている場合は
> JSON*というテーブルが増えます。
> 
> > クエリの実行回数をなるべく少なくしたいのですが”_0”や”_key”、”index”
> > は固定値として処理してしまって大丈夫でしょうか?
> 
> マルチカラムインデックスを使っていないのであれば
> 
>   io_flush Lexicon*_0
> 
> だけでLexicon関連のテーブル・カラムはOKです。
> (--recursive yesはデフォルトなので明示的に指定しなくてもよいです。)
> 
> (新しくインデックスを作成した場合は
> 「io_flush --recursive no」も必要です。)
> 
> > あと、データベースに対するコマンド(--recursive no)は各オブジェクト毎に
> > 実行した方が良いのでしょうか?それとも最後に1回実行すれば良いのでしょう
> > か?
> 
> 最後に1回で十分です。

纏めると、
1.Sources*
2.Lexicon*_0
3.--recursive no
ということですね。

ありがとうございました。

----------------------------- 
高見 直輝 <takam****@orega*****>
株式会社オレガ
TEL:03-3267-0150
FAX:03-3267-0180




groonga-dev メーリングリストの案内
Back to archive index