MyBatis缓存详解

news2024/11/28 12:43:43

1. MyBatis缓存

MyBatis中的缓存是用来提高性能,减少数据库交互次数的机制。它分为一级缓存(Local Cache)和二级缓存(Global Cache)。

1.1 一级缓存(Local Cache)

  • 作用范围:一级缓存是与 SqlSession 关联的缓存。在同一个 SqlSession 内,执行相同的 SQL 语句将会返回缓存的结果,而不会再次访问数据库。
  • 生命周期:一级缓存是短暂的,当 SqlSession 结束(提交或回滚)时,缓存会被清空。
  • 开启与关闭:默认情况下,一级缓存是开启的。在同一个 SqlSession 中,如果执行相同的 SQL 查询,将会直接从缓存中获取数据,而不会再次查询数据库。

1.2 二级缓存(Global Cache)

  • 作用范围:二级缓存是跨 SqlSession 的缓存,作用于 Mapper 级别的数据缓存。
  • 生命周期:二级缓存的作用域是 mapper 命名空间级别,可以被多个 SqlSession 共享。它的生命周期要比一级缓存长,适合缓存跨会话的数据。
  • 开启与关闭:开启二级缓存需要手动配置。通过在 Mapper XML 文件中添加 元素进行配置,可定义缓存策略。

1.3 配置二级缓存示例

在 Mapper XML 文件中配置二级缓存的例子:

<mapper namespace="com.example.MyMapper">
    <cache
        eviction="FIFO"
        flushInterval="60000"
        size="512"
        readOnly="true"
    />
    <!-- 其他 SQL 映射 -->
</mapper>

通过合理配置缓存,可以减少数据库交互次数,提高查询性能。但需要注意,缓存配置需要根据具体业务场景和数据访问的特点来进行合理的配置,以避免脏数据和缓存一致性问题。

2. 相关问题及注意事项

  1. 什么情况下应该使用二级缓存?
    适合需要共享数据、跨会话的读操作频繁的场景,但需要根据业务情况和数据一致性要求谨慎配置。
  2. 缓存的有效性如何保证?
    缓存的有效性可通过缓存策略进行配置,比如设置缓存过期时间、清除策略等,以保证缓存数据的有效性。
  3. 二级缓存存在哪些缺点?
    可能导致数据不一致、缓存维护复杂、对于数据频繁更新的场景不太适用,需要注意缓存的时效性和一致性问题。
  4. 注意事项:
    在这里插入图片描述

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

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

相关文章

SpringBoot整合Kafka (一)

&#x1f4d1;前言 本文主要讲了SpringBoot整合Kafka文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&#xff1a;…

数据库备份和恢复

备份&#xff1a; 完全备份 增量备份 完全备份&#xff1a;将整个数据库完整的进行备份。 增量备份&#xff1a;在完全备份的基础之上&#xff0c;对后续新增的内容进行备份。 备份的需求&#xff1a; 备份的需求&#xff1a; 1、在生产环境中&#xff0c;数据的安全至关重…

计算领域高质量科技期刊分级目录

最后需要文件的小伙伴可以私信我哦&#xff0c;也可以自行在官网下载

汽车网络安全渗透测试概述

目录 1.汽车网络安全法规概述 1.1 国外标准 1.2 国内标准 2.汽车网络安全威胁分析 2.1 汽车网络安全资产定义 2.2 汽车网络安全影响场景及评级示例 3.汽车网络安全渗透测试描述 3.1 参考法规 3.2 渗透测试内容 4.小结 1.汽车网络安全法规概述 近年来&#xff0c;汽车…

UE5——源码阅读——100——渲染——高清截图

创建事件&#xff0c;用于代码的调试 获取当前客户端所属的World 标记是否在进行重入绘制 是否开始缓存区可视化转存帧&#xff0c;主要针对请求屏幕截图或电影转存 判断是否需要高清截图 这下面这个函数执行高清截图 是否需要缓存区的可视化转存 判断是否开始渲染 如果…

总结Kibana DevTools如何操作elasticsearch的常用语句

一、操作es的工具 ElasticSearch HeadKibana DevToolsElasticHQ 本文主要是总结Kibana DevTools操作es的语句。 二、搜索文档 1、根据ID查询单个记录 GET /course_idx/_doc/course:202、term 匹配"name"字段的值为"6789999"的文档 类似于sql语句中的等…

自查看看自己转本复习中存在哪些问题

缺乏清晰、强力的奋斗目标 “我想考本科”只不过是一种笼统的泛化的模糊的专转本目标&#xff0c;对潜意识学习潜能的刺激力度不大。 专转本备考中&#xff0c;更需要一个恒久、量化、清晰、明确、具体的目标牵引自我潜意识去努力&#xff0c;克服学习中的重重困难。比如一所…

软件测试丨从外包到自研再到大厂——我是怎么从6k到25k的

功能测试&#xff1a;理论上说&#xff0c;该定位的测试人员应该是对业务需求理解最透彻的群体&#xff0c;专注于用户角度的测试&#xff0c;组织整体质量实践&#xff0c;分析测试运行结果&#xff0c;驱动测试执行。当然除了业务技能过硬&#xff0c;常用的测试工具也是必须…

VMware安装CentOS最小化开发环境导引

目录 一、概要 二、介绍 三、下载 四、安装 4.1 创建虚拟机 4.2 安装CentOS 五、配置网卡 六、配置本地安装源 七、安装软件 7.1 gcc/g 7.2 C的atomic库 7.3 java 7.4 Cmake 7.5 MariaDB客户端&#xff08;兼容mysql&#xff09; 八、用户配置文件.bash_profile…

Python小试牛刀:GUI(图形界面)实现计算器UI界面(三)

上一篇&#xff1a;Python小试牛刀&#xff1a;GUI&#xff08;图形界面&#xff09;实现计算器UI界面(二)-CSDN博客 回顾前两篇文章&#xff0c;第一篇文章主要实现了计算器UI界面如何布局&#xff0c;以及简单概述Python常用的GUI库。第二篇文章主要实现了计算器UI界面按钮组…

shiro-cve2016-4437漏洞复现

一、漏洞特征 Apache Shiro是一款开源强大且易用的Java安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff0c;同时也能提供健壮的安全性。 因为在反序列化时,不会对其进行过滤,所以如果传入恶意代码将会造成安全问题 在 1.2.4 版本前, 加…

Disk Drill v5.3.1313(数据恢复备份)

Disk Drill是一款功能强大的数据恢复软件&#xff0c;它可以帮助用户恢复已删除、丢失、格式化或损坏的文件&#xff0c;并支持多种存储设备&#xff0c;包括计算机硬盘驱动器、外部硬盘、USB闪存驱动器、内存卡和其他存储介质。它和很多的文件系统都兼容&#xff0c;比如&…

如何快速搭建本地书库结合内网穿透实现公网随时远程访问

Kindle中国电子书店停运不要慌&#xff0c;十分钟搭建自己的在线书库随时随地看小说&#xff01; 文章目录 Kindle中国电子书店停运不要慌&#xff0c;十分钟搭建自己的在线书库随时随地看小说&#xff01;1.网络书库软件下载安装2.网络书库服务器设置3.内网穿透工具设置4.公网…

高压放大器在微机电工程中有哪些应用

高压放大器在微机电工程中有许多重要的应用。微机电工程是一种利用微电子加工技术制造微米级或纳米级机械结构并与电子元件集成的领域。高压放大器在MEMS领域发挥着关键的作用&#xff0c;下面将介绍几个高压放大器在MEMS工程中的应用。 MEMS驱动器&#xff1a;MEMS驱动器常用于…

CLIP Surgery论文阅读

CLIP Surgery for Better Explainability with Enhancement in Open-Vocabulary Tasks&#xff08;CVPR2023&#xff09; M norm ⁡ ( resize ⁡ ( reshape ⁡ ( F i ˉ ∥ F i ‾ ∥ 2 ⋅ ( F t ∥ F t ‾ ∥ 2 ) ⊤ ) ) ) M\operatorname{norm}\left(\operatorname{resize}\…

Linux认识协议

目录 TCP协议通信流程TCP三次握手数据传输过程四次挥手过程TCP 和 UDP 对比 认识协议协议的概念结构化数据的传输序列化和反序列化 网络版计算器服务端代码面向字节流 协议定制客户端代码编写代码测试守护进程守护进程创建 关于协议制定中使用现成方法实现 TCP协议通信流程 下…

华为H12-831题库

单选&#xff09;当IS-IS网络中有多条冗余链路时&#xff0c;可能会出现多条等价路由。关于IS-IS网络内的等价路由&#xff0c;以下哪个描述是错误的? A、当组网中存在的等价路由数量大于通过命令配置的数量&#xff0c;且这些路由优先级相同时&#xff0c;优选下一跳设备Sys…

三、机器学习基础知识:Python常用机器学习库(SKlearn)

文章目录 1、Scikit learn简介2、主要步骤3、数据预处理4、模型选择与算法评价 1、Scikit learn简介 Scikit learn 的简称是 SKlearn&#xff0c;专门提供了 Python 中实现机器学习的模块。Sklearn 是一个简单高效的数据分析算法工具&#xff0c;建立在 NumPy、SciPy和 Matplo…

深入研究Android内存

深入研究Android内存 Android应用程序开发时&#xff0c;我们始终意识到自己是Android硬件和操作系统的一部分。 从硬件角度来看&#xff0c;我们可以将Android手机分为不同级别。基本上&#xff0c;我们可以将它们分类为适用于低端硬件或API的入门级、中级和高级硬件-API手机…