質問

私は自分で書きました PageStatePersister に基づくクラス SessionPageStatePersister 最新の 10 件を書き込みます Viewstates 共有ディスクへのセッションの場合。このままにするよりも拡張性が向上すると思います Viewstate セッション中はすべての Web サーバーがアクセスできるため、有効期限切れに対処する必要がなく、メモリの使用量も少なくなります。

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

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

この場合、どちらが良いですか:ある フラットファイル システムまたは データベース?

役に立ちましたか?

解決

これは、SQL ServerでのViewStateを格納するためのより良いスケールでしょう。あなたが最終的には例えば、直近50直近10から増やしたい場合は、DB負荷の比較的些細な増加となります。ディスクI / Oは、一般的にmoreso DB I / Oよりも、可能な限り避けるべきです。ディスク上に捨てられたファイルの荒れ地を横断しようとすると、おそらくWHERE DateInserted > 20 minutes agoよりもはるかに重いとクリーンアップ操作も、はるかに良い仕事です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top