私は MS 認定のために勉強していますが、私が行っている模擬試験の 1 つに、StateServer ではなく SQL Server にセッションを保存する際のパフォーマンスが争点であるという質問があります。
アプリが Web ファームで実行されている場合、最高のパフォーマンスを提供するセッション状態のソリューション (SQL Server または StateServer) と、最も重要な理由は何ですか?
私は MS 認定のために勉強していますが、私が行っている模擬試験の 1 つに、StateServer ではなく SQL Server にセッションを保存する際のパフォーマンスが争点であるという質問があります。
アプリが Web ファームで実行されている場合、最高のパフォーマンスを提供するセッション状態のソリューション (SQL Server または StateServer) と、最も重要な理由は何ですか?
State Serverは、セッションデータをメモリ内の辞書に格納するため、より高速です。SQL Serverは、データをディスクに保持するデータベースに格納されているため、速度が低下します。
SQLサーバーも低速です。これは、すべてが1つのテーブルに格納されるため、セッションデータにアクセス/更新するクライアントが増えるにつれて競合が発生するためです。
SQL Serverはディスクに永続化され、フェールオーバー機能を備えたクラスターとしてセットアップできるため、信頼性が高くなります。
詳細な説明については、この記事の前文を参照してください。
ちょっとした、しかし重要な補足: InProc は名前が示すようにファームでは使用できません。現在の w3wp プロセスで実行され、ファーム全体で共有することはできません。StateServer は Windows サービスであるため、StateServer を使用する速度は、stateserver サービスが実行されているマシンの速度に依存します。これはメモリのみです。もちろん、SQL はデータを書き込んで取得する必要がありますが、これはおそらくメモリのみよりも遅くなります。
ここから:
このリンクから: http://www.eggheadcafe.com/articles/20021016.asp
パフォーマンス
InProc - 最速ですが、セッション データが多いほど、Web サーバーでより多くのメモリが消費され、パフォーマンスに影響を与える可能性があります。
StateServer - 基本型 (文字列、整数など) のデータを格納する場合、あるテスト環境では InProc よりも 15% 遅くなります。ただし、大量のオブジェクトを格納している場合、シリアル化/逆シリアル化のコストがパフォーマンスに影響を与える可能性があります。独自のシナリオのパフォーマンス テストを行う必要があります。
SQLServer - 基本型 (文字列、整数など) のデータを格納する場合、あるテスト環境では InProc より 25% 遅くなります。StateServer と同じシリアライゼーションに関する警告。
そのため、StateServer は、セッション状態を保存するために SQL Server よりも少し高速であるように思われます。
その理由については、SQL Server はより多目的であり、他の目的にも使用される可能性が高いと思います。それだけでなく、保存メカニズムはディスクにあり、StateServer は別のプロセスで実行されているため、データをディスクに書き込む必要はなく、他のプロセスのメモリ空間にデータを保存するだけです (仮想メモリが許可されている場合)。