个人网站数据库大小,青海做网站哪家好,电子商务网站建设与管理设计报告,仓库erp系统有哪些缓存的概念#xff1a; 在内存中临时存储数据#xff0c;速度快#xff0c;可以减少数据库的访问次数经常需要查询#xff0c;不经常修改的数据#xff0c;不是特别重要的数据都适合存储到缓存中 缓存的级别#xff1a; 一级缓存(默认开启)#xff1a;SqlSession 级别 … 缓存的概念 在内存中临时存储数据速度快可以减少数据库的访问次数经常需要查询不经常修改的数据不是特别重要的数据都适合存储到缓存中 缓存的级别 一级缓存(默认开启)SqlSession 级别 一级缓存存储的是对象 二级缓存(默认关闭)nameSpace 级别 二级缓存存储的是实际数据 优先访问级 先访问二级缓存再访问一级缓存其次是数据库 MyBatis 的一级缓存(本地缓存) 一级缓存存放在 SqlSession 对象中SqlSession 对象来访问数据库在 SqlSessin 对象中有 cache缓存(底层是 HashMap)Executor执行器 作用 与数据库同一次会话期间查询到的数据会放入到本地缓存中去如果以后获取相同的数据直接去缓存中拿取没必要再去查询数据库 示例 执行两次方法只进行了一次查询且为一个对象 一级缓存失效 原因 SqlSession不同SqlSession相同查询条件不同SqlSession相同两次查询之间进行了增删改查操作手动清除一级缓存 session.clearCache() 二级缓存 设置配置在 xml 中开启二级缓存使用二级缓存实现序列化接口 目的把类转换成数据 关闭一级缓存 //查询信息
ListUser users1 mapper.findById(6);
session.close(); //关闭一级缓存
ListUser users2 mapper2.findById(6);
session.close(); //关闭一级缓存 Catch 参数的细节 eviction(回收策略) LRU(最近最少使用)移除最长时间不被使用的对象默认值FIFO(先进先出)按对进入缓存的顺序来移除SOFT(软引用)移除基于垃圾收集处理器状态和弱引用规则的对象WEAK(弱引用)更积极地移除基于垃圾收集器状态和弱引用规则的对象 flushinterval(刷新间隔) 可以被设置为任意的正整数而且他们代表一个合理的毫秒形式的时间段默认情况不设置即没有刷新间隔缓存仅仅在调用语句时刷新 size(引用数目) 可以被设置为任意正整数要记住缓存的对象数目和运行环境可用内存支援数目。默认值时 1024 readOnly(只读) true(只读缓存)会给所有调用者返回缓存对象的相同实例。因此这些对象不能被修改这提供了很重要的性能优势false(读写缓存)通过序列化返回缓存对象的拷贝这种方式会慢一些但是安全因此默认是 false 配置结果 cache evictionFIFO
flushInterval6000
size512
readOnlytrue/ MyBatis 缓存查询顺序 先查询二级缓存因为二级缓存中可能有其他程序查询出来的数据可以直接拿来用如果二级缓存没有命中再查询一级缓存如果一级缓存也没有命中则查询数据库SqlSession 关闭之后一级缓存的数据会写入二级缓存