6

私は現在、毎日20,000人を超えるユーザーにヒットするアプリケーションを持っており、ほとんどの場合、1つのデータテーブルを参照しています。このデータテーブルは約20行で埋められていますが、テーブル内の情報のレコードが200,000〜600,000であるデータベース内の「データテーブル」から取得されます。編集:これらの20行は「動的」であり、ユーザーがテキストボックスを介して情報を入力すると変更されます。

現在、プロファイルデータとともにユーザーデータも保持しています。

現在、データテーブルが表示されるたびに約4回のコールバックを行っていますが、1回のコールに戻すことができません。

質問:実際に5秒ごとに200,000〜600,000行のデータでアプリケーションの状態を埋めることができ、実際にシステムを高速化できるかどうか疑問に思っていました。編集:ユーザーまたは他のユーザーが入力する動的な行に対して実行します。コンテンツは頻繁に更新する必要があります。

質問2:アプリケーションキャッシュに実際にどれだけ保持でき、それでも高速化を回避できますか?

編集: 20,000人以上のユーザーがこれらの200,000行にアクセスしているので、それらすべてをキャッシュする必要があります。少なくとも、ベストプラクティスについては考えています。ユーザーが私のサイトにアクセスすると、これはユーザーが見るメインページの1つであり、おそらく1回の訪問につき2〜5回戻ってきます。

編集:ユーザーには、ユーザーに表示される他の20行とは異なる可能性のある20行の一意のセットが表示されます。これは非常に動的なサイトであり、2つの異なる行が1秒に1回更新される可能性があります。

編集:セッション状態で保存されている場合、ユーザーがページを表示する回数だけが高速化されます。人は一度だけページを表示してから離れることができたので、全体的なアプリケーションではありません。

4

4 に答える 4

2

技術的には、あなたがやりたいことは可能だと思いますが、お勧めしません。この道を進む前に、考慮しなければならない要因がいくつかあります。

  1. それをサポートするハードウェアはありますか? そのような構成のメモリがなく、ページ スワップが必要な場合は、メモリにキャッシュすることによる速度の利点のほとんどが失われる可能性があります。プロセス外の状態サーバーを使用している場合、システムにはシリアライゼーションを処理するオーバーヘッドがあります。

  2. そんなに多くの行から何かを検索するにはどうすればよいでしょうか? データベース サーバーは、舞台裏で多くの検索と並べ替えを処理します。彼らが使用するかなり複雑なアルゴリズムがいくつかありますが、Web サーバーにデータをキャッシュすると失われてしまいます。

メモリ内とは対照的に、データベース内で何かが高速になる時期について、厳密で迅速なルールはありません。アプリケーションのセットアップ方法とデータの保存方法に大きく依存します。

于 2008-09-30T12:14:14.253 に答える
0

あなたは彼らが主に1つのテーブルを見ていると言います、そしてそのテーブルは200から600K行に引っ張られます。そのテーブルはどのくらいの頻度で引っ張られますか?これは、ユーザーが主にデータの最初のページを見ている「ホームページ」タイプのシナリオですか?なぜすべての200K行をキャッシュし、最初の20行をキャッシュしないのですか?

于 2008-09-29T21:24:51.333 に答える
0

それをSession状態で保存してもよろしいですか?同じデータベースを使用する場合は、アプリケーションの状態をお勧めします。これにより、1つのデータセットのみがメモリに保存されます。

メモリ制限はIISによって制御されていると思います。最大仮想メモリ最大使用メモリの制限があります。データの可用性を確認することを忘れないでください。

これを確認してください:ワーカープロセス分離モード(IIS 6.0)でのASP.NETアプリケーションの構成

于 2008-09-29T21:35:36.127 に答える
0

明確にしていただけますか?ユーザーは、そのユーザーに固有の 20 レコードのデータテーブルを取得し、600K テーブルをクエリした結果であるということですか? レコードはユーザーに対して静的ですか?

ユーザーに関連付けられると静的なままになるレコードが 20 しかない場合、要求に応じてユーザーにストリーミングできるシリアル化されたオブジェクトを作成できますか? つまり、DB にアクセスする必要がないように、すぐに使用できる状態にします。

于 2008-09-29T21:51:36.713 に答える