Mybatis 缓存使用心得
文章目录
1.缓存知识点
- 对于每个对数据库的操作(在web场景中就是每次调用Mapper的方法)都会启用一个新的sqlSession,用完即删,如果几个操作间存在事务,那么他们将公用一个sqlSession,在全部都执行完后,提交,关闭sqlSession,
- sqlSession是线程隔离的,也就是如果在一个事务中使用多个线程进行多个操作,那么也就使用多个sqlSession(原理:每个线程内有一个sqlsessionHolder的ThreadLocal变量)。
- 一级缓存的作用域是SqlSession,那么基本上来说就是没有任何作用的。
- 如果想要有效缓存查询结果,保证下次该查询不会再去直接访问数据库,我们需要开启二级缓存。
2.实验(数据库连接池最大线程数 10)
2.1首先,我们不开启二级缓存去查询景点信息。
通过JMeter进行性化测试可以看到性能很低,通过Mybatis的日志我们也可以看每次请求都开启了新的SqlSession去直接操作数据库。