1

サーバーには 16 個のコアがあり、それぞれに 450 万件の顧客注文があります。最近では、各コアに 1 時間あたり 200 件の新規注文をコミットし、すべてのコアを最適化しています。すべての最適化操作に少なくとも 30 分は必要であることがわかりました。いくつか質問があります:

  1. すべてのコミット後に最適化する必要がありますか? 日ごとに最適化すると、この状況でクエリのパフォーマンスが大幅に低下しますか?

  2. 新しい注文をsolrに追加するだけで、solrの注文を更新または削除することはありません. では、コミットしたインデックスのみを最適化できますか、つまり、日付範囲でインデックスを最適化できますか?

4

2 に答える 2

2

いいえ、コミットのたびに最適化しません。最適化する頻度は、更新の頻度によって異なります。

http://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerationsから

最適化するのではなく、急速に変化するインデックスがある場合は、単純に低いマージ ファクターを使用することをお勧めします。最適化には非常にコストがかかります。インデックスが常に変化している場合、わずかなパフォーマンスの向上は長続きしません。非静的インデックスの場合、多くの場合、トレードオフに見合う価値はありません。

「クエリのパフォーマンスが大幅に低下するか」という問題は、自分でテストする必要がありますが、測定、測定、測定します。次に、パフォーマンスが実際に問題であるかどうかを判断します。50 ミリ秒のクエリが 60 ミリ秒のクエリになると、応答時間が 20% 増加しますが、それは問題でしょうか? これらのトレードオフに答えられるのはあなただけです。ただし、数字が必要です。

于 2012-11-01T03:04:42.353 に答える
0

バッチでコミットし、間隔を置いて最適化する必要があります。最適化は、インデックス セグメントを組み合わせて単一のセグメントを形成し、パフォーマンスを向上させる非常に負荷の高い操作です。

ただし、最新の Lucene では、 Optimizeを使用する必要さえない場合があります。
最適化は最新バージョンで非推奨になりました:-

この方法は非常に非効率的であり、正当化されることはめったにないため、推奨されていません。Lucene のマルチセグメント検索のパフォーマンスは時間の経過とともに改善され、デフォルトの TieredMergePolicy は削除のあるセグメントをターゲットにするようになりました。

于 2012-11-01T04:15:52.717 に答える