当前位置: 首页 > wzjs >正文

我在日本做动画视频网站自己建网站需要钱吗

我在日本做动画视频网站,自己建网站需要钱吗,中企动力是不是国企,重庆建筑行业认证培训网MyBatis 的缓存机制是其性能优化的重要特性,分为 一级缓存(本地缓存) 和 二级缓存(全局缓存),两者在作用范围、生命周期和使用场景上有显著差异。 一、一级缓存(Local Cache) 1. 核…

MyBatis 的缓存机制是其性能优化的重要特性,分为 一级缓存(本地缓存)二级缓存(全局缓存),两者在作用范围、生命周期和使用场景上有显著差异。


一、一级缓存(Local Cache)

1. 核心特性

特性

说明

作用范围

SqlSession 级别(同一个会话内有效)

默认状态

自动开启,无需配置

存储位置

内存中(BaseExecutor 中的 localCache 对象)

失效条件

执行 INSERT/UPDATE/DELETE、提交事务、关闭 SqlSession、手动清空缓存

2. 工作原理

3. 注意事项
  • 失效场景:跨 SqlSession 或执行写操作后缓存失效。
  • 强制刷新:可通过 sqlSession.clearCache() 手动清空。
  • 作用域隔离:不同 SqlSession 的缓存互不影响。

二、二级缓存(Global Cache)

1. 核心特性

特性

说明

作用范围

Mapper 级别(跨 SqlSession 共享)

默认状态

默认关闭,需手动配置

存储位置

内存或第三方缓存(如 Redis、Ehcache)

失效条件

执行 INSERT/UPDATE/DELETE、配置过期时间、手动清空

2. 配置方式
  1. 全局启用(mybatis-config.xml):
<settings><setting name="cacheEnabled" value="true"/>
</settings>
  1. Mapper 启用(Mapper.xml):
<mapper namespace="com.example.UserMapper"><cache eviction="LRU"               <!-- 回收策略(LRU/FIFO等) -->flushInterval="60000"        <!-- 刷新间隔(毫秒) -->size="1024"                  <!-- 最大缓存对象数 -->readOnly="true"/>            <!-- 是否只读 -->
</mapper>
  1. 实体类序列化
public class User implements Serializable { /* 字段 */ }
3. 工作原理

(应用1、应用2:同一个应用程序进程内的不同操作单元(例如:两个 HTTP 请求线程、两个业务方法调用等)。)

具体示例说明,场景:用户查询优化

// 线程1(应用1)
try (SqlSession sqlSession1 = sqlSessionFactory.openSession()) {UserMapper mapper1 = sqlSession1.getMapper(UserMapper.class);User user1 = mapper1.getUserById(1); // 首次查询,访问数据库并缓存结果
}// 线程2(应用2)
try (SqlSession sqlSession2 = sqlSessionFactory.openSession()) {UserMapper mapper2 = sqlSession2.getMapper(UserMapper.class);User user2 = mapper2.getUserById(1); // 命中二级缓存,直接返回结果
}
  • 结果user2 直接从二级缓存获取数据,无需访问数据库

4. 注意事项
  • 事务提交只有事务提交后,二级缓存才会更新。
  • 缓存穿透:若多个 Mapper 共享缓存(如跨 namespace),需使用 <cache-ref>
  • 第三方缓存:可通过集成 Redis 或 Ehcache 实现分布式缓存。

三、一级缓存 vs 二级缓存

对比维度

一级缓存

二级缓存

作用范围

SqlSession 内部

跨 SqlSession(Mapper 级别)

生命周期

随 SqlSession 销毁而清除

应用生命周期(除非手动清除或过期)

数据共享

无法共享

多个 SqlSession 共享

性能影响

高频重复查询优化

跨会话重复查询优化

适用场景

短时、高频的重复查询(如循环内查询)

长时间不变的数据(如配置表)

风险点

脏读(同一会话内数据不一致)

分布式环境数据一致性需额外处理

MyBatis SELECT 语句执行流程中一级缓存和二级缓存的查询顺序:


四、缓存最佳实践

  1. 一级缓存
    • 避免在长会话中执行大量查询(可能内存溢出)。
    • 写操作后及时提交事务,确保缓存更新。
  1. 二级缓存
    • 只缓存读多写少的数据(如配置表、历史数据)。
    • 分布式环境建议禁用默认缓存,改用 Redis。
    • 复杂对象确保实现 Serializable 接口。
    • 通过 <cache blocking="true"> 防止缓存击穿。
  1. 调试技巧
    • 日志中搜索 Cache Hit Ratio 查看缓存命中率。
    • 使用 @Options(flushCache = true) 强制刷新缓存。

通过合理使用缓存机制,可以显著减少数据库访问次数,但需权衡数据一致性和性能需求。

http://www.dtcms.com/wzjs/333690.html

相关文章:

  • 大型企业的微网站谁做百度账号购买1元40个
  • 自适应手机网站 css股票指数是什么意思
  • 智能网站开发小程序开发工具
  • 广州市开发区建设网站什么是百度指数
  • 辽宁建设工程信息网怎么查人员关键词优化难度查询
  • 贵州建设厅网站官网做优化的网站
  • 做外贸实用网站网页制作工具有哪些
  • 浙江建筑网站上海网络推广培训机构
  • 深圳 电子商务网站开发网站推广优化业务
  • 厦门制作网站哪家好设计一个公司网站多少钱
  • 公司网站如何做seo要点
  • 免费企业信息查询网站网络营销策划书步骤
  • 给你一个网站怎么做的吗怎么创建一个网页
  • 广州市品牌网站建设服务机构服务器域名怎么注册
  • 开发一个网站需要多少人优化百度涨
  • php网站怎么做伪静态第三方网站流量统计
  • 宝安做棋牌网站建设哪家服务好百度智能云
  • 网站404页面优化珠海企业网站建设
  • 免费招聘网站平台网站浏览器
  • 新民网站建设价格咨询广州竞价托管公司
  • 网站备案背景幕布打印多大网络营销的模式有哪些?
  • 网站开发 英文常州免费网站建站模板
  • 微商怎么做网站谷歌浏览器网页版在线
  • 网站建设时间360网站推广
  • 射洪网站建设西安网络推广公司网络推广
  • 哪个网站做海南二手房青岛做网络推广的公司有哪些
  • 酷家乐装修设计软件手机版免费版沈阳网络优化培训
  • 设计型网站建设帮我搜一下长沙做网络销售
  • 邮政编码html编写搜索引擎优化的内容包括
  • DW自动生成代码做网站长沙seo结算