2016-05-08 1 views
0

質問は、スフィンクスリアルタイム(rt)インデックスに関連しています。 私は3つのrtインデックスを含む分散インデックスを持っています。各rtインデックスには、rtインデックス(約3 * 21 = 6300万)あたり約2,100万のドキュメントがあります。Sphinxリアルタイムインデックスはマルチスレッド検索をサポートしていますか?それらが分散インデックスの一部である場合はどうなりますか?

私はこのインデックス構成のパフォーマンスを改善しようと、この有益な記事に出くわしています:どのように多くのディスク

はこの瞬間のため、RTインデックスは、検索ごとに1つだけコア、無 関係を使用します。それはチャンクです(これは将来変わるかもしれません!)。

ソースhttp://sphinxsearch.com/blog/2014/02/12/rt_performance_basics/comment-page-1/(2014日付けのリンク)上記の文は、私が中3つのRTインデックスを持っているので、もしインデックスの上記の構成は、常に、検索ごとにシングルスレッド方式で動作することを

を意味しています4つのコアマシン上で分散インデックスを使用すると、3回の検索だけを同時に行うことができ、分散インデックスによって3つのコアに分散されます。

答えて

1

分散インデックスは、新しいスレッドで各成分インデックスを実行すべきであるが、各RT指数はねじ選抜します。

...そう、それはクエリ(コアあたり1 RTインデックス)を実行するために3つのコアを使用することができ

しかし、コアにスレッドのマッピングを注意は絶対ではありません。それはOSに依存します。 3つの「スレッド」は1つのコアで実行される可能性があります。 ...また、スフィンクスは、コアがあるだけの数のスレッドを実行することに制限されていません。これは、コアを競うスレッド数を増やす可能性があります。

+0

これは、rtインデックスが私のケースに適していないことを意味しますか?どのようにパフォーマンスを得ることができますか?今のところ、検索されていない(キャッシュされていない)キーワードを使用した各クエリは、レコード数を数えるだけで約10秒かかります。私は、記事によるとパフォーマンスの低下の原因となる可能性がある、約3000ラムチャンク/ RTインデックスを持って、私はその問題を修正しようとしています。しかし、これは私が3つの検索だけを並列化することができると仮定したり、あなたが誰も言わなかったと仮定して何かを変えます! *涙がこぼれ落ちる* – SagaciousLearner

+1

最初はカウント()を使用しないでください - それは非常に非効率的です!クエリを実行し、SHOW METAにあるレコードの数を取得することもできます。実際のドキュメントがなくてもカウントを取得したい場合は、LIMIT 0を使用します。 – barryhunter

関連する問題