【Mybatis面试题】Mybatis缓存机制

本文详细介绍了Mybatis的缓存机制,包括一级缓存的SQLSession级别和二级缓存的全局共享。讨论了多表联合缓存的问题,并提出了使用Redis进行自定义缓存策略以避免性能浪费的解决方案。
摘要由CSDN通过智能技术生成

1. Mybatis缓存方案

Mybatis的缓存机制可以在多个会话之间共享数据,从而提高查询性能Mybatis主要分为两级缓存:

一级缓存:是sqlsession级别的缓存,当前作用域为sqlsession,默认开启,通过<cache>标签可以配置,只有SQL语句和参数值完全相同的SQL,才可以使用该缓存;

二级缓存:主要是全局缓存多个sqlsession共享数据,作用域是同一个namespace下的所有sqlsession,默认是关闭的,通过cacheEnabled字段可以开启;

查询流程:先查询二级缓存,在查找一级缓存,最后查找数据库;
缓存清空时机:执行insert\update\delete方法会清空缓存,或者自己配置缓存失效参数。

2. 多表联合缓存如何使用?-- 不推荐

方案: 使用<cache-ref>标签,完成多表联合缓存,保证没有脏数据的产生;
存在问题: 全量清空缓存数据。关联表数据没有更新,也会清空,造成性能的浪费。
解决方案: 自定义缓存策略。例如:使用Redis,细化Key,可以针对性的清空缓存。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

桃花猿

客官,赏点打酒钱

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

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

打赏作者

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

抵扣说明:

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

余额充值