mybatis 快取(一級和二級快取)

2021-08-01 14:42:47 字數 2393 閱讀 8339

1.快取

好處:快取的使用演示:

[1]sql語句或查詢條件不同

[2]分屬不同sqlsession物件

[3]查詢前執行clearcache()

[4]提交事務

2.一級快取 3.

二級快取 跟

web應用中

物件作用範圍類似。

cacheenabled" value="true"/>

flushinterval:快取重新整理時間間隔,時間是毫秒,檢查是否存在過期物件

size:快取中儲存的物件個數

readonly:是否唯讀

4.外接二級快取元件

①為什麼要整合

ehcache?

②操作[1]新增jar包

[2]加入ehcache自身配置檔案ehcache.xml

maxelementsinmemory="10000"

maxelementsondisk="10000000"

eternal="false"

timetoidleseconds="20"

timetoliveseconds="120"

overflowtodisk="true"

diskexpirythreadintervalseconds="120"

memorystoreevictionpolicy="lru"

/>

屬性說明:

* diskstore:指定資料在磁碟中的儲存位置。

* defaultcache:當借助cachemanager.add("democache")建立cache時,ehcache便會採用指定的的管理策略

以下屬性是必須的:

* maxelementsinmemory - 在記憶體中快取的element的最大數目

* maxelementsondisk - 在磁碟上快取的element的最大數目,若是0表示無窮大

* eternal - 設定快取的elements是否永遠不過期。如果為true,則快取的資料始終有效,如果為false那麼還要根據timetoidleseconds,timetoliveseconds判斷

* overflowtodisk - 設定當記憶體快取溢位的時候是否將過期的element快取到磁碟上

以下屬性是可選的:

* timetoidleseconds - 當快取在ehcache中的資料前後兩次訪問的時間超過timetoidleseconds的屬性取值時,這些資料便會刪除,預設值是0,也就是可閒置時間無窮大

* timetoliveseconds - 快取element的有效生命期,預設是0.,也就是element存活時間無窮大

diskspoolbuffersizemb 這個引數設定diskstore(磁碟快取)的快取區大小.預設是30mb.每個cache都應該有自己的乙個緩衝區.

* diskpersistent - 在vm重啟的時候是否啟用磁碟儲存ehcache中的資料,預設是false。

* diskexpirythreadintervalseconds - 磁碟快取的清理執行緒執行間隔,預設是120秒。每隔

120s,相應的執行緒會進行一次ehcache中資料的清理工作

* memorystoreevictionpolicy - 當記憶體快取達到最大,有新的element加入的時候, 移除快取中element的策略。預設是lru(最近最少使用),可選的有lfu(最不常使用)和fifo(先進先出)

[4]測試

opensession = sqlsessionfactory.opensession();

system.out.println(customer.getcustname());

system.out.println(customer.getcustname());

opensession.close();

opensession = sqlsessionfactory.opensession();

system.out.println(customer.getcustname()); 5.

二級快取的原理: 6.

二級快取失效情況

[1]在查詢select標籤內設定usecache="false"

usecache="false">

selectstu_id stuid,stu_name stuname from tbl_student where stu_id=#

[2]在執行增刪改操作時重新整理快取

flushcache="true">

updatetbl_student set stu_name=# where stu_id=#

這是預設設定,通常不必修改

7.快取命中率

aaaaaa

aaaaaa

aaa

8.資料查詢過程:

關閉二級快取 Mybatis一級快取 二級快取詳講

首先,我們先看一下這個標題 查詢快取 那就說明跟增 刪 改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及!查詢快取目前mybatis中提供了兩個,分別是 一級快取 二級快取 所以,sqlsession的快取,是屬於一級快取 那,又有什麼用呢?比如,我們現在資料庫中有兩條資料,分別是張三跟...

mybatis查詢快取之一級快取和二級快取詳細解析

一級快取是mybatis預設就幫我們開啟的,我們不需要多做配置,但是我們得知道其中原理,否則我們也不知道怎麼使用,也不知道我們到底有沒有一級快取。上面第二部分說過一級快取的作用域是同乙個sqlsession,sqlsession的作用就是建立和資料庫的會話,我們對資料庫表的增刪改查都是通過sqlse...

Mybatis 一級快取和二級快取

一級快取是sqlsession級別的快取 工作機制 乙個sqlsession就代表和資料庫的一次會話,在資料庫中查出的資料放在一級快取中,同乙個物件再次查詢時,會去快取中查詢,避免了再次查詢資料庫。使用 mybatis預設開啟,不需要手動設定 舉例 同乙個物件,查詢兩次,只呼叫一次sql 注 所有測...