mybatis 1次キャッシュと2次キャッシュの使い方の詳しい説明

DDD
リリース: 2023-08-21 11:53:59
オリジナル
912 人が閲覧しました

Mybatis の 1 次キャッシュと 2 次キャッシュの使用法: 1. 1 次キャッシュは、デフォルトで MyBatis によって有効にされるキャッシュ メカニズムです。最初に、同じクエリ結果が最初のキャッシュにすでに存在するかどうかを確認します。現在のスレッドのレベル キャッシュ。存在する場合は、クエリ リクエストをデータベースに送信する代わりに、キャッシュ内のデータを直接返します。2. 2 番目のレベル キャッシュは、名前空間ベースのキャッシュ メカニズムです。最初に同じクエリかどうかを確認します。 result は現在のネームスペースの 2 次キャッシュにすでに存在します。存在する場合は、データベースにクエリ リクエストを送信せずに、データベース内のデータを直接キャッシュに返します。

mybatis 1次キャッシュと2次キャッシュの使い方の詳しい説明

MyBatis は、Java オブジェクトをデータベース操作にマップする方法を提供するオープンソースの永続層フレームワークです。 MyBatis では、一次キャッシュと二次キャッシュは 2 つの異なるレベルのキャッシュ メカニズムであり、どちらもパフォーマンスを向上させるために使用できます。

一次キャッシュは、MyBatis によってデフォルトで有効にされるキャッシュ メカニズムであり、スレッドベースであり、各スレッドが独自の 一次キャッシュを持つことを意味します。 1 次キャッシュの動作メカニズムは、クエリ操作を実行するときに、同じクエリ結果が現在のスレッドの 1 次キャッシュに既に存在するかどうかを最初にチェックし、存在する場合はキャッシュ内のデータを直接返します。データベースにクエリリクエストを送信せずに。これにより、データベースへのアクセス数が減り、クエリのパフォーマンスが向上します。

一次キャッシュの有効範囲は同じ SqlSession 内です。SqlSession が閉じられるか、変更操作 (挿入、更新、削除) が実行されると、一次キャッシュはクリアされます。したがって、一次キャッシュは、同じリクエストまたはトランザクションで同じデータが複数回クエリされるシナリオに適していますが、頻繁に変更されるデータや複数の同時リクエストの場合、一次キャッシュの効果は明らかではない可能性があります。

第 2 レベル キャッシュは、複数の SqlSession 間で使用できる名前空間ベースのキャッシュ メカニズムです。 2 次キャッシュの動作メカニズムは、クエリ操作を実行するときに、同じクエリ結果が現在の名前空間の 2 次キャッシュにすでに存在するかどうかを最初にチェックすることです。存在する場合、キャッシュ内のデータはデータベースにクエリリクエストを送信せずに直接返されます。これにより、データベースへのアクセス数が減り、クエリのパフォーマンスが向上します。

2 次キャッシュの有効範囲は同じ名前空間内にあり、名前空間内の SqlSession に変更操作が行われると、2 次キャッシュはクリアされます。したがって、2 次キャッシュは、同じデータが複数の SqlSession 間で共有されるシナリオに適していますが、頻繁に変更されるデータや複数の同時リクエストの場合、2 次キャッシュの効果は明らかではない可能性があります。

MyBatis では、一次キャッシュと二次キャッシュは独立しており、同時に使用することも、別々に使用することもできます。 1 次キャッシュはデフォルトで有効になっており、構成は必要ありませんが、2 次キャッシュは MyBatis 構成ファイルで構成する必要があります。

2 次レベル キャッシュを構成するには、次の構成をマッパー構成ファイルに追加する必要があります:

ログイン後にコピー

これにより、PerpetualCache をキャッシュとして使用するデフォルトの 2 次キャッシュがオンになります。実装クラス。他のキャッシュ実装クラスを使用する必要がある場合は、実装クラスをカスタマイズして構成ファイルで指定できます。

2次キャッシュのライフサイクルはアプリケーションのライフサイクルと同じであることに注意してください。つまり、2次キャッシュはアプリケーションの起動時に作成され、アプリケーションの終了時に破棄されます。したがって、分散環境で MyBatis を使用する場合は、データの不整合を避けるためにキャッシュの同期と更新メカニズムを考慮する必要があります。

概要

一次キャッシュと二次キャッシュは、クエリのパフォーマンスを向上させるために使用されるキャッシュ メカニズムです。第 1 レベルのキャッシュはスレッドに基づいており、同じリクエストまたはトランザクションで同じデータが複数回クエリされるシナリオに適しています。一方、第 2 レベルのキャッシュは名前空間に基づいており、同じデータが共有されるシナリオに適しています。複数の SqlSession 間。特定のアプリケーションのシナリオと要件に応じて、一次キャッシュ、二次キャッシュ、またはその両方を同時に使用することを選択できます。

以上がmybatis 1次キャッシュと2次キャッシュの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!