MyBatis性能优化

MyBatis缓存机制原理

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


一级缓存(Sqlsession级别)

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

二级缓存(Mapper级别)

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

MyBatis 缓存使用注意事项

  • 只能在只有单表操作的表上使用缓存

  • 查询操作远大于更新,插入和修改查找操作的情况下使用缓存

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

    多表查询一定不能使用二级缓存,会导致查询结果不正确,出现脏数据。



MyBatis延时加载

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


延时加载的作用

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

原文地址:https://www.cnblogs.com/tantanli/p/13807741.html