web-dev-qa-db-ja.com

WebServer応答のチューニング-

StackOverflowでこの同じ質問があります。詳細については、ここで質問することをお勧めします。ここに質問があります:

私はむしろ不利な状況にあります。私はaspdotneststoreフロントeコマースアプリケーションとVibeTribと呼ばれる検索アドオンを持っています。私はそれらの両方のソースコードを持っていません。 StoreFrontおよびVibeTribで実行されるストアには、約25万の製品があります。また、多くのフィルターがあります。私はViTribの担当者と話をしましたが、彼らは使用するクエリを最適化するために余分なお金が必要です。彼らが必要とするお金は大したことではありませんが、問題は私がもう彼らを信用していないことです。私たちが得たものは大きく異なり、その後、WHAが宣伝されています。

長い話を短くする。現在Amazon AWSでストアを実行していますが、設定したDB(MsSQL 2012)サーバーに関係なく(32GB RAMモンスターインスタンスを試しました)遅いです。 Ajax検索は全文検索を使用し、検索キーワードを比較的高速に表示しますが、検索を実行すると(すべての結果を表示するため)まだ低速です。!!!

自分で速度を加速するためにできることはありますか? EC2インスタンス(WebサーバーServer 2012およびIIS 8)を完全に制御できます。 IISを設定して検索にステップインし、その一部をキャッシュできますか?私は少なくともいくつかの最も一般的な単語をキャッシュしたいと思っていました。

私の最善の策はIIS 8です:)

私の場合、何か助けはありますか?

ありがとう

1

根本的に、これはほぼ確実にデータベースの問題です。最初に確認するのは、テーブルのインデックスです。全文検索が高速でSELECTが遅い場合、実行される可能性が最も高いJOINSがあり、インデックス、場合によっては複合インデックスの恩恵を受ける可能性があります。

アプリケーションのプロファイルを作成し( SQLプロファイラー を使用してトレースを実行し)、クエリのDuration値を監視する必要があります。 クエリ実行プランを表示する でも可能です。この方法で調整する利点は、アプリケーションソースにアクセスする必要がないことです。データベースにインデックスを追加するだけです。適切なインデックス付けは、大規模なデータセットですべての違いを生みます。

3
dartonw

DBを最適化する手順を実行できます。たとえば、フルテキストインデックスフィールドを使用して、SQL検索クエリの応答時間を大幅に増やすことができます(特に、中〜大規模なテキストが含まれる場合)。

それを超えて、あなたは問題が何であるかを見る必要があります。ソースコードにアクセスすることは難しいですが、速度がひどく遅い場合、おそらく非常に効率的なコードではないようです。小さなデータをグループ化するのではなく、数百または数千の個別のDBクエリを作成する場合があります。ソースコードを変更する能力がない場合は、これを変更することはできません。

したがって、DB構造を調べて、完全にインデックスが付けられているなどを確認することから始めてください。それでも遅すぎる場合は、ソースコードにアクセスして、ソフトウェアを自分で変更するか、別の製品を見つける必要があります。

これがお役に立てば幸いです。

インデックスリンク:

公式ドキュメント

MySQLパフォーマンスブログ

MySQL最適化

追伸SQL検索は非常に高速です。したがって、IISキャッシュ結果を取得しようとしても、必ずしも生産性が高いとは限りません。適切にインデックス付けされたデータベースがある場合、各クエリへの応答にかかる時間ではなく、クエリの数が原因である可能性があります。コードによって作成される新しいクエリには、接続の確立時間、読み取り/書き込みアクションなどのオーバーヘッドがあることに注意してください。

2
Marvin