今日、私は MSN グループの友人たちと ASP.net プログラムのパフォーマンスの最適化について話していました。
次に、最適化方法を要約しましょう。
1. データベースの最適化(テーブル構造の最適化、インデックスの最適化、SQL ステートメントの最適化、ストアド プロシージャの最適化など)
2. ViewStateの最適化
3. キャッシュを使用する
4. 静的ページを生成します (主に、あまり対話的ではない情報公開システムのフロントエンド用)
5. フロントエンド IIS/Apache を使用して、静的ページ、画像、js ファイルのリクエストを処理します。
6. 最適化アルゴリズム
7.
パフォーマンス チューニングに関しては、ほぼすべての専門家のアドバイスが「正確なパフォーマンス測定がない場合は、パフォーマンス チューニングを実行しないでください」です。ベンチマーク パフォーマンス テストを行わないチューニングには、基本的に、システム コードが乱雑になる以外の利点はありません。アルゴリズムを 0.1 秒から 0.01 秒に改善するために努力して得た効果は、多くの場合、不適切な select ステートメントによって失われます。
したがって、これまでの方法は万能薬ではありません。チューニングするには、まずシステムのどこが遅いのかを理解する必要があります。決して急いで医師の診察を受けないでください。以下の内容は私の個人的な仕事上の経験に基づいたものであり、すべてのシステムに適用できるわけではありません。覚えておいてください。 ! ! !
これら 4 つのチューニング方法を分析してみましょう。
OA/ビジネス管理システム タイプのアプリケーションの場合、データベースの最適化は、いくつかの理由から重要なポイントとなることがよくあります。
1.データベースの CRUD は、これらのシステムで最も一般的な操作です。
2. データベース システムの操作によりディスク I/O が発生することがよくあります (データベース ファイルとログがディスクに保存されるため)。
3. データベース システム上のアプリケーション操作は、多くの場合、プロセス間、さらにはマシン間で行われます。 (ディスク I/O + ネットワーク I/O は、CPU がどれほど速くても、メモリがどれだけ多くても、私たちの手の届かないところにあります)
したがって、データベースに対するこれらの操作は、システム全体のパフォーマンスのボトルネックになることがよくあります。
では、この一般的な方向性を知った上で、どの SQL またはストアド プロシージャが遅いのかを知るにはどうすればよいでしょうか?これには、データベースのプロファイラーを組み合わせる必要があります。SQL
Server の場合は、この記事を参照してください。
http://www.microsoft.com/china/msdn/library/data/sqlserver/Profiler.mspx?mfr=true
Oracle については、この記事を参照してください。
http://www.javaeye.com/post/117389
2. ViewState、この Dongdong はサイズが比較的大きく、インターネット アプリケーションに一定の影響を与えます。最適化については既に園内で話が出ているので自分で調べてください。
3. キャッシュの使用に関する私の意見は、MSN グループの数人の友人の意見とあまり一致しません。 MSN グループの友人は、キャッシュは一連の静的変数、またはキャッシュ コントローラーによって制御されるいくつかの変数である可能性があると考えています。個人的には、このようなキャッシュは単一サーバー環境では優れたパフォーマンスを発揮する可能性があると考えていますが、マルチサーバー環境では、アプリケーションまたはキャッシュ コントローラーが複数のプロセスのキャッシュの内容を慎重に確保する必要があるため、このようなキャッシュがパフォーマンスのボトルネックになると考えています。 。 一貫性のある。このプロセスにより、プログラムのスケーラビリティが大幅に低下します。 100 台のサーバーがある Web ファームを考えてみましょう。1 つのプロセスでキャッシュを変更するには、残りの 99 台のサーバーが正しく変更されたことを通知して確認する必要があります。これはひどいことです。
この点については、memcache が比較的優れたソリューションです。有名な wiki 製品 mediawiki は、memcache をキャッシュ サーバーとして使用します。 Memcache には .net クライアント API もあります。
4. よくわかりません。専門家からのアドバイスをお願いします
。 5. インターネット、特に Java に関する紹介がたくさんあります。自分でググってみてください。
6. この最適化は最も複雑で、効果が最も分かりにくいかもしれません。それを行う必要がある場合は、8 人の不死者に海を渡らせ、その魔法の力を見せてください。
http://www.cnblogs.com/ncindy/archive/2006/11/07/553533.html