Mybatis 一級快取和二級快取

2021-10-01 06:16:25 字數 1359 閱讀 4597

概述

存在於記憶體中的臨時資料

作用減少和資料庫的互動次數,提高執行效率

適用場景

經常查詢並且不經常改變的;資料的正確與否對最終結果影響不大的。(資料的有效性和實時性)

不適用經常改變的資料;資料的正確與否對最終結果影響很大的

mybatis 使用到了兩種快取:本地快取(local cache)和二級快取(second level cache),但是在沒有配置的預設情況下,它只開啟一級快取。每當乙個新 session 被建立,mybatis 就會建立乙個與之相關聯的本地快取。任何在 session 執行過的查詢語句本身都會被儲存在本地快取中,那麼,相同的查詢語句和相同的引數所產生的更改就不會二度影響資料庫了。本地快取會被增刪改、提交事務、關閉事務以及關閉 session 所清空。

關閉sqlsession物件close();如果sqlsession呼叫了close()方法,會釋放掉一級快取perpetualcache物件,一級快取將不可用

手動清空快取clearcache();如果sqlsession呼叫了clearcache(),會清空perpetualcache物件中的資料,但是該物件仍可使用

sqlsession中執行了任何乙個更新資料的操作(update()、delete()、insert()),都會清空快取的資料,但是該物件可以繼續使用

sqlsessionfactory層面上的二級快取預設是不開啟的,實現二級快取的時候,mybatis要求返回的實體類必須是可序列化的,且不同的session使用後要釋放;

全域性配置:

區域性配置:

標籤使用:mybatis中還可以配置usercache和flushcache等配置項,usercache是用來設定是否禁用二級快取的,在statement中設定usecache=false可以禁用當前select語句的二級快取,即每次查詢都會發出sql去查詢,預設情況是true,即該sql使用二級快取

select * from user where id = #

使用:對於查詢多commit少且使用者對查詢結果實時性要求不高,此時採用mybatis二級快取技術降低資料庫訪問量,提高訪問速度。

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

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

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

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

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

1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 跟 web應用中 物件作用範圍類似。cacheenabled value true flushinterval 快取重新整...