成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

后端:MyBatis緩存知識介紹,你學到了嗎?

存儲 存儲軟件
今天給大家分享一下MyBatis緩存知識介紹,希望對大家日常的開發當中能有所幫助!

[[421367]]

今天給大家分享一下MyBatis緩存知識介紹,希望對大家日常的開發當中能有所幫助!

一、MyBatis一級緩存

1、一級緩存介紹

當我們的程序MyBatis開啟一次和數據庫的會話,MyBatis會自動創建出一個SqlSession對象表示這一次數據庫的會話。在同一個數據庫會話當中,MyBatis提供了一級緩存的方案優化這部分場景,針對相同的SQL查詢語句,會優先命中一級緩存,避免再次對數據庫進行查詢,從而提高查詢性能、減輕數據庫的壓力。

開啟一級緩存

MyBatis的配置文件加上如下:

  1. <setting name="localCacheScope" value="SESSION"/> 

注意:localCacheScope 值有兩個 SESSION(開啟一級緩存)/Statement(關閉一級緩存)

一級緩存失效場景

  • SqlSeesion實例不同
  • SqlSeesion實例相同,查詢條件不同
  • SqlSeesion對象相同,查詢條件也相同,但兩次查詢之間執行了增刪改操作
  • SqlSeesion對象相同,兩次查詢條件相同,中間無其它增刪改操作,但使用了clearCache()方法

總結

  • MyBatis一級緩存的生命周期和SqlSession一致。默認是開啟狀態。
  • MyBatis一級緩存采用HashMap性能較差
  • 分布式環境下對數據庫操作容易引起臟數據,不推薦開啟MyBatis一級緩存

二、MyBatis二級緩存

1、二級緩存介紹

MyBatis一級緩存生命周期是一個SqlSession內部,如果多個 SqlSession 需要共享緩存,則需要開啟二級緩存,開啟二級緩存后,會使用 CachingExecutor 裝飾 Executor,進入一級緩存的查詢流程前,先在CachingExecutor 進行二級緩存的查詢。

2、為什么有二級緩存?

  • 為了避免和數據庫頻繁交互。這是設計緩存的主要原因。
  • 當Spring和MyBatis整合時,每次查詢之后都要進行關閉sqlsession,關閉之后數據被清空。所以MyBatis和Spring整合之后,一級緩存是沒有意義的。如果開啟二級緩存,關閉sqlsession后,會把該sqlsession一級緩存中的數據添加到mapper namespace的二級緩存中。這樣,緩存在sqlsession關閉之后依然存在。

當開啟二級緩存數據庫查詢流程先后順序為:二級緩存 -> 一級緩存 -> 數據庫

3、如何開啟二級緩存

二級緩存默認是不開啟的,需要手動開啟二級緩存,MyBatis的配置文件加上如下:

  1. <settings> 
  2.    <setting name = "cacheEnabled" value = "true" /> 
  3.  </settings> 

 

然后在還需要在 Mapper 的xml 配置文件中加入 標簽

cache屬性介紹

eviction:設置回收策略,默認是LRU策略。

  • LRU - 最近最少回收,移除最長時間不被使用的對象
  • FIFO - 先進先出,按照緩存進入的順序來移除它們
  • SOFT - 軟引用,移除基于垃圾回收器狀態和軟引用規則的對象
  • WEAK - 弱引用,更積極的移除基于垃圾收集器和弱引用規則的對象

flushinterval:緩存刷新間隔,緩存多長時間刷新一次,默認不清空,設置一個毫秒值

readOnly: 是否只讀;true 只讀,MyBatis 認為所有從緩存中獲取數據的操作都是只讀操作,不會修改數據。MyBatis 為了加快獲取數據,直接就會將數據在緩存中的引用交給用戶。不安全,速度快。讀寫(默認):MyBatis 覺得數據可能會被修改

size : 緩存可存放多少個元素

type: 指定自定義緩存的全類名(實現Cache 接口即可)

blocking:若緩存中找不到對應的key,是否會一直blocking,直到有對應的數據進入緩存。

注意:

  • 在事務提交之前,并不會真正存儲到二級緩存,而是先存儲到一個臨時屬性,等事務提交之后才會真正存儲到二級緩存。因此需要commit事務之后才能生效。
  • 如果使用的是MyBatis默認緩存,結果集對象需要實現序列化接口(Serializable),否則會報錯。

4、二級緩存適用場景

  • 適合頻繁訪問且用戶對查詢結果實時性要求不是很高的查詢,

這時采用二級緩存可降低數據庫訪問量,提高數據庫的性能,例如:查詢耗時較高的統計報表SQL、按固定時間維度查詢的SQL(每月的訂單信息等等)。

  • 適合查詢多寫入少的場景開啟。

因為任何對數據庫的(insert、update、delete)操作都會觸發緩存的更新,從而造成緩存失效。

5、二級緩存失效場景

  • 第一次SqlSession 未提交
  • 對數據庫對應的數據表執行了的(insert、update、delete)操作

6、總結

mybatis二級緩存針對大多數的業務系統都不推薦使用,因為業務系統數據操作比較頻繁、自帶的二級緩存性能也不是很高。二級緩存很難起到實際的作用。可以引用第三方緩存。

個人博客網站:https://programmerblog.xyz

本文轉載自微信公眾號「IT技術分享社區」,可以通過以下二維碼關注。轉載本文請聯系IT技術分享社區公眾號。

 

責任編輯:武曉燕 來源: IT技術分享社區
相關推薦

2021-12-26 18:30:56

嵌入式ARM鏈接

2021-07-29 18:46:52

可視化類型圖形化

2023-10-16 08:55:43

Redisson分布式

2020-07-21 18:54:21

Rust類型轉換語言

2022-07-18 07:58:46

Spring工具工具類

2023-04-10 07:40:36

GraphQLRest通信模式

2023-04-27 08:18:10

MyBatis緩存存儲

2024-11-13 09:22:40

2023-06-03 00:05:18

TypeScriptJSDoc掃描器

2022-07-19 08:04:04

HTTP應用層協議

2024-04-12 08:54:13

從庫數據庫應用

2024-07-31 09:28:56

2024-10-18 11:48:00

2021-08-16 23:52:31

手機內存技術

2024-08-12 15:44:06

2020-02-22 15:01:51

后端前端開發

2025-02-28 00:03:00

2015-05-26 09:35:29

運維運維危機云計算應用

2023-06-06 08:14:18

核心Docker應用程序

2023-04-26 22:52:19

視覺人臉檢測人臉對齊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文一区二区视频 | 91九色视频 | 中文字幕一区二区三区日韩精品 | 久久久久久久久久爱 | 国产最新视频在线 | 免费毛片网站 | 欧美在线一区二区三区 | 欧美小视频在线观看 | 97精品国产 | 99r在线 | 午夜午夜精品一区二区三区文 | 日韩免费视频一区二区 | 性做久久久久久免费观看欧美 | 高清欧美性猛交xxxx黑人猛交 | 国产精品视频久久久 | 美女一级毛片 | 国产欧美在线一区二区 | 久久av网站 | 亚洲综合日韩精品欧美综合区 | 黄色a视频 | 成人看片在线观看 | 日韩福利一区 | 夜夜夜操| 先锋av资源网 | 国产农村妇女精品一区 | www国产成人免费观看视频,深夜成人网 | 久久精品视频网站 | 精品国产鲁一鲁一区二区张丽 | 免费久久久 | 亚洲国产精品suv | 国产精品久久久久久妇女6080 | 久久爱黑人激情av摘花 | 欧美视频在线播放 | 久久久久久99 | www精品美女久久久tv | 久久成人免费视频 | 亚洲精品一区二区另类图片 | 亚洲国产一区二区三区在线观看 | 精品av| 一级大黄| 国产精品视频一区二区三区 |