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

学网站建设的工资高吗南京怎样优化关键词排名

学网站建设的工资高吗,南京怎样优化关键词排名,北京示范校建设网站,免费网站建设公司代理在 MyBatis 中,缓存分为 一级缓存 和 二级缓存。它们的作用是减少数据库查询次数,提高性能。然而,在某些情况下,缓存会失效或被清空。 一、一级缓存(sqlSession 级别缓存) 1. 一级缓存的基本特性 一级缓存…

在 MyBatis 中,缓存分为 一级缓存二级缓存。它们的作用是减少数据库查询次数,提高性能。然而,在某些情况下,缓存会失效或被清空。

一、一级缓存(sqlSession 级别缓存)

1. 一级缓存的基本特性
  • 一级缓存默认开启,作用范围是 SqlSession 的生命周期。
  • 在同一个 SqlSession 内,如果两次查询条件完全相同且没有发生更新操作,则第二次查询会直接从缓存中获取结果。
2. 一级缓存失效情形

以下情况会导致一级缓存失效:

  1. SqlSession 关闭或提交事务后

    • 当 SqlSession 被关闭或提交事务时,一级缓存会被清空。
    • 示例:
    sqlSession.commit(); // 提交事务后,一级缓存失效
    sqlSession.close();   // 关闭 SqlSession 后,一级缓存失效
  2. 执行了增删改操作

    • 如果在同一个 SqlSession 中执行了 insertupdate 或 delete 操作,MyBatis 会清空一级缓存。
    • 原因:这些操作可能会影响表中的数据,导致缓存中的数据与数据库不一致。
  3. 手动调用 clearCache() 方法

    • 开发者可以手动调用 sqlSession.clearCache() 来清空当前 SqlSession 的一级缓存。
  4. 查询条件不同

    • 如果两次查询的条件不同(即使只差一个参数),MyBatis 不会使用缓存。
  5. 查询间隔过长

    • 如果两次查询之间的时间间隔超过了 MyBatis 的缓存刷新时间(默认无限制),缓存可能会失效。

二、二级缓存(Mapper 级别缓存)

1. 二级缓存的基本特性
  • 二级缓存的作用范围是整个 Mapper 文件(即命名空间 namespace),多个 SqlSession 可以共享同一个二级缓存。
  • 默认情况下,二级缓存需要手动配置才能启用。
2. 配置二级缓存
<!-- 在 Mapper 文件中启用二级缓存 -->
<cache />
3. 二级缓存失效情形

以下情况会导致二级缓存失效:

  1. 未启用二级缓存

    • 如果未在 Mapper 文件中配置 <cache> 标签,或者未在全局配置文件中启用二级缓存(settings.cacheEnabled=true),则不会使用二级缓存。
  2. Mapper 方法未设置 useCache=true

    • 默认情况下,查询方法会使用二级缓存。如果将 useCache 设置为 false,则该方法不会使用二级缓存。
    • 示例:
    <select id="findUserById" resultType="User" useCache="false">SELECT * FROM users WHERE id = #{id}
    </select>
  3. Mapper 方法设置了 flushCache=true

    • 如果查询方法设置了 flushCache=true,则每次执行该方法时都会清空二级缓存。
    • 示例:
    <select id="findUserById" resultType="User" flushCache="true">SELECT * FROM users WHERE id = #{id}
    </select>
  4. 执行了增删改操作

    • 如果在同一个 Mapper 中执行了 insertupdate 或 delete 操作,默认会清空该 Mapper 的二级缓存。
    • 示例:
    <update id="updateUser">UPDATE users SET name = #{name} WHERE id = #{id}
    </update>
  5. 手动调用 clearCache() 方法

    • 可以通过 sqlSession.clearCache() 清空当前 SqlSession 的一级缓存和二级缓存。
  6. 缓存策略冲突

    • 如果多个 Mapper 文件共享同一个二级缓存,但它们的缓存策略(如 LRU、FIFO 等)不一致,可能导致缓存失效。
  7. 缓存超时

    • 如果设置了缓存的过期时间(通过 <cache> 标签的 eviction 属性),当缓存数据超过设定时间后会被清除。
    • 示例:
    <cache eviction="LRU" flushInterval="60000" /> <!-- 缓存每 60 秒刷新一次 -->
  8. 跨命名空间访问

    • 如果两个不同的 Mapper 文件共享同一个二级缓存,但在其中一个 Mapper 中发生了增删改操作,另一个 Mapper 的缓存也会被清空。
  9. 自定义缓存实现问题

    • 如果实现了自定义缓存(通过 <cache-ref> 或自定义 Cache 接口),但逻辑有问题,可能导致缓存失效。

三、总结

缓存类型失效情形
一级缓存

1. SqlSession 关闭或提交事务

2. 执行增删改操作

3. 手动调用 clearCache()

4. 查询条件不同

5. 查询间隔过长

二级缓存

1. 未启用二级缓存

2. useCache=false

3. flushCache=true

4. 执行增删改操作

5. 手动调用 clearCache()

6. 缓存策略冲突

7. 缓存超时

8. 跨命名空间访问

9. 自定义缓存实现问题

了解这些缓存失效的情形有助于更好地控制缓存行为,避免因缓存不一致导致的数据错误。

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

相关文章:

  • 域名备案中网站负责人seo关键词排名技术
  • 上海工商网上办事大厅官网seo优化论坛
  • 网站做ppt模板关键词林俊杰mp3免费下载
  • 怎么做淘宝客手机网站长沙百度seo
  • 自己怎么建设一个网站无锡百度竞价
  • 网站后台建设计划书网络上哪里可以做推广
  • 比较好的网页网站设计夜狼seo
  • 建设网站 软件阿里云网站搭建
  • 电商软件定制seo计费怎么刷关键词的
  • 武汉优秀历史建筑网站列举网络推广的方式
  • wordpress建站做客户端朋友圈推广平台
  • cms如何做中英网站网站注册查询
  • 网站专题页面设计欣赏网站推广的渠道有哪些
  • 怎样用百度做网站优化刷网站百度关键词软件
  • 做网站公司yuanmus网络软文发布平台
  • 泉州模板建站平台营销网站方案设计
  • 龙岗网站设计百度商业账号登录
  • 门户网站建设滞后站长之家怎么用
  • 网站开发容易学吗个人免费域名注册网站
  • 社区网站源码关键词挖掘啊爱站网
  • 成都网站搜索优化免费友情链接平台
  • 百度入驻seo搜索引擎优化技术教程
  • 潍坊营销型网站建设东莞网站建设工作
  • 福州建设网站公司上海网站制作公司
  • 网站建立与推广营销策划方案怎么写
  • 网页设计网站建设招聘爱站网ip反查域名
  • 网站建设流程ppt百度搜索下载app
  • 网站头像有啥做会清晰南通seo网站优化软件
  • 网站开发工程师6十大暗网搜索引擎
  • 做实验流程图的网站广州百度推广客服电话