MyBatisの:キャッシュ

1.キャッシュは何である[キャッシュ]

  • メモリ内の一時的なデータがあります。
  • ユーザーは、多くの場合、キャッシュ(メモリ)内のデータを照会、ユーザーは、キャッシュからのクエリは、クエリの効率を向上させる高性能並行システムの問題を解決するために、ディスクのクエリからのクエリデータ(リレーショナルデータベースのデータファイル)にする必要はありません。

2.なぜ使用のキャッシング

  • 、相互作用およびデータベースの数を減らし、システムのオーバーヘッドを削減し、システム効率を向上させます。

キャッシュを使用する必要がどのような種類のデータ3

  • クエリとしばしば容易ではないデータを変更するには

4、MyBatisのキャッシュ

  • MyBatisのは非常に簡単にカスタマイズしてキャッシュを設定することができます強力なクエリキャッシュ機能が含まれています。キャッシングは大幅にクエリの効率を向上させることができます。
  • デフォルトで2つのキャッシュによって定義されたMyBatisのシステム:キャッシュ二次キャッシュ

    • デフォルトでは、最初のレベルのキャッシュがオンになっています。(SQLSESSIONレベル・キャッシュ、ローカルキャッシュとしても知られます)
    • 手動で開くと、二次キャッシュ構成する必要が、彼は名前空間レベルのキャッシュをベースにしています。
    • スケーラビリティを向上させるためには、MyBatisのは、キャッシュインターフェイスのキャッシュを定義します。私たちは、キャッシュを実装することによって、二次キャッシュへのインタフェースをカスタマイズすることができます

5、L1キャッシュ

また、キャッシュローカルキャッシュとして知られています:

  • 同じデータベースクエリでは、セッション中にデータがローカルキャッシュに配置されます。
  • 後で同じデータを取得する必要がある場合は、キャッシュから直接取るには、データベースを照会してはなりません。

6、キャッシュミス4例

  • 異なるSQLSESSION
  • SQLSESSION同じ、別のクエリ
  • 同じSQLSESSION、操作への追加や削除は2件の問い合わせとの間で行われます!
  • 同じSQLSESSIONは、手動でキャッシュをクリア
@Test
 公共 ボイドtestQueryUserById(){ 
    SQLSESSIONセッション = MybatisUtils.getSession()。
    UserMapperマッパー = session.getMapper(UserMapper。クラス)。

    ユーザのユーザ = mapper.queryUserById(1 )。
    System.out.println(ユーザ)。

    session.clearCache(); // 手动清除缓存

    ユーザーuser2は = mapper.queryUserById(1 ); 
    System.out.println(USER2)。

    System.out.println(ユーザー == user2が)。

    session.close(); 
}

だから、キャッシュはマップであり、

7、二次キャッシュ

  • また、グローバル・キャッシュとして知られている二次キャッシュは、キャッシュ・スコープは、低すぎる二次キャッシュの誕生ので、
  • 二次キャッシュに対応したベースの名前空間レベルのキャッシュ、名前空間、;
  • ワーキングメカニズム

    • セッション問合せデータは、このデータは、現在のセッションでキャッシュに配置されます。
    • 現在のセッションが閉じている場合は、対応するセッションキャッシュがなくなって、私たちは、セッションを閉じ、データが二次キャッシュにキャッシュに格納されたいです。
    • 新しいセッションクエリ情報、あなたは二次キャッシュからコンテンツを取得することができます。
    • 自分の孤立したデータに対応するキャッシュ(マップ)上の異なるマッパー意志;および

これらの手順を実行します。

  • コア・コンフィギュレーション・ファイル

    < 設定= "cacheEnabled" = "true"を/>

     

  • 二次キャッシュを使用するように構成された各mapper.xmlは、この設定は非常に簡単です。
:道
 < キャッシュ/> 

二つの方法:
公式の例=====>表示公式ドキュメント
< キャッシュ
   立ち退き=「FIFO」
  flushInterval =「60000」
  サイズ=「512」
  読み取り専用=「trueに」/> 
これより高度な設定FIFOバッファは、60秒で、リフレッシュしたオブジェクトまたはリストをもたらすために512個の参照まで保存するために作成され、それらが生成異なるスレッドで発信者を変更することができるように、読み取り専用の間隔で考えられている返されたオブジェクト競合。

8.おわり

  • ただ、二次キャッシュを開いて、私たちは同じマッパーを照会、あなたは二次キャッシュ内のデータを取得することができます
  • 孤立したデータは、最初にキャッシュにデフォルトになります
  • セッションがオンまたはオフに提出する後にのみ、データが二次キャッシュにキャッシュされます

回路図: 

 

 

 

おすすめ

転載: www.cnblogs.com/zitai/p/11831703.html