一、数据源
数据源是一种提高数据连接性能的常规手段,数据源会负责维持一个数据库连接池,当程序创建数据实例时,系统会一次性的创建多个数据库连接,并把这些数据库连接放在连接池中。当程序需要连接数据库访问时,无需进行重新获取数据库连接,而是从连接池中取出一个空闲的数据库连接。当程序使用数据库连接访问数据库结束时,无需关闭数据库连接,而是把数据库连接归还数据库连接池。通过这种方式,就可避免获取数据库时频繁的连接、关闭数据库导致性能降低,大大提升数据库性能。数据库连接池核心是以空间换时间。
二、缓存机制
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.避免使用二级缓存(多表操作)
多表操作缓存二级缓存会导致查询结果不正确,产生脏读
二、延迟加载
延迟加载又交懒加载(也叫按需加载),也就是先加载主表信息,需要的时候,再去加载从表信息。代码中有查询语句,当执行到查询语句时,并不是马上去数据库查询,而是根据设计的延迟策略将查询向后推迟。
延迟加载的作用:只有在用到需要的数据时才会真正执行查询操作,可以大大减轻数据库服务器的访问压力,提高数据库的性能。