• 10-10 MyBatis--性能优化


    一、数据源 

      数据源是一种提高数据连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据实例时,系统会一次性的创建多个数据库连接,并把这些数据库连接放在连接池中。当程序需要连接数据库访问时,无需进行重新获取数据库连接,而是从连接池中取出一个空闲的数据库连接。当程序使用数据库连接访问数据库结束时,无需关闭数据库连接,而是把数据库连接归还数据库连接池。通过这种方式,就可避免获取数据库时频繁的连接、关闭数据库导致性能降低,大大提升数据库性能。数据库连接池核心是以空间换时间。

    二、缓存机制

      2.1 MyBatis缓存机制原理

      缓存机制是将第一次从数据库Sql查询的结果数据保存到缓存(内存中),当下一次SQL查询和第一次SQL查询相同,如果缓存中有数据则直接获取,而不用再从数据库获取,从而减少数据库的的访问频率,大大提升数据库性能。

      缓存机制分为一级缓存和二级缓存,默认一级缓存打开,二级缓存关闭。

      2.2 一级缓存

        一级缓存是sqlsession级别的缓存,不同的是sqlsession对象之间的缓存数据是相互不影响的。当sqlsession对象释放后,该sqlsession对象中的一级缓存也就不存在。

     

      2.3 二级缓存

        二级缓存是Mapper级别的缓存。多个sqlsession对象SQL语句查询数据库结果会存放二级缓存区域,二多个sqlsession对象可以共用二级缓存。

         二级缓存是多个sqlsession对象共用的。其作用范围是Mapper的同一个namespace,不同的sqlsession对象两次执行相同的namespace下的SQL语句,第一次执行会将数据库中查询结果数据存储到二级缓存中,第二次会从二级缓存中获得数据,而不是再从数据库获取,从而提高查询数据

      2.4 MyBatis缓存使用注意事项

         1.只能在单表操作的表上使用缓存

         2.查询操作远大于更新、插入、和修改查找操作的情况先使用

         3.避免使用二级缓存(多表操作)

          多表操作缓存二级缓存会导致查询结果不正确,产生脏读

    二、延迟加载

      延迟加载又交懒加载(也叫按需加载),也就是先加载主表信息,需要的时候,再去加载从表信息。代码中有查询语句,当执行到查询语句时,并不是马上去数据库查询,而是根据设计的延迟策略将查询向后推迟。

      延迟加载的作用:只有在用到需要的数据时才会真正执行查询操作,可以大大减轻数据库服务器的访问压力,提高数据库的性能。

    本文以学习、研究和分享为主,版权归作者和博客园共有,欢迎转载,如果文中有不妥或者错误的地方还望大神您不吝指出,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    两步验证杀手锏:Java 接入 Google 身份验证器实战
    涨姿势:Spring Boot 2.x 启动全过程源码分析
    Spring Cloud 升级最新 Finchley 版本,踩了所有的坑!
    Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
    推荐:7 月份值得一看的 Java 技术干货!
    屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python!
    Spring Boot 核心配置文件 bootstrap & application 详解。
    出场率比较高的一道多线程安全面试题
    凉凉了,Eureka 2.x 停止维护,Spring Cloud 何去何从?
    读写Excel
  • 原文地址:https://www.cnblogs.com/bhhh/p/13816889.html
Copyright © 2020-2023  润新知