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

后端:MyBatis緩存知識(shí)介紹,你學(xué)到了嗎?

存儲(chǔ) 存儲(chǔ)軟件
今天給大家分享一下MyBatis緩存知識(shí)介紹,希望對(duì)大家日常的開發(fā)當(dāng)中能有所幫助!

[[421367]]

今天給大家分享一下MyBatis緩存知識(shí)介紹,希望對(duì)大家日常的開發(fā)當(dāng)中能有所幫助!

一、MyBatis一級(jí)緩存

1、一級(jí)緩存介紹

當(dāng)我們的程序MyBatis開啟一次和數(shù)據(jù)庫的會(huì)話,MyBatis會(huì)自動(dòng)創(chuàng)建出一個(gè)SqlSession對(duì)象表示這一次數(shù)據(jù)庫的會(huì)話。在同一個(gè)數(shù)據(jù)庫會(huì)話當(dāng)中,MyBatis提供了一級(jí)緩存的方案優(yōu)化這部分場(chǎng)景,針對(duì)相同的SQL查詢語句,會(huì)優(yōu)先命中一級(jí)緩存,避免再次對(duì)數(shù)據(jù)庫進(jìn)行查詢,從而提高查詢性能、減輕數(shù)據(jù)庫的壓力。

開啟一級(jí)緩存

MyBatis的配置文件加上如下:

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

注意:localCacheScope 值有兩個(gè) SESSION(開啟一級(jí)緩存)/Statement(關(guān)閉一級(jí)緩存)

一級(jí)緩存失效場(chǎng)景

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

總結(jié)

  • MyBatis一級(jí)緩存的生命周期和SqlSession一致。默認(rèn)是開啟狀態(tài)。
  • MyBatis一級(jí)緩存采用HashMap性能較差
  • 分布式環(huán)境下對(duì)數(shù)據(jù)庫操作容易引起臟數(shù)據(jù),不推薦開啟MyBatis一級(jí)緩存

二、MyBatis二級(jí)緩存

1、二級(jí)緩存介紹

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

2、為什么有二級(jí)緩存?

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

當(dāng)開啟二級(jí)緩存數(shù)據(jù)庫查詢流程先后順序?yàn)椋憾?jí)緩存 -> 一級(jí)緩存 -> 數(shù)據(jù)庫

3、如何開啟二級(jí)緩存

二級(jí)緩存默認(rèn)是不開啟的,需要手動(dòng)開啟二級(jí)緩存,MyBatis的配置文件加上如下:

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

 

然后在還需要在 Mapper 的xml 配置文件中加入 標(biāo)簽

cache屬性介紹

eviction:設(shè)置回收策略,默認(rèn)是LRU策略。

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

flushinterval:緩存刷新間隔,緩存多長時(shí)間刷新一次,默認(rèn)不清空,設(shè)置一個(gè)毫秒值

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

size : 緩存可存放多少個(gè)元素

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

blocking:若緩存中找不到對(duì)應(yīng)的key,是否會(huì)一直blocking,直到有對(duì)應(yīng)的數(shù)據(jù)進(jìn)入緩存。

注意:

  • 在事務(wù)提交之前,并不會(huì)真正存儲(chǔ)到二級(jí)緩存,而是先存儲(chǔ)到一個(gè)臨時(shí)屬性,等事務(wù)提交之后才會(huì)真正存儲(chǔ)到二級(jí)緩存。因此需要commit事務(wù)之后才能生效。
  • 如果使用的是MyBatis默認(rèn)緩存,結(jié)果集對(duì)象需要實(shí)現(xiàn)序列化接口(Serializable),否則會(huì)報(bào)錯(cuò)。

4、二級(jí)緩存適用場(chǎng)景

  • 適合頻繁訪問且用戶對(duì)查詢結(jié)果實(shí)時(shí)性要求不是很高的查詢,

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

  • 適合查詢多寫入少的場(chǎng)景開啟。

因?yàn)槿魏螌?duì)數(shù)據(jù)庫的(insert、update、delete)操作都會(huì)觸發(fā)緩存的更新,從而造成緩存失效。

5、二級(jí)緩存失效場(chǎng)景

  • 第一次SqlSession 未提交
  • 對(duì)數(shù)據(jù)庫對(duì)應(yīng)的數(shù)據(jù)表執(zhí)行了的(insert、update、delete)操作

6、總結(jié)

mybatis二級(jí)緩存針對(duì)大多數(shù)的業(yè)務(wù)系統(tǒng)都不推薦使用,因?yàn)闃I(yè)務(wù)系統(tǒng)數(shù)據(jù)操作比較頻繁、自帶的二級(jí)緩存性能也不是很高。二級(jí)緩存很難起到實(shí)際的作用。可以引用第三方緩存。

個(gè)人博客網(wǎng)站:https://programmerblog.xyz

本文轉(zhuǎn)載自微信公眾號(hào)「IT技術(shù)分享社區(qū)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系IT技術(shù)分享社區(qū)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: IT技術(shù)分享社區(qū)
相關(guān)推薦

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類型轉(zhuǎn)換語言

2022-07-18 07:58:46

Spring工具工具類

2023-04-10 07:40:36

GraphQLRest通信模式

2023-04-27 08:18:10

MyBatis緩存存儲(chǔ)

2022-07-19 08:04:04

HTTP應(yīng)用層協(xié)議

2024-11-13 09:22:40

2023-06-03 00:05:18

TypeScriptJSDoc掃描器

2024-04-12 08:54:13

從庫數(shù)據(jù)庫應(yīng)用

2024-07-31 09:28:56

2024-10-18 11:48:00

2021-08-16 23:52:31

手機(jī)內(nèi)存技術(shù)

2024-08-12 15:44:06

2020-02-22 15:01:51

后端前端開發(fā)

2025-02-28 00:03:00

2015-05-26 09:35:29

運(yùn)維運(yùn)維危機(jī)云計(jì)算應(yīng)用

2023-06-06 08:14:18

核心Docker應(yīng)用程序

2023-04-26 22:52:19

視覺人臉檢測(cè)人臉對(duì)齊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久www| 精品九九九 | 中文字幕一二三 | 亚洲午夜精品视频 | 欧美日韩亚洲视频 | 日日日干干干 | 中文字幕乱码一区二区三区 | 国产999精品久久久 日本视频一区二区三区 | 国产一区二区精品在线 | 日韩视频在线免费观看 | 精品视频www| 国产黄色大片网站 | www.色婷婷| 国产精品福利视频 | 国产美女永久免费无遮挡 | 久久婷婷色 | av在线一区二区三区 | 亚洲人成在线播放 | 亚洲精品一区二区三区蜜桃久 | 日韩激情网 | 成人精品一区二区三区中文字幕 | 国产亚洲精品精品国产亚洲综合 | 日韩电影一区二区三区 | 精品欧美乱码久久久久久1区2区 | 久久香蕉精品视频 | 天天射天天干 | 欧美一区二区三区在线视频 | 日韩欧美成人一区二区三区 | av午夜电影 | 亚洲中午字幕 | 成人在线精品视频 | 精品成人av | 日韩日b视频| 中文字幕在线网 | 欧美天堂| 亚洲 欧美 另类 日韩 | 粉嫩高清一区二区三区 | 久草新在线 | 国产999精品久久久影片官网 | 天天操天天摸天天干 | 日韩视频中文字幕 |