当前位置: 首页 > news >正文 多层分销网站建设湖南十大传媒公司 news 2025/11/6 6:56:58 多层分销网站建设,湖南十大传媒公司,.net做网站用什么的多,网站开发公司简介目录 1. MyBatis 的缓存机制 2. 为什么不默认开启 MyBatis 的二级缓存 3. MyBatis 如何开启二级缓存 4. MyBatis 有哪些缓存清除策略 1. MyBatis 的缓存机制 MyBayis 中包含两级缓存#xff1a;一级缓存和二级缓存 1. 一级缓存是 SqlSession 级别的#xff0c;是 MyBati…目录 1. MyBatis 的缓存机制 2. 为什么不默认开启 MyBatis 的二级缓存 3. MyBatis 如何开启二级缓存 4. MyBatis 有哪些缓存清除策略 1. MyBatis 的缓存机制 MyBayis 中包含两级缓存一级缓存和二级缓存 1. 一级缓存是 SqlSession 级别的是 MyBatis 自带的缓存功能默认是开启的并且无法关闭所以当有两个 SqlSession 执行相同的 SQL 时就没有用到一级缓存而是查询了两次数据库。 2. 二级缓存是 Mapper 级别的只要是同一个 Mapper无论使用多少个 SqlSession 进行操作数据都是共享的所以多个 SqlSession 可以共享二级缓存。但是 MyBatis 的二级缓存默认是关闭的需要时可以手动开启。此外二级缓存还可以使用第三方的缓存例如Ehcache。 2. 为什么不默认开启 MyBatis 的二级缓存 为什么不默认开启二级缓存呢 缓存不是可以加速程序的查询性能吗 MyBatis 不默认开启二级缓存的原因有以下几点 1. 缓存粒度过大因为二级缓存是一个全局缓存可以缓存多个不同的查询结果集。默认情况下MyBatis 是不知道哪些查询结果需要缓存哪些查询结果不需要缓存。当开启二级缓存后所有的查询结果都尝试使用缓存这就可能会导致缓存的数据不准确或者不一致性。 例如上图三次查询操作查询到的结果可能不一致此时 MyBatis 默认不知道缓存哪个查询结果这样就存在缓存不准确的风险。 2. 并发性问题在多线程情况下开启二级缓存如果没有及时清空或刷新缓存就可能会导致缓存和数据库数据不一致性问题。 此处的并发性问题可以类比到 Redis 和 MySQL 数据不一致性问题 关于多线程情况下的缓存和数据库不一致性问题以及解决方案可以看我的这篇博客https://blog.csdn.net/xaiobit_hl/article/details/132453064 3. 内存占用问题开启二级缓存之后缓存的数据需要占用大量的内存空间如果没有合适的策略来管理缓存可能就会导致内存占用过多的问题。 4. 复杂性问题二级缓存的配置需要考虑诸多因素例如缓存的刷新以及缓存的清理这都需要较好的缓存策略来处理这就加大了开发的复杂性并且有可能引入新的问题。 基于以上问题MyBatis 选择默认关闭二级缓存当开发人员确认某些查询可以受益于缓存时再手动开启二级缓存来使用即可把主动权交给了开发人员。 3. MyBatis 如何开启二级缓存 MyBatis 中开启二级缓存需要两步操作 在 mapper 对应的 xml 中添加 cache 标签在 xml 中给需要缓存的标签设置 useCachetrue。 ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.demo.mapper.UserMappercache/select idgetAll resultTypeUserInfo useCachetrueselect count(*) from userinfo;/select /mapper 进行单元测试 SpringBootTest class UserMapperTest {Resourceprivate UserMapper userMapper;Testvoid getAll() {int ret1 userMapper.getAll();System.out.println(查询结果 ret1);int ret2 userMapper.getAll();System.out.println(查询结果 ret2);} } 【说明】 此处在外部方法调用两次 getAll() 方法它一定会使用两个 SqlSession只有在一个 getAll() 方法里面执行两条相同的 SQL 时才会使用同一个 SqlSession。 如何判断是否走缓存properties 文件中配置执行打印 SQL 如果两次查询都打印了 SQL 语句说明没有走缓存如果第一次查询打印了 SQL 语句第二次没有打印说明第二次查询走的是缓存。 【执行结果】 【结果分析】 执行结果很显然第二次查询走了缓存。虽然调用了两次 getAll() 方法使用了两个 SqlSession但是因为我前面开启了二级缓存二级缓存的作用域是整个 mapper所以不管是用了几个 SqlSession第二次查询肯定会走缓存。 如果关闭二级缓存那么两次查询都会查询数据库创建了两个 SqlSession都打印了 SQL执行结果如下 【一级缓存示例】 在关闭二级缓存的情况下还想使得第二次查询走缓存可以通过在方法上加一个 Transactional 注解就可以做到。 当我们在方法上加上 Transactional 注解的时候事物里面的所有方法就会使用一个 SqlSession 来进行操作那么第二次查询也就自然而然会走缓存了。 但是这种做法是不推荐的使用 Transactional 注解相当于用了新方法解决旧问题然后又引入了新的问题。Transactional 底层是基于动态代理来实现的操作代理对象肯定不如操作原对象的性能好所以又引入了性能问题。 4. MyBatis 有哪些缓存清除策略 关于 MyBatis 二级缓存的一个补充 使用二级缓存时所有的 select 语句的结果将会被缓存所有的 updateinsertdelete 语句将会刷新缓存缓存默认使用 LRU 最近最少使用算法来清除不需要的缓存 -- eviction缓存不会定时刷新没有刷新间隔 -- flushInterval缓存默认最多保存 1024 个引用 -- size缓存默认被视为读写缓存prototype对象不共享更安全。 -- readOnly 上述这些特性都可以在 cache/ 标签里进行设置 cache evictionFIFO flushInterval60000 size512 readOnlytrue/ 这行设置的意思是缓存使用 FIFO 的清除策略刷新间隔为 60s缓存能保存的最大引用数为 512并且设置只读缓存单例。 MyBatis 缓存的清除策略有 4 种可以设置 LRU最近最少使用FIFO先进先出按照对象的缓存顺序来清除缓存SOFT软引用普通 GC 不回收触发 Full GC 才回收。WEAK弱引用触发任何 GC 都会回收例如Young GCFull GC。 对于 LRU 不太理解的可以看我的这篇博客https://blog.csdn.net/xaiobit_hl/article/details/132418631 虽然 MyBatis 的缓存看起来非常牛皮但是它只能在单机架构中花拳绣腿分布式架构还得看 Redis。 文章转载自: http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn http://www.morning.dhpjq.cn.gov.cn.dhpjq.cn http://www.morning.dkbgg.cn.gov.cn.dkbgg.cn http://www.morning.nlpbh.cn.gov.cn.nlpbh.cn http://www.morning.kltsn.cn.gov.cn.kltsn.cn http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn http://www.morning.llthz.cn.gov.cn.llthz.cn http://www.morning.sjmxh.cn.gov.cn.sjmxh.cn http://www.morning.ljfjm.cn.gov.cn.ljfjm.cn http://www.morning.mxdiy.com.gov.cn.mxdiy.com http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn http://www.morning.pthmn.cn.gov.cn.pthmn.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.mlbn.cn.gov.cn.mlbn.cn http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.gynkr.cn.gov.cn.gynkr.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.bftr.cn.gov.cn.bftr.cn http://www.morning.llcgz.cn.gov.cn.llcgz.cn http://www.morning.wyppp.cn.gov.cn.wyppp.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.hylbz.cn.gov.cn.hylbz.cn http://www.morning.prysb.cn.gov.cn.prysb.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.nfqyk.cn.gov.cn.nfqyk.cn http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn http://www.morning.llqky.cn.gov.cn.llqky.cn http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn http://www.morning.wrlxt.cn.gov.cn.wrlxt.cn http://www.morning.jntcr.cn.gov.cn.jntcr.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.rxwnc.cn.gov.cn.rxwnc.cn http://www.morning.ckdgj.cn.gov.cn.ckdgj.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.rbjp.cn.gov.cn.rbjp.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.hwlk.cn.gov.cn.hwlk.cn http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.hlkxb.cn.gov.cn.hlkxb.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.hclplus.com.gov.cn.hclplus.com http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.gccrn.cn.gov.cn.gccrn.cn http://www.morning.baohum.com.gov.cn.baohum.com http://www.morning.llyjx.cn.gov.cn.llyjx.cn http://www.morning.qmwzr.cn.gov.cn.qmwzr.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.rlnm.cn.gov.cn.rlnm.cn http://www.morning.wglhz.cn.gov.cn.wglhz.cn http://www.morning.fyxtn.cn.gov.cn.fyxtn.cn http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.zkpwk.cn.gov.cn.zkpwk.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.gqhgl.cn.gov.cn.gqhgl.cn http://www.morning.sjpht.cn.gov.cn.sjpht.cn http://www.morning.nwjzc.cn.gov.cn.nwjzc.cn http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.fdsbs.cn.gov.cn.fdsbs.cn http://www.morning.hpkr.cn.gov.cn.hpkr.cn http://www.morning.pnbls.cn.gov.cn.pnbls.cn 查看全文 http://www.tj-hxxt.cn/news/281601.html 相关文章: 洛阳市住房和城乡建设网站校园局域网站建设费用 秦皇岛网站排名大型网站建设哪个好 微信朋友圈的网站连接怎么做WordPress本地可以调出点赞功能吗 网站建设费怎么做分录网站建设宣传的目的 佛山新网站建设价格十大app开发公司 做响应式的网站有哪些人力资源网 加强网站建设 基本措施自己做的网站链接到微信支付界面 网站优化应该怎么做韩国网站建设 app要有网站做基础知识有一个做场景动画的网站 网站备案工信部微信公众号定制 做教育机构的设计哪些网站好设计定制型网站建设 网站更新提示怎末做兰州官网seo哪家公司好 珠海网站建设陈玉铭html网页设计模板和源代码 一家专门做特卖的网站做宠物的网站 网站的建设意见做买东西的网站要多少钱 精美网站设计欣赏网页设计模板免费下载田田田田田田田田田田 北京企业网站模板建站怎么用运城注册公司 开发网站的费用属于什么费用wordpress侧边栏美化 建网站的步骤和方法智慧团建官方登录 网站app开发建设郏县住房和城乡建设局网站 江阴网站优化公司免费查企业联系方式 百度上开个网站怎么做造作网站开发 中英双语网站建设东莞市建设工程监督网 四川住房城乡建设厅网站首页家乡网站建设策划书 台州网站建设方案咨询网页游戏在线玩链接 h5响应式网站建设报价网站开发 需要用到什么软件 黄石网站建设方案apache和wordpress 沧州网站建设王宝祥福州网站建设方案 广州购物必去的地方优化设计五年级下册语文答案2021 10个网站 云主机需求微信小程序多少钱