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

2022-09-21 06:45:07 字數 2332 閱讀 7852

快取可以將資料儲存在記憶體中,是網際網路系統常常用到的。目前流行的快取伺服器有 mongodb、redis、ehcache 等。快取是在計算機記憶體上儲存的資料,讀取時無需再從磁碟讀入,因此具備快速讀取和使用的特點。

和大多數持久化框架一樣,mybatis 提供了一級快取和二級快取的支援。預設情況下,mybatis 只開啟一級快取。

示例:

public website selectwebsitebyid(int id);

<

select

id="selectwebsitebyid"

resulttype

="net.biancheng.po.website"

>

select * from website

where id=#

select

>

測試**

public

class

test

}

執行結果

debug [main] - ==>  preparing: select * from website where id=?

debug [main] - ==> parameters:

1(integer)

debug [main] - <== total:

1debug [main] - 使用同乙個sqlsession再執行一次

debug [main] - 現在建立乙個新的sqlseesion物件在執行一次

debug [main] - ==> preparing: select * from website where id=?

debug [main] - ==> parameters:

1(integer)

debug [main] - <== total:

1

從執行結果可以看出,第乙個 sqlsession 實際只發生過一次查詢,而第二次查詢就從快取中取出了,也就是 sqlsession 層面的一級快取。為了克服這個問題,我們往往需要配置二級快取,使得快取在 sqlsessionfactory 層面上能夠提供給各個 sqlsession 物件共享。

二級快取是全域性快取,作用域超出 session 範圍之外,可以被所有 sqlsession 共享。

一級快取快取的是 sql 語句,二級快取快取的是結果物件。

1)mybatis 的全域性快取配置需要在 mybatis-config.xml 的 settings 元素中設定,**如下。

<

settings

>

<

setting

name

="cacheenabled"

value

="true"

/>

settings

>

<

namescape

>

<

cache

eviction

="fifo"

flushinterval

="60000"

size

="512"

readonly

="true"

/>

...>

以上屬性說明如下。

屬性說明

eviction

代表的是快取**策略,目前 mybatis 提供以下策略。

flushinterval

重新整理間隔時間,單位為毫秒,這裡配置的是 100 秒重新整理,如果省略該配置,那麼只有當 sql 被執行的時候才會重新整理快取。

size

引用數目,正整數,代表快取最多可以儲存多少個物件,不宜設定過大。設定過大會導致記憶體溢位。這裡配置的是 1024 個物件。

readonly

唯讀,預設值為 false,意味著快取資料只能讀取而不能修改,這樣設定的好處是可以快速讀取快取,缺點是沒有辦法修改快取。

<

select

id="getwebsitelist"

resulttype

="net.biancheng.po.website"

usecache

="true"

>

...select

>

對於 mybatis 快取僅作了解即可,因為面對一定規模的資料量,內建的 cache 方式就派不上用場了,並且對查詢結果集做快取並不是 mybatis 所擅長的,它專心做的應該是 sql 對映。對於快取,採用 oscache、memcached 等專門的快取伺服器來做更為合理。

一級快取,二級快取

首先補充下cpu的知識 cpu也就是 處理器,相當於計算機的大腦 cpu是一塊超大規模的積體電路,是一台計算機的運算核心 core 和控制核心 control unit cpu功能主要是解釋計算機指令以及處理計算機軟體中的資料 處理器主要包括運算器 算術邏輯運算單元,alu,arithmetic l...

一級快取和二級快取

引自 許多人認為,快取 是記憶體的一部分 許多技術文章都是這樣教授的 但是還是有很多人不知道快取在什麼地方,快取是做什麼用的 其實,快取是cpu的一部分,它存在於cpu中 cpu訪問資料的速度非常的快,一秒鐘能夠訪問 處理十億條指令和資料 術語 cpu主頻1g 而記憶體就慢很多,快的記憶體能夠達到幾...

mybatis快取 一級快取,二級快取

什麼是快取 為什麼使用快取 適用於快取的資料 二級快取的使用步驟 在主配置檔案配置 name cacheenabled value ture 讓當前的操作支援快取 在對映檔案中 select 標籤中配置 在select標籤中 新增乙個屬性 userscache true 先建立出乙個sqlsessi...