Mybatisキャッシュ原理と失効状況解析
この文章は主にMybatisキャッシュ原理と失効状況解析を紹介しています。例コードで紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値を持っています。必要な友達は下記を参考にしてください。
1、キャッシュ[Cache]とは何ですか?はメモリ中の一時データが存在する。 は、ユーザーがよく照会しているデータをキャッシュ(メモリ)に保存し、ユーザがデータを調べに行くと、ディスク(関係型データベースファイル)から照会する必要がなく、キャッシュから照会することによって、検索効率が向上し、高合併システムの性能問題が解決される。 2、なぜキャッシュを使うのですか?
データベースとの相互作用回数を減らし、システムオーバーヘッドを低減し、システム効率を向上させる。
3、どのようなデータがキャッシュを使用する必要がありますか?
常に検索していますが、変更しにくいデータです。
4、Mybatisキャッシュ MyBatisは非常に強力なクエリキャッシュの特性を含み、非常に便利にキャッシュをカスタマイズし、設定することができます。キャッシュは、クエリの効率を大幅に向上させることができます。 MyBatisシステムでは、デフォルトでは2つのキャッシュが定義されています。1つのキャッシュと2つのキャッシュ。 デフォルトでは、一級キャッシュのみがオンされます(Sql Sessionレベルのキャッシュは、ローカルキャッシュとも呼ばれる) 段のキャッシュは手動で開いて構成する必要があります。彼はnamespaceレベルのキャッシュに基づいています。 拡張性を高めるために、MyBatisはキャッシュインターフェースCacheを定義している。Cacheインターフェースを実現することによって、二次キャッシュ をカスタマイズすることができます。
5、一級キャッシュ
一級キャッシュはローカルキャッシュとも呼ばれます。は、データベースと同じセッション中に照会したデータをローカルキャッシュに格納する。 以降、同じデータを取得する必要があれば、直接にキャッシュから取って、データベースを調べなくてはいけません。 6、一級キャッシュが失効した四つの状況 sql Sessionの違い sql Sessionは同じで、照会条件は違っています。 sql Sessionは同じで、2回のクエリの間で添削操作を実行しました。 sql Sessionと同じで、手動で一級キャッシュ をクリアします。
7、二級キャッシュ二級キャッシュも大域キャッシュといい、一級キャッシュの機能領域が低すぎるので、二級キャッシュ が誕生しました。は、namespaceレベルのキャッシュに基づいて、1つの名前空間は、1つの2つのレベルのキャッシュに対応する。 作業メカニズム セッションがデータを照会すると、このデータは現在のセッションの1レベルキャッシュに入れられます。 現在のセッションが終了したら、このセッションに対応する一級キャッシュはなくなります。しかし、私たちが欲しいのは、セッションが終了し、1レベルキャッシュのデータが2レベルキャッシュに保存されます。 新しいセッションクエリ情報は、二次キャッシュからコンテンツを取得することができます。 の異なるmapperで検出されたデータは自分の対応するキャッシュ(map)に入れられます。 使用手順:
コア設定ファイル
<setting name=「cacheEnbaled」value=「true」/>
各mapper.xmlに2級キャッシュを配置してください。この配置はとても簡単です。
方式一:
8、結論
二級キャッシュを開けたら、同じMapperの中で調べます。二級キャッシュでデータを入手できます。
検出されたデータはデフォルトで一級キャッシュに入れられます。
セッションのコミットまたは終了後にのみ、1レベルキャッシュのデータが2レベルキャッシュに転送されます。
原理図:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
1、キャッシュ[Cache]とは何ですか?
データベースとの相互作用回数を減らし、システムオーバーヘッドを低減し、システム効率を向上させる。
3、どのようなデータがキャッシュを使用する必要がありますか?
常に検索していますが、変更しにくいデータです。
4、Mybatisキャッシュ
5、一級キャッシュ
一級キャッシュはローカルキャッシュとも呼ばれます。
@Test
public void testQueryUserById(){
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.queryUserById(1);
System.out.println(user);
session.clearCache();//
User user2 = mapper.queryUserById(1);
System.out.println(user2);
System.out.println(user==user2);
session.close();
}
ですから、一級キャッシュは一つのmapです。7、二級キャッシュ
コア設定ファイル
<setting name=「cacheEnbaled」value=「true」/>
各mapper.xmlに2級キャッシュを配置してください。この配置はとても簡単です。
方式一:
<cache/>
方式二:
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>
このより高度な構成は、60秒ごとに更新され、結果のオブジェクトまたはリストの512個の参照が最大で記憶され、戻ったオブジェクトは読み取り専用と見なされているため、それらを修正すると、異なるスレッド内の使用者が衝突する可能性がある。8、結論
二級キャッシュを開けたら、同じMapperの中で調べます。二級キャッシュでデータを入手できます。
検出されたデータはデフォルトで一級キャッシュに入れられます。
セッションのコミットまたは終了後にのみ、1レベルキャッシュのデータが2レベルキャッシュに転送されます。
原理図:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。