1. 程式人生 > 實用技巧 >itsm軟體_itsm軟體的主要功能

itsm軟體_itsm軟體的主要功能

>>> hot3.png

1.一級快取

173620_QgpN_2651008.png

一級快取區域是根據SqlSession為單位劃分的。

每次查詢會先從快取區域找,如果找不到從資料庫查詢,查詢到資料將資料寫入快取。

Mybatis內部儲存快取使用一個HashMap,key為hashCode+sqlId+Sql語句。value為從查詢出來對映生成的java物件

sqlSession執行insert、update、delete等操作commit提交後會清空快取區域。

2.二級快取

173647_3NF6_2651008.png

二級快取區域是根據mapper的namespace劃分的,相同namespace的mapper查詢資料放在同一個區域,如果使用mapper代理方法每個mapper的namespace都不同,此時可以理解為二級快取區域是根據mapper劃分。

每次查詢會先從快取區域找,如果找不到從資料庫查詢,查詢到資料將資料寫入快取。

Mybatis內部儲存快取使用一個HashMap,key為hashCode+sqlId+Sql語句。value為從查詢出來對映生成的java物件

sqlSession執行insert、update、delete等操作commit提交後會清空快取區域。

3.開啟二級快取

3.1在核心配置檔案SqlMapConfig.xml中加入

<settingname="cacheEnabled"value="true"/>

3.2要在你的Mapper對映檔案中新增一行:<cache/>,表示此mapper開啟二級快取

4.禁用二級快取

在statement中設定useCache=false可以禁用當前select語句的二級快取,即每次查詢都會發出sql去查詢,預設情況是true,即該sql使用二級快取。

<select id="findOrderListResultMap" resultMap="ordersUserMap" useCache="false">

5.重新整理快取

在mapper的同一個namespace中,如果有其它insert、update、delete操作資料後需要重新整理快取,如果不執行重新整理快取會出現髒讀。

設定statement配置中的flushCache="true"屬性,預設情況下為true即重新整理快取,如果改成false則不會重新整理。使用快取時如果手動修改資料庫表中的查詢資料會出現髒讀。

如下:

<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User" flushCache="true">

6.Mybatis Cache引數

flushInterval(重新整理間隔)可以被設定為任意的正整數,而且它們代表一個合理的毫秒形式的時間段。預設情況是不設定,也就是沒有重新整理間隔,快取僅僅呼叫語句時重新整理。

size(引用數目)可以被設定為任意正整數,要記住你快取的物件數目和你執行環境的可用記憶體資源數目。預設值是1024。

readOnly(只讀)屬性可以被設定為true或false。只讀的快取會給所有呼叫者返回快取物件的相同例項。因此這些物件不能被修改。這提供了很重要的效能優勢。可讀寫的快取會返回快取物件的拷貝(通過序列化)。這會慢一些,但是安全,因此預設是false。

如下例子:

<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

這個更高階的配置建立了一個FIFO快取,並每隔60秒重新整理,存數結果物件或列表的512個引用,而且返回的物件被認為是隻讀的,因此在不同執行緒中的呼叫者之間修改它們會導致衝突。可用的收回策略有,預設的是LRU:

1.LRU–最近最少使用的:移除最長時間不被使用的物件。

2.FIFO–先進先出:按物件進入快取的順序來移除它們。

3.SOFT–軟引用:移除基於垃圾回收器狀態和軟引用規則的物件。

4.WEAK–弱引用:更積極地移除基於垃圾收集器狀態和弱引用規則的物件。

174233_CZZ6_2651008.png

轉載於:https://my.oschina.net/dongwt/blog/813085