[Senna-dev 661] Re: インデックスをキャッシュに保持する方法について

Back to archive index

morit****@razil***** morit****@razil*****
2007年 8月 15日 (水) 14:48:18 JST


お世話になっております。森です。

すみません。INITIAL_N_SEGMENTSは主に更新速度の向上に寄与しますが、
検索速度にはあまり影響しないかもしれません。

ディスクI/Oがネックで検索速度が出ないのは、起動直後が特に顕著で、
必要な領域が適度にOSのキャッシュに載るに従って徐々に検索が高速になります。

起動前にインデックスファイルを以下のようにして読ませてしまうと効果があります。

 cat *.SEN* > /dev/null

これでインデックスファイルがOSのキャッシュに載るので、
起動直後でも、もたつかないと思います。

もし、インデックスファイルの総サイズがOSのキャッシュサイズよりも大きくなる場合は、
以下の優先順位でメモリに載せるようにしてください。

 1. *.SEN.l
 2. *.SEN
 3. *.SEN.i
 4. *.SEN.i.c

大量の文書を登録すると最終的には.i.cファイルが一番大きくなりますが、
これがメモリに載っていなくても、それなりの速度では検索できます。

>>> 山?u 雄介 さんは書きました:
> お世話になっております。山崎です。
> 返事が遅くなり申し訳ありません。
>    
>   教えて頂いたインデックスをキャッシュにのせる方法について
>   試した結果を報告します。
>    
>    
>   >キャッシュを大きくしたい場合には
> >initial_n_segmentsパラメータを大きくするとよいと思います。
> 
>   /var/senna/senna.confファイルにINITIAL_N_SEGMENTS 2048と入力して
> 検索を試してみましたが、検索は速くなりませんでした。
>    
>   
> >MySQLのデータディレクトリからリンクをはって、
> >インデックスファイルをtmpfsに置くというのを思いついてみました…
> 
>   インデックスファイルをtmpfsに置くと、まさにインデックスがキャッシュに
>   展開されており、MySQLデータディレクトリからのリンクでもインデックスの
>   参照・更新ともに問題ないようなので使えるかと思ったのですが、
> tmpfs上のファイルはOSをリブートすると消えてしまうため、
>   OSをリブートした後にインデックスを再作成し、tmpfsに再配置しないといけなくなり、運用項目が増えるので今回は使用しませんでした。
>    
>   
> 結局、今回はテーブル定義を見直して検索用と更新用のテーブルを作成することで、
> 検索速度を上げることができました。
> テーブル定義見直しに伴ってソースに手を加える前に使用可能なメモリがあったので
>   メモリを使ってなんとかしたいと思っていたのですが。。
>    
>   tmpfsを使う方法なんて思いつきませんでした。
> tmpfsを使うという方法は場合によっては使えそうなので、
> 次の機会に試してみたいと思います。
>    
>   ご回答ありがとうございました。
>    
>   Tasuku SUENAGA <a****@razil*****> wrote:
>   末永です。
> 
> sennaのインデックスを全てキャッシュに展開して保持する機能はありません。
> OSのキャッシュまかせです。
> 
> キャッシュを大きくしたい場合には
> initial_n_segmentsパラメータを大きくするとよいと思います。
> 検索時にはI/Oが局所化されているので、
> インデックスの一部がキャッシュ外でもそれほど検索が遅くはならないと
> 考えます。
> 
> MySQLのデータディレクトリからリンクをはって、
> インデックスファイルをtmpfsに置くというのを思いついてみました…
> 
> 山?u 雄介 さんは書きました:
> > はじめまして。山崎と申します。
> > 
> > Linux上でtritonn-1.0.2.mysql-5.0.41.senna-1.0.5を使用しています。
> > 
> > sennaのインデックスを全てキャッシュに展開して保持することにより
> > 検索の高速化を図りたいのですが、そのようなことは可能でしょうか。
> > 
> > sennaのインデックスを使用した検索を行うことにより、
> > キャッシュにインデックスが蓄積されていくものだと考えていたのですが、
> > 検索中にキャッシュの使用量を確認していたところ、
> > 減っていることがありキャッシュに蓄積されていないことがわかりました。
> > 
> > キャッシュの使用量はfreeコマンドで●の箇所を確認しました。
> > total used free shared buffers cached
> > Mem: 2073288 2056760 16528 0 4604 1883516
> > -/+ buffers/cache: ●168640 1904648
> > Swap: 2048276 208 2048068
> > (単位:KB)
> > 
> > OSのメモリは使用可能領域が十分にあるので、
> > OSによりメモリが開放されているわけではないようです。
> > 
> > sennaのインデックスを全てキャッシュに展開して保持する方法を教えてください。
> > 
> > よろしくお願い致します。
> ---
> Tasuku SUENAGA 
> 
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> 
>  
> 
>  
> ---------------------------------
> Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar

> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev

--
morita




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