• (六)Mybatis总结之延迟加载


    • 应用场景:
      • i.假如一个用户他有N个订单(N>=1000),那么如果一次性加载的话,一个用户对象的订单集合OrderList里面就会有1000多个Order的对象。计算:一个订单对象里面数据有多大
      • ii.从优化考虑,我们会使用延时加载去降低内存的占用,即先查询用户,不查询订单,当你通过 用户.getOrderList()的时候,再查询订单集合
    • 总而言之一句话:查询的时候,只查询当前对象,不查询关联对象,即为延时加载。但是有一个问题,如果你是延时加载,那么和查询两次没区别,那我为什么不用查询两次?

    接下来内容请观看大佬的博客: https://www.cnblogs.com/jack1995/p/7260722.html


    一级缓存和二级缓存

    请移步到 https://www.cnblogs.com/happyflyingpig/p/7739749.html

    • 什么是缓存:缓冲内存,一般来说,我们执行查询的时候,用的是SqlSession的对象,这个就是Mybatis的一级缓存。
    • 数据一致性:缓存中的数据必须和数据库中的数据高度一致。
    • 二级缓存:不太推荐使用,因为使用二级缓存必须将pojo类实现序列化接口,而实现序列化接口就是要将这个pojo类的对象保存到硬盘中。
    • 问题:我sql也是从硬盘查,我使用二级缓存也是从硬盘获取,那它们之间有什么不同呢?
      • 二级缓存相较于数据库查询的优势:如果一次查询的结果是放到二级缓存里面的话(本地硬盘),那么第二次执行同样的查询,数据将会直接从二级缓存(硬盘获取),不再会执行查询。
      • 二级缓存相较于数据库查询的劣势:一旦发生增、删、改操作,就会发生数据不一致的情况(数据库与缓存数据对不上)。所以发生以上操作的时候,二级缓存就会继续清空,而发生继续清空的情况下,会产生+1次的硬盘操作。
    • 二级缓存使用场景:频繁发生查询,查询条件相同,但是增删改操作很少的表。
  • 相关阅读:
    nginx+ftp图片服务器搭建
    第一篇随笔
    字符设备控制技术
    总结字符设备
    字符设备驱动模型
    使用字符设备驱动
    驱动开发前奏
    linux内核链表的移植与使用
    linux内存管理子系统
    内核模块可选信息
  • 原文地址:https://www.cnblogs.com/qiyiguoandqijiguo/p/10845671.html
Copyright © 2020-2023  润新知