レベル 3 キャッシュについて

レベル 3 キャッシュとは何を指しますか?

3 レベル キャッシュは通常、ローカル キャッシュ、分散キャッシュ、データベース キャッシュを指します。

ローカル キャッシュ: 高速読み取りのためにデータをプロセス メモリにキャッシュします。ローカル キャッシュのアクセス速度は非常に高速ですが、ストレージ容量が限られているため、あまり多くのデータを保存できず、プロセスの終了後にデータが消去されます。

分散キャッシュ: 複数のサーバー ノードにデータをキャッシュすると、効率的なデータ共有と負荷分散を実現できます。分散キャッシュは複数のマシンに拡張してキャッシュ容量を増やすことができますが、データの一貫性やキャッシュの更新などの複雑な問題を考慮する必要があります。

データベース キャッシュ: MySQL、Oracle などのリレーショナル データベースにデータをキャッシュします。データベース キャッシュを使用すると、データの永続的な保存を確保しながら、データのクエリと管理が容易になりますが、アクセス速度が比較的遅いため、インデックスの追加やキャッシュ テクノロジの使用などの最適化が必要です。

3次キャッシュは固定ではなく、アプリケーションシナリオのニーズに応じて特定のキャッシュ実装方法を選択および組み合わせて、最高のパフォーマンスと信頼性を実現できることに注意してください。たとえば、実際のアプリケーションでは、CDN やオブジェクト ストレージなどのクラウド コンピューティング テクノロジを組み合わせて、より強力なキャッシュ システムを構築することもできます。

mybatis 3次キャッシュ

MyBatis の 3 レベル キャッシュは、ローカル キャッシュ、第 2 レベル キャッシュ、およびグローバル キャッシュを指します。

ローカル キャッシュ: ローカル キャッシュとは、データベースへのクエリの繰り返しを避けるために、MyBatis がデータベース クエリを実行するときに、まずクエリの結果オブジェクトをローカル メモリにキャッシュして、それを返すことを意味します。同じセッション (SqlSession) で同じクエリが実行される (つまり、SQL ステートメントとパラメーターが同じである) 場合、結果はデー​​タベースに再度アクセスするのではなく、ローカル キャッシュから直接取得されます。

2 次キャッシュ: 2 次キャッシュとは、他の SqlSession (同じアプリケーションの異なる SqlSession インスタンス) がキャッシュされたデータを共有できるように、クエリ結果オブジェクトをアプリケーションのメモリにキャッシュすることを指します。MyBatis は、デフォルトの PerpetualCache や Ehcache や Redis などのサードパーティ キャッシュ ライブラリを含む、さまざまなキャッシュ実装メソッドを提供します。

グローバル キャッシュ: グローバル キャッシュは、異なるアプリケーション間で共有するためのキャッシュ データを指します。MyBatis はグローバル キャッシュの実装を提供しませんが、サードパーティのキャッシュ ライブラリを統合することで実現できます。

MyBatis のキャッシュ メカニズムはシステム パフォーマンスを大幅に向上させることができますが、いくつかの問題もあることに注意してください。たとえば、データベース内のデータが変更されたにもかかわらず、アプリケーションのキャッシュが更新されていない場合、キャッシュされたデータがデータベース内の実際のデータと不一致になる可能性があります。現時点では、問題を解決するには、キャッシュをクリアするか、キャッシュを定期的に更新するなどの戦略を採用する必要があります。さらに、MyBatis のキャッシュ メカニズムを使用する場合、最高のパフォーマンスと使用法を実現するために、特定の状況に応じてセットアップおよび調整する必要があります。

Android のレベル 3 キャッシュ

Android 側の 3 レベルのキャッシュとは、メモリ キャッシュ (Memory Cache)、ディスク キャッシュ (Disk Cache)、ネットワーク キャッシュ (Network Cache) を指します。

メモリ キャッシュ: 最近使用した画像やその他のデータをメモリにキャッシュし、頻繁なディスク アクセスを回避しながら高速に読み込みます。メモリ キャッシュは最も高速で効率的なキャッシュ方法ですが、一定の制限もあります。たとえば、メモリには制限があり、キャッシュされたデータはシステムによって再利用される場合があります。メモリの使用量とキャッシュ効果の間でバランスを取る必要があります。

ディスク キャッシュ: データをローカル ディスクにキャッシュすると、データを長期間保存し、データ損失の問題を回避できます。ディスク キャッシュは、データを永続的に保存するために非常に重要です。ディスク アクセスが遅く、大量のデータが大量のディスク領域を占有するため、キャッシュ サイズとクリーンアップ ポリシーを設定する必要があります。

ネットワーク キャッシュ: ネットワーク上にデータをキャッシュすると、クライアントからの繰り返しのリクエストを回避し、データ送信の帯域幅消費を削減し、ユーザー エクスペリエンスを向上させることができます。一般的なネットワーク キャッシュ方法には、CDN キャッシュ、プロキシ サーバー キャッシュ、ブラウザ キャッシュなどが含まれます。

Android 開発では、サードパーティ ライブラリを使用して、メモリ キャッシュ、ディスク キャッシュ、ネットワーク キャッシュなどの機能を提供する Glide や Picasso などの画像読み込みライブラリなど、第 3 レベルのキャッシュを実装できます。同時に、不適切なキャッシュ メカニズムによって引き起こされるパフォーマンスの問題やデータの不整合を避けるために、キャッシュ戦略の設定と最適化にも注意を払う必要があります。

アプリケーションメモリとローカルメモリの違い

アプリケーションのメモリとは、コード、実行時データ、スタックなど、アプリケーションの実行時に使用されるメモリ空間を指します。Android プラットフォームでは、アプリケーションのメモリは仮想マシン (Dalvik または ART) によって管理され、各アプリケーションには独立した仮想マシン インスタンスがあり、割り当てられるメモリ サイズも制限されています。

ローカル メモリとは、オペレーティング システムによって各プロセスに割り当てられるメモリ領域を指します。Android プラットフォームでは、通常、C/C++ コードの実行時に使用されるメモリを指します。ローカル メモリはアプリケーション仮想マシンによる制限を受けず、より大きなメモリ領域を取得できますが、手動でメモリの適用と解放が必要なため、メモリ リークなどの問題が発生しやすくなります。

アプリケーションでは、Java コードの実行時に使用されるメモリはアプリケーションの仮想マシンのメモリ空間に属し、C/C++ コードの実行時に使用されるメモリはローカル メモリ空間に属します。この 2 つは JNI インターフェイスを介して対話できるため、Java コードと C/C++ コードの混合プログラミングを実現できます。

なお、ローカルメモリの過剰な使用はシステムリソースの制約を引き起こし、端末全体のパフォーマンスに影響を与えるため、Androidアプリ開発ではローカルメモリの使用には十分注意し、使用しなくなったメモリ領域は解放する必要があります。タイムリーなやり方。

Guess you like

Origin blog.csdn.net/beiback/article/details/130979108