[groonga-dev,01270] groongaの高速化について

アーカイブの一覧に戻る

磯部 和広 k-iso****@rozet*****
2013年 3月 29日 (金) 16:57:38 JST


いつもお世話になっております。

自分は、groongaをMySQL経由でmroongaとして使っています。

MySQLの場合、様々な高速化の手段がありますが、
特に検索主体のテーブルの高速化に、下記の技法があります。
 1. ストレージエンジンをMyISAMにする。
 2. キーをメモリバッファに登録する。
 3. 必要であれば、実データをOSキャッシュに乗せる

groongaの場合、どんなに大きなDBでも、マシンの再起動時には
メモリに乗っていないですよね。

このため、検索の動きが
 a. リクエストを受ける
 b. 必要な(転置インデックス等の)データをメモリにロードする
 c. 検索処理を行う
という形になると思っています。

最近はマシンのメモリが安く、手軽に32GBメモリのマシンが構築できます。

groonga側で、何らかの手段で
 検索の為のインデックスデータを全てメモリに乗せる
という事が出来れば
 上記のc.だけとなる
ので、かなり高速になると思います。

現在は、
 groongaのデータをRAM-Disk上に置き、ロード処理を高速にする
という手法で逃げていますが
 RAM-Diskはメモリの半分
という制約がありますし、ロード待ちの時間が最小にはなりますが
それでも
 遅い。もっと速くならないか
と言われていまして・・・

併せまして、
 mroongaのインデックスを再作成等した場合
 全てのインデックスなどのデータがメモリ上に存在しているのか
についてもお答え頂ければ幸いです。

勿論、groongaのデータがメモリに乗るサイズでの話ですが。

もしも
 現在、groongaのインデックス情報を全てメモリに乗せる方法は無い
 が、mroongaでindexを作成すれば、作成過程でメモリに乗る
という事であれば、最悪、再起動時にそのオペレーションをするしか・・・
と思いまして。




groonga-dev メーリングリストの案内
アーカイブの一覧に戻る