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的 ...
随机推荐
- 2019牛客暑期多校训练营(第七场)A String (字符串的最小表示)
思路 这题思路如果是递归的话,应该是比较正确的.但是实际上只用切割两次就可以了. 先把原串从后向前切割一次,再把每一部分切割一次. 切两次的思路实际上是有漏洞的. 递归的思路,终点是,如果串长为1,或 ...
- Doc-Compose
一.安装sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s ...
- gitlab回退到某次commit——本地+远程
## 查看所有commits记录$ git log ## gitlab回退到某次commit$ git reset --hard 3018a546427e1f865524b82b488d6a2721d ...
- 思科AP-什么是COS AP?
COS:Click OS 所有新的wave 2 AP都带有COS.它建立在IOS之上,但behaves 不同. COS APs是Click OS APs(较新的AP型号,Wave 2等) 例如:18x ...
- html5或者移动端暴力定位城市-高德地图,可以取到当前的城市code,亲测好用
复制 粘贴到html中打开!!!!! <!doctype html> <html> <head> <meta charset="utf-8" ...
- 添加COOKIE
HttpCookie userinfoCookie = new HttpCookie("userinfo"); JObject o = new JObject();//JObjec ...
- connection String加密
aspnet_regiis -pe "connectionStrings" -app "/HG" -prov "ChrisProvider" ...
- jsp遍历集合
1.先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> ...
- 知乎模拟登录,支持验证码和保存 Cookies
import requests import time import re import base64 import hmac import hashlib import json import ma ...
- Apache Shiro安全(权限框架)学习笔记一
1. 授权需要继承 AuthorizingRealm 类, 并实现其 doGetAuthorizationInfo 方法 2. AuthorizingRealm 类继承自 Authenticating ...