mabatis--查询缓存
1、mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。
2、mybatis提供一级缓存、二级缓存;
3、一级缓存是SqlSession级别的缓存。在SqlSession对象中,存在一个数据结构(HashMap)用于存储缓存数据。不同SqlSession之间的缓存数据区域是互不影响的;
--在执行查询操作之前,将先查询缓存区域中是否存在相应的数据,若不存在,则向数据库发出请求查询数据;若缓存中已存在要查询的数据,则直接返回数据,无需向数据库发起请求;
--若在两次查询中间,对数据库执行了commit (insert, delete, update)操作,mybatis将清空SqlSession的缓存区域,避免读取脏数据;
--mybatis默认支持一级缓存,无需在配置文件中配置;
4、二级缓存是mapper级别的,多个SqlSession去操作同一个mapper的sql语句,多个SqlSession可以共用二级缓存;
--开启二级缓存
1)配置文件中开启
<!-- 开启二级缓存,默认值为true -->
<setting name="cacheEnabled" value="true"/>
2)在mapper中开启
<!-- 开启 mapper 的 namespace 下的二级缓存 -->
<cache/>
--二级缓存区域是按照命名空间(namespace)划分的;
--若有一个SqlSession对象执行了commit(insert, delete, update)操作,将清空二级缓存区域;
--需要将pojo类实现序列化接口,为了将缓存数据取出执行反序列化操作,因为二级缓存数据存储介质有多种,不一定在内存中;
--可以在<select>等中设置 useCache="false" 禁用二级缓存,默认为true;
--在mapper的同一个namespace中,如果有其他insert,updatem,delete操作数据后需要刷新缓存,如果不执行则会出现脏读。可以在<insert>中设置flushCache="true"开启;
--二级缓存引用场景:查询结果实时性要求不高时、采用耗时较高的sql时;
--可以设置刷新间隔时间,由mybatis每隔一段时间自动清空缓存,根据数据变化频率设置缓存刷新间隔(flushInterval);
5、二级缓存局限性:mybatis二级缓存对细粒度的数据级别的缓存实现不好。
mabatis--查询缓存的更多相关文章
- hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...
- mybatis入门基础(八)-----查询缓存
一.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 1.1. 一级缓存是sqlSession级别的缓存.在操作数据库时需要构造 ...
- mybatis中的查询缓存
一: 查询缓存 Mybatis提供查询缓存,用于减轻数据压力,提高数据库压力. Mybatis提供一级缓存和二级缓存. 在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(Hash ...
- 11g新特性-查询缓存(1)
众所周知,访问内存比访问硬盘快得多,除非硬盘体系发生革命性的改变.可以说缓存在Oracle里面无处不在,结果集缓存(Result Cache)是Oracle Database 11g新引入的功能,引入 ...
- 【Mybatis框架】查询缓存(一级缓存)
做Java的各位程序员们,估计SSH和SSM是我们的基础必备框架.也就是说我们都已经至少接触过了这两套常见的集成框架.当我们用SSH的时候,相信很多人都接触过hibernate的两级缓存,同样,相对应 ...
- MySQL查询缓存
MySQL查询缓存 用于保存MySQL查询语句返回的完整结果,被命中时,MySQL会立即返回结果,省去解析.优化和执行等阶段. 如何检查缓存? MySQL保存结果于缓存中: 把SELECT语句本身做h ...
- mysql查询缓存参数
由人说mysql查询缓存是鸡肋,也许吧,但还是要看场景: 查询缓存: 开启查询缓存:/etc/my.cnfquery_cache_type=1 重启
- [原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate <查询缓存>
查询缓存: 定义:查询缓存它是基于二级缓存的,可以保存普通属性查询的结果,查询对象实体时,他会保存id作为键,查询结果作为值,下个对象访问时,可以直接查到 查询缓存查询实体对象时,显著的特点是,会执行 ...
- 对MySql查询缓存及SQL Server过程缓存的理解及总结
一.MySql的Query Cache 1.Query Cache MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集.MySql在实现Query Cache的 ...
随机推荐
- iOS开发之通过Framework建立项目依赖
https://www.jianshu.com/p/d146db167bf3 项目开发时经常会遇到个别模块想打包成framework的情况,传统的打包方式太繁琐,反复测试时很麻烦,不如一个项目管理来得 ...
- vue 中 限制 input 输入数字、小数位数等
限制小数位数 <input type="number" @keydown="handleInput2" placeholder="请输入或查看& ...
- excel 动太生成sql 复制(ctrl+c)即可使用 【即用excel中concatenate函数拼接sql】
如图所示:有test_user表 id(自增).code.name.age.create_time几个字段. 使用函数:=CONCATENATE("insert into test_user ...
- DBC的故事(二)
上篇介绍了MSB和LSB,此篇介绍更复杂的:有符号和无符号数. 1.信号符号 CAN信号有其物理意义,如温度.扭矩等,这些信号是有负值的,常见的解决方案有2种: 1)把offset设成负值 如温度of ...
- 将网站转换为Web应用程序
1.新建web应用程序,清除应用程序中默认生成的文件 2.将网站中的文件复制到web应用程序中 3.将网站的App_Code文件重命名 4.右键web应用程序,点击将转换为应用程序项目 5.添加引用 ...
- Educational Codeforces Round 81 + Gym 102267
UPD:变色了!!!历史最高1618~ Educational Codeforces Round 81 (Rated for Div. 2) The 2019 University of Jordan ...
- 二叉树(3)AVL 树
封装基于 BinaryTreeOperations 的 AVL 树(一种自平衡的二叉查找树). 除了提供 BinaryTreeOperations 中的部分基础接口外,增加按键的插入 和 按键或节点指 ...
- 操作系统OS - 常见系统的调度算法
https://en.wikipedia.org/wiki/Scheduling_(computing) 在wiki的下面可以找到
- UDP通讯代码
UDP客户端代码: import socket # 创建套接字 socket.AF_INET:IPV4 socket.SOCK_DGRAM:UDP协议 udp_client=socket.socket ...
- ElementUI el-message 提示信息的用法
引入message Element 注册了一个$message方法用于调用,Message 可以接收一个字符串或一个 VNode 作为参数,它会被显示为正文内容. Element 为 Vue.prot ...