MYSQL的一级缓存二级缓存

一级缓存:
一级缓存也称本地缓存,session级别的缓存,一级缓存是默认开启的,与数据库同一次的会话期间查询到的数据会放在本地缓存中,如果有需要获取相同的数据,则直接从缓存中取,就不会再次查询数据库。在日常的开发中,经常会有相同的sql执行多次的情况,mybatis就提供了一级缓存来优化这些查询,避免多次请求数据库,重点是它的作用域为一次sqlSession会话。

二级缓存:
二级缓存是全局缓存,是一个基于namespace级别的缓存,作用域更为广泛,不局限于一个sqlSession,可以在多个sqlSession之间共享,mybatis的二级缓存默认也是开启的,但是由于它的作用域是namespace,所以还需要在mapper.xml中开启才能生效,只需要加入cache标签即可。当要访问数据库形成一个会话查询一条数据时,这个数据就会被放在当前会话的一级缓存中,如果这个时候会话关闭了,那么以及缓存中的数据会被保存到二级缓存中,新的会话查询信息就会参照二级缓存,需要注意的是不同的namespaace会被防止到自己对应的缓存中去。
小结:
简单来说就是缓存首先一进来,就会先去二级缓存中查询,如果没有就去一级缓存中查找,一级缓存中没有的话,最后进入数据库中查找。作用顺序为二级缓存>一级缓存>数据库。需要注意的是,一级缓存作用域仅限于同一sqlSession中,无法感知到其他sqlSession中的数据变更,所以极易产生脏数据,而二级缓存可以通过cache-ref让多个mapper.xml共享一个namespace,从而实现缓存共享,但多表联动查询的时候会比较麻烦,由此,在生产环境的时候可以关闭一级缓存(statement级别),有需要的话可以打开二级缓存。如果是分布式应用的话, 这里我们不建议开启,具体原因大家可以了解一下哟~

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL并没有官方支持的一级缓存二级缓存。引用中提到的一级缓存和引用中提到的二级缓存MyBatis框架中的缓存机制。MySQL自身并没有这样的缓存机制。在MySQL中,通常会使用MySQL自身的查询缓存来优化查询性能。 MySQL的查询缓存是一种基于SQL语句的缓存机制,它会将查询结果缓存在内存中以供后续查询使用。当执行一个查询语句时,MySQL会首先检查查询缓存是否有该查询的缓存结果,如果有,则直接返回缓存结果,而不需要再次执行查询操作。这可以大大提高查询性能。然而,MySQL的查询缓存机制存在一些缺陷,比如对于更新操作的表,如果执行了更新操作,那么相应的查询缓存将被清除,从而导致下一次查询无法命中缓存。 除了MySQL自身的查询缓存,还可以通过其他方式来实现缓存。比如,使用外部的缓存系统(如Redis、Memcached等)来缓存查询结果,或者在应用程序层面通过代码实现缓存。这些缓存方式可以提供更灵活、更可控的缓存机制,但也需要开发人员自行实现和管理。 总结来说,MySQL本身并没有一级缓存二级缓存的概念,但可以通过MySQL的查询缓存或其他缓存机制来提高查询性能和数据访问效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mysql一级缓存二级缓存](https://blog.csdn.net/qiuhui123456/article/details/98509360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MYSQL一级缓存二级缓存](https://blog.csdn.net/qq_51250453/article/details/119582234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肝铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值