mybatis为什么不用二级缓存 MyBatis中如何禁用缓存?
MyBatis中如何禁用缓存?
1级缓存可以简单地理解为会话级或线程级缓存。当查询发生时,mybatis将找出当前会话中是否存在相同的查询。如果有,它将直接访问缓存,而不是访问数据库。执行线程后,缓存将被清除。第二级缓存是进程级缓存。可以通过向映射器文件添加节点来启用它。我猜mybatis缓存将SQL语句参数作为键,查询结果作为映射中的值。Hit表示查询的SQL语句和参数相同,可以在缓存键中找到。此时,结果将直接返回。密巴蒂斯的秘密藏在记忆里。你可以看到别人写的博客:mybatis缓存机制deep dissection/自定义二级缓存非常清晰。
CPU的一二三级缓存有什么用处?
让我们先看看为什么CPU有L1、L2和L3缓存设计。如下图所示,当前处理器速度太快,从内存读取数据太慢(一是内存本身速度不够快,二是距离CPU太远)。一般来说,它需要让CPU等待几十个甚至几百个时钟周期)。此时,为了确保CPU的速度,需要更少的延迟和更快的内存来帮助,这就是缓存。
现在让我们看看多级缓存(L1、L2、L3)的好处,而不仅仅是单个缓存。
1. 缓存越靠近ALU和其他核心单元,访问速度就越快。因此,核心附近会有一级缓存。虽然它很小,但它真的很快。缓存容量越大,缓存命中率越高,命中率越高,所以当L1不能命中时,它需要一个更大但不慢的缓存来提供数据,即L2;
3。更大的缓存意味着更高的命中率,这也意味着更高的成本、更低的速度、更多的晶体管和更大的面积,因此它不能接近所有的核心单元,即L3;
这是基于性能、成本和设计的CPU平衡,一级缓存可以最大化单个内核的位置和速度(甚至是单独的指令和数据)。二级缓存将更大,命中率更高,速度更慢。它通常位于每个核心,而L3缓存通常在系统的所有核心之间共享,以提供合理的速度和容量。例如,Intel Core i7-8700k的L1大小为64K,也分为32K数据和32K指令。L2大小为256K,L3大小为12MB。
现代CPU缓存体系结构非常复杂,包括硬件预取和数据转发,以提供最佳缓存命中率。一些cpu甚至添加了L4缓存。
mybatis有必要用redis作缓存么?
通常,为了减少对数据库的压力,我们会引入缓存。在Dao查询数据库之前,先去缓存看看是否有要查找的数据。如果有,则使用缓存中的数据,而不是查询数据库。如果没有,就去数据库找。所以你可以分担数据库的压力。另外,为了使缓存中的数据与数据库同步,我们应该添加逻辑代码来更新数据发生变化的缓存。这实际上增加了工作量,但也侵犯了原始代码。这对沉迷于代码清洁的程序员来说是一种伤害。Mybatis框架长期以来一直在考虑这些问题,因此Mybatis提出了用户定义的二级缓存的概念,在不改变原有业务逻辑的情况下,可以方便地引入我们自己的缓存机制。
mybatis为什么不用二级缓存 mybatis二级缓存优缺点 mybatis动态sql作用
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。