2

200 万レコードの MySQL データベースがあります。私はすでに sphinx を使用してデータのインデックスを作成し、高速に検索しています。

私は2つのインデックスを持っています。毎日午前 3 時にローテーションされる 1 つの大きなインデックスと、増分変更のみを保持する小さなインデックス。30 分ごとにローテーションされ、データベース内の新しい行 (午前 3 時以降に挿入された行) のみにインデックスが付けられます。

すべてが良いです。検索が機能しています。しかし、私はいくつかの改善を探しています。毎日大きなデータベースのインデックスを再作成する必要はありません。情報がデータベースに挿入されると、情報は変更されないためです (挿入のみで、更新はありません)。したがって、大きなインデックスを再構築してもまったく役に立ちません。

このインデックスを年次または月次のインデックスに分割することはできますか? これにより、検索クエリが高速化されますか、それとも遅くなりますか? インデックスとデータ ソースを整理する方法の例はありますか? リアルタイム インデックスに切り替えた方がよいでしょうか。

4

1 に答える 1

0

マージ機能を使用できます

http://sphinxsearch.com/docs/current.html#index-merging

1 日 1 回、「デルタ」を「メイン」にマージします。マージ直後にカウンターテーブルを更新したいのですが、メインのデータが変わったので値が変わってしまいました。

(一般に、インデックスが多いほど、より多くの検索が影響を受けます。最終的に、多くの小さなインデックスを検索すると、節約できるよりも多くの作業が必要になります。 - 例外は、データの一部だけを検索できる場合です。たとえば、昨年のレコードを検索するだけのクエリは、最新のインデックスのみを検索するように微調整できます. これは、すべてのレコードを検索して多くを破棄するよりも効率的です.)

于 2012-12-01T21:07:37.880 に答える