2

セッションの最新の 10秒を共有ディスクに書き込むことPageStatePersisterに基づいて、独自のクラスを作成しました。これは、すべての Web サーバーがアクセスできるため、セッションを維持するよりも拡張性が高く、期限切れに対処する必要がなく、メモリの使用量が少ないと思います。SessionPageStatePersisterViewstateViewstate

ユーザーがブラウザを閉じると、サーバーに通知され、サーバーは 2 時間アクセスされていないファイルを削除します。Viewstateこれまでのところは順調ですが、代わりに SQL サーバー データベースに格納する方が高速で効率的かどうか疑問に思っています。

  1. ViewStateファイルは平均で 30k です。 
  2. 現在、隠しフィールドを読み取ってViewstateキーを取得し、ファイルに直接アクセスして逆シリアル化します。並べ替えや検索は必要ありません。
  3. 1 時間あたり約 2000 人の同時ユーザーが存在し、最近の 20 個の Viewstate セッションを保存すると、1 時間あたり約 20,000 の一時ビュー ファイルになります。
  4. ファイルを定期的に繰り返し、最も古いファイルを削除する必要があります。

この場合、フラットファイルシステムとデータベースのどちらが優れていますか?

4

1 に答える 1

3

ViewState を SQL Server に格納する方がはるかに優れています。たとえば、最終的に最新の 10 件から最新の 50 件に増やしたい場合、DB 負荷の増加は比較的些細なことです。通常、DB I/O よりもディスク I/O を可能な限り避ける必要があります。ディスク上の放棄されたファイルの荒れ地をシークすることは、おそらくWHERE DateInserted > 20 minutes ago.

于 2009-10-11T19:29:14.407 に答える