2

変更される可能性が低い SQL RDBMS からのデータが Web サーバーにキャッシュされるシステムを継承しました。

これは良い考えですか?私はそのロジックを理解しています.このデータは変更されないため、リクエストごとにデータベースにクエリを実行する必要はありません.メモリに保存してデータベース呼び出しを保存してください. しかし、これでは何も得られないと思わざるを得ません。SQLは基本です。例えば:

SELECT StatusId, StatusName FROM Status WHERE Active = 1

これにより、10 件未満のレコードが得られます。データベースは、Web サーバーと同じデータ センターにあります。最新のデータベースは、データを保存して呼び出すように設計されています。アプリケーション キャッシュは、データベース呼び出しよりもはるかに効率的ですか?

問題は、サーバー ファームがあり、サーバー間でキャッシュの同期を維持する方法を考え出さなければならないときに発生します。データベース呼び出しのコストを過小評価しているのかもしれません。データが変更されたときに各サーバーのキャッシュを同期しておく複雑さに見合うだけのデータをメモリに保持することで得られるパフォーマンス上の利点はありますか?

4

2 に答える 2

3

キャッシュの利点は、キャッシュされたアイテムが必要になる回数と、キャッシュされたアイテムを取得するコストに関連しています。ステータス テーブルは、長さが 10 行しかない場合でも、毎回クエリを実行する必要がある場合、取得するのに「コストがかかる」可能性があります。必要に応じて接続を確立し、クエリを実行し、ネットワーク経由でデータを渡すなどです。頻繁に使用する場合、利点が合計され、重要になる可能性があります。たとえば、あるステータスを 1 秒間に 1000 回、またはすべての Web サイト リクエストでチェックする必要があるとします。1000 個のクエリを保存し、データベースはより有用な処理を行うことができ、ネットワークはおしゃべりでいっぱいではありません。Web サーバーの場合、キャッシュからアイテムを取得するコストは通常​​最小限です (数万または数十万のアイテムをキャッシュしている場合を除きます)。そのため、ほぼ毎回データベースにクエリを実行するよりも、キャッシュから何かを取得する方が高速です。

しかし肝心なのは、ベンチマークを実行したり、データをどのように使用しているかの詳細を知らずに、イエスかノーかを言うのは難しいということです。考慮すべき点のいくつかを強調しました。

于 2013-06-18T21:44:07.157 に答える
1

他にも要因が考えられます。たとえば、EF を使用すると、単純なデータ取得にかなりの追加処理が追加される可能性があります。データの量だけでなく、リクエストの量も要因になる可能性があります。

将来の設計が決定に影響を与える可能性があります。キャッシュが別の場所に移動され、同じ場所に配置されなくなる可能性があります。

あなたの質問に対する正しい答えはありません。あなたの場合、おそらく利点はありません。キャッシュを使用しないことにはすでに欠点がありますが、既存のコードを変更する必要があります。

于 2013-06-18T21:44:00.737 に答える