従来のアプリケーションのパフォーマンスの問題をトラブルシューティングしていますが、かなり特殊な問題がある可能性があります。実行中の多数の(!)小規模クエリの影響
本質的に、アプリケーションはオブジェクト・リレーショナル・マッパーを使用してデータをフェッチしていますが、非常に非効率的/誤った方法でそうしています。実際には、UIのデータグリッドを埋めるために一連のエンティティグラフのフェッチを実行しており、グリッド(ASP.Net Webforms)をバインドして追加フェッチを行い、他のフェッチなどにつながります。
これは、多数の非常に多くのクエリが実行されているという効果があります。 SQLプロファイラを使用すると、特定のページが10,000回以上のクエリを実行することが示されます(1つのグリッドを埋めるために10ミリ秒以上の時間がかかりません)、プロファイラではほとんどのクエリが0ミリ秒として登録されます。クエリは、(httpリクエストごとの)シングルスレッドとなり
私はORMと非常によく知って、問題を解決する方法を正確に知っている
私の質問は:。。多くを持っていることの正確な効果は何ですか、多くの小さなクエリがアプリケーション内で実行されていますか?システムのさまざまなコンポーネントにどのような影響を及ぼすのですか?
たとえば、WebサーバーのCPUとメモリに与える影響は?接続プールを氾濫させ、ブロックを引き起こしますか?データベースサーバのメモリ、CPU、I/Oに与える影響は?
私は比較的一般的な回答を探しています。主に影響を受ける可能性が高い領域を監視したいからです(私は測定=>修正=>再測定が必要です)。ピーク時にシステムを同時に使用すると、100〜200人程度のユーザーになる可能性があります。
キャッシュの実装を検討しましたか?データが頻繁に変更されない場合は、ビュー/テーブル全体をキャッシュして、すべての個々のクエリを保存することができます。 –
@ Yzmir - ありがとう、しかし、私は実際に問題の解決策を探していません(私はそれを持っています)。 –