0

私はこれについて多くの助けを見つけることができないようです。.netのオートコンプリートエクステンダーを使用して、ユーザーが検索テキストボックスにキーストロークを追加したときに検索ボックスのオプションを提案しています。これは正常に機能しますが、キーが押されるたびにDBへの新しい呼び出しが送信されます。

これは、Webサイトのユーザー数が増え始めるまでは問題ありません。そのため、毎回DBにラウンドトリップする代わりに、datatable.selectでキャッシュを使用しました。

キャッシュが存在しない場合は作成され、その後は毎回キャッシュが使用されます。

ただし、問題は、最初の訪問者がキャッシュを作成している間に到着したすべてのユーザーが、キャッシュがないと想定し、同じ名前の独自のキャッシュを作成しようとし始め、それによってDBが再び過負荷になることです。

これを回避するための最良の方法に関する指針はありますか?

ありがとう、ベン

4

2 に答える 2

1

データベース接続文字列をプールに設定します。このような:

<add name="YourConnectionString" connectionString="data source=ServerAddress;UID=UserID;PWD=Password;DATABASE=YourDataBase;Min pool size=5;Max pool size=20;connection timeout=15;pooling=yes" />

それがパフォーマンスに役立つかどうかを確認してください。

于 2012-10-02T20:23:53.760 に答える
1

データの静的性に応じて、application_startまたはそのような場所でキャッシュを準備できます。(@pinoy_ISFのように提案されています)。

また、アプリケーションレベルのフラグを設定して、現在キャッシュを構築しているかどうかを示し、構築している場合は、キャッシュを更新せずにDBに直接移動することもできます。キャッシュの構築が完了したら、フラグを元に戻します。後続のリクエストは通常​​どおりキャッシュにヒットします。

于 2012-10-03T11:37:32.467 に答える