私は約 20 人のユーザーから java ee 6 を使用して、イントラネットで使用される在庫アプリケーションに取り組んでいます。この状況で本当に第 2 レベルのキャッシュが必要ですか?
2 に答える
特定の JPA 操作を高速化するために 2 番目のレベルのキャッシュを使用すると、アプリケーションのパフォーマンスが大幅に向上する可能性があります。ただし、非常に厄介な副作用がいくつか発生する可能性があります。
- アプリケーションが複数のデプロイ可能なもの (ear、war) としてロードされている場合、通常、これらのデプロイされたアプリケーションのそれぞれに独自の第 2 レベルのキャッシュがあります。その結果、1 つのアプリケーションで行われた更新が他のアプリケーションにすぐに反映されず、キャッシュされたデータの古いコピーが引き続き使用されます。
- アプリケーションが完全に JPA を使用して構築されていない場合、同じ問題が発生します。
そのため、頻繁に変更されるデータでは、第 2 レベルのキャッシュを使用しないでください。
この質問に答えるには十分な情報がありません。しかし、何かのパフォーマンスを改善できるときはいつでもそうしてください。アプリケーションが成長する可能性があり、そのキャッシュが必要になります。さらに、キャッシングの使用は、空間と時間のトレードオフを実現することに大きく依存します。より多くのスペース = より少ない時間であり、これの逆も同様に当てはまります。次のシナリオを検討してください。
システム上の各クエリをキャッシュしないと、1 秒かかります。キャッシュを使用すると、各クエリに 0.5 秒かかりますが、キャッシュの構築/更新にかかる時間は 20 分です
ある時点で、キャッシュは役に立たなくなります。従うべき数学。キャッシュを 1 時間ごとに再構築してパフォーマンスを向上させる必要があると仮定すると、1 時間あたりのクエリ数は、収支を合わせるために 1 秒あたり 80 クエリを超える必要があります。
20 minutes for the cache (60*20)
.5 seconds per query (2 per second)