MyBatis的一二级缓存区别

MyBatis的一级缓存和二级缓存之间存在以下主要区别:

  1. 缓存级别与作用域:
  • 一级缓存:也称为SqlSession级别的缓存,与数据库会话(SqlSession对象)绑定,并且默认开启。一级缓存的作用域仅限于同一个SqlSession。在同一个SqlSession中,当执行相同的SQL查询时,第一次会查询数据库并将结果存储在缓存中,第二次则直接从缓存中获取结果,无需再次查询数据库。但是,如果在两次查询之间执行了增删改操作,则SqlSession的缓存会被清空。
  • 二级缓存:也称为mapper级别的缓存,是全局的缓存,可以被多个SqlSession共享。二级缓存默认是关闭的,需要手动配置才能开启。当开启二级缓存后,同一个namespace下的所有操作语句都会影响到同一个Cache,即二级缓存被多个SqlSession共享。
  1. 缓存数据与数据共享:
  • 一级缓存:其缓存数据只会在同一次SqlSession会话中有效。当SqlSession结束或执行了增删改操作后,一级缓存中的数据将被清空。
  • 二级缓存:当开启后,同一个namespace下的所有操作语句都影响着同一个Cache。这意味着,不同的SqlSession可以共享二级缓存中的数据。
  1. 缓存查询流程:
  • 在开启二级缓存的情况下,数据的查询执行流程通常是先查询二级缓存,如果未找到则查询一级缓存,如果一级缓存中也未找到,则最终查询数据库。

总的来说,MyBatis的一级缓存和二级缓存各有其特点和用途。一级缓存主要关注于单个SqlSession的查询效率,而二级缓存则更关注于全局的查询效率和数据共享。根据具体的业务需求和应用场景,可以选择开启或关闭相应的缓存级别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13086.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32--HC-SR501 热释电人体红外感应模块

实物引脚图: 模块工作特性: 当人进入感应范围之后输出引脚输出高电平,人离开感应范围自动延时输出低电平 热释电效应: 热释电传感器,也称为人体红外传感器,其工作原理基于热释电效应。这种传感器由几个关…

Rust中使用Rocket框架返回html网页,返回一个基于 Handlebars (HBS) 模板的响应

在Rust中使用Rocket框架返回网页,通常涉及创建一个路由,该路由将返回一个HTML页面。Rocket是一个快速、易用且可扩展的Web框架,它允许你以一种简洁的方式定义路由和处理请求。 一、使用Rocket框架返回一个简单的HTML页面: 添加依…

手机怎么下载别人直播间视频

手机下载直播视频,您需要按照以下步骤进行操作: 1. 打开直播平台,获取正在直播的链接,就是直播间的地址,然后粘贴在直接视频解析工具里,就可以同步下载直播视频画面。 2. 获取直播视频解析工具方法&#…

项目管理-案例重点知识(成本管理)

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 三、成本管理 案例重点 成本管理 案例重点内容: (1)成本管理计划内容 (2)估算…

pcdn边缘云常见sla有哪些?如何避免被白嫖

PCDN(Point-to-Point Content Delivery Network)边缘云常见的SLA(Service Level Agreement)规则包括高峰期离线、服务时间、重传延时、限速等。这些规则是为了保证服务质量和用户体验。下面将详细解释这些规则,并提供一…

ANSYS Maxwell16 引导

Maxwell 使用 下载 https://download.csdn.net/download/wangjun_huster/89313272 安装 https://www.52txr.cn/2022/MaxwellInstall.html 入门

渗透相关面试+流量分析

文章目录 简单自我介绍上一个工作的主要内容Hvv的分组和流程你在hvv/攻防演练中取得了哪些成绩? 二、渗透相关面试题基础端口号以及入侵方式OSI七层协议响应状态码都有哪些?**WAF和IPS的区别**盲注是什么?java内存马类型**内存马有几种类型**…

2024最新大厂C++面试真题合集,大厂面试百日冲刺 bay11

CSIG 腾讯后台 new和malloc区别 "new"是C的一个操作符,它在创建对象时会自动调用构造函数。"malloc"是C语言的函数,仅仅分配内存。"new"返回的是对象类型的指针,类型与对象的类型保持一致,无需类…

谷歌全力反击 OpenAI:Google I/O 2024 揭晓 AI 新篇章,一场激动人心的技术盛宴

🚀 谷歌全力反击 OpenAI:Google I/O 2024 揭晓 AI 新篇章,一场激动人心的技术盛宴! 在这个人工智能的全新时代,只有谷歌能让你眼前一亮!来自全球瞩目的 Google I/O 2024 开发者大会,谷歌用一场…

Vue 之 后台管理系统的权限路由的管理

目录 前言实现理解三者的概念以及之间的关联账号(用户)角色菜单 用户权限授权相关概念实现代码实现登录跳转路由,路由守卫中进行权限验证按钮权限封装指令:调用(其中一个页面参考) 思路,操作流程…

学习java第七十一天

DI:依赖注入 依赖注入是spring容器中创建对象时给其设置依赖对象的方式,比如给spring一个清单,清单中列出了需要创建B对象以及其他的一些对象(可能包含了B类型中需要依赖对象),此时spring在创建B对象的时候…

探索 pinia-plugin-persistedstate:为 Pinia 状态持久化助力

在使用 Pinia 进行状态管理时,我们常常希望某些重要的状态能够持久化保存,以便在应用重新启动或不同会话中保持数据的连续性。这时候,pinia-plugin-persistedstate 就派上了大用场。 首先,我们当然需要安装这个插件: …

数学:矩阵范数的定义、常见的矩阵范数

1 算子范数【从属范数】 1.1 1-算子范数【列和范数】 :即对A的每列的绝对值求和再求其中的最大值 1.2 ∞-算子范数【行和范数】即对 A 的每行的绝对值求和再求其中的最大值 1.3 2-算子范数【谱范数】 学过奇异值分解就知道谱范数是最大奇异值/ 二次型的最大特…

力扣刷题day01

前期准备: 熟练掌握一门编程语言(Java,C,python)掌握数据结构与算法算法通关手册python 重学C 编程指北C 学C之前要学C语言,重点掌握指针和内存

大数据Spark教程从入门到精通第四篇:Spark快速上手

一:Spark快速上手 1:创建Maven项目 idea安装scala_idea scala插件-CSDN博客 代表了我们安装scala的maven环境已经准备好了,代码可以正常跑了

Redis分布式锁【简单版】

文章目录 概要例子1【SETNX EXPIRE】例子2【 Redisson 】 概要 redis分布式锁六种方案 SETNX EXPIRE 方案: 描述:使用Redis的SETNX命令来尝试设置一个键值对,如果该键不存在,则设置成功并设置过期时间,实现锁的功能…

Git使用(4):分支管理

一、新建分支 首先选择Git -> Branches... 然后选择 New Branch,输入新分支名称,例如dev。 可以看到右下角显示已经切换到新建的dev分支了。 push到远程仓库,可以看到新添加的分支。 二、切换分支与合并分支 为了演示合并分支&#xff0c…

【MySQL数据库开发设计规范】之SQL使用规范

欢迎点开这篇文章,自我介绍一下哈,本人姑苏老陈 ,是一名JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关注&…

Shell之高效文本处理命令

目录 一、排序命令—sort 基本语法 常用选项 二、去重命令—uniq 基本语法 常用选项 三、替换命令—tr 基本语法: 常用选项 四、裁剪命令—cut 基本语法: 常用选项 字符串分片 五、拆分命令—split 基本语法: 六、 文件…

NVM安装及VUE创建项目的N种方式

VUE 参考官网:https://cli.vuejs.org/zh/guide/ 目录 NVM安装 1.卸载node.js 2.安装nvm ​编辑​ 3.配置 4.使用nvm安装node.js 5.nvm常用命令 创建VUE项目 1.使用vue init 创建vue2(不推荐) 2.使用vue create创建vue2和3&#xff…