mybatis的(Cache)一级二级缓存+各种连接池对比

一 缓存存(Cache)

在这里插入图片描述

使用场景:

  • 数据量较小
  • 数据需要经常使用,不会经常发生改变
  • 数据不是特别准确的时候

1.1.一级缓存

1.1.1 一级缓存理解

SqlSession级别的缓存,同一个SqlSession的发起多次同结构查询,会将缓存数据保存在一级缓存中。

注意:无需任何配置,默认开启一级缓存

1.1.2 什么时候清空一级缓存

  • sqlSession.clearCache();
  • sqlSession.commit();
  • 执行增加,修改,删除操作

1.2.二级缓存

1.2.1 理解

  • 二级缓存存储的不是对象,是具体的数据。
  • sql进行查询的时候,第一次拿到二级缓存的数据,第二次拿到的时候二级缓存把具体的数据又构建成一个对象,所以和第一次数据不一样。

在这里插入图片描述

1.2.2 开始全局二级缓存

< settings >是MyBatis中极为重要的调整设置,他们会改变MyBatis的运行行为,其他详细配置可

参考官方文档。

第一步

在这里插入图片描述

<settings> 
<!--开启二级缓存--> 
<setting name="cacheEnabled" value="true"/> 
</settings>

第二步

在这里插入图片描述

三.不同连接池对比

13.1 概念

Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成。该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实现自己需要的功能。

13.2 不同连接池对比

测试执行申请归还连接 1,000,000(一百万)次总耗时性能对比。

13.2.1 测试环境

环境版本
OSOS X 10.8.2
CPUIntel i7 2GHz 4 Core
JVMJava Version 1.7.0_05

13.2.2 基准测试结果对比

JDBC-Conn Pool1 Thread2 threads5 threads10 threads20 threads50 threads
Druid8981,1911,3241,3621,3251,459
tomcat-jdbc1,2691,3782,0292,1031,8792,025
DBCP2,3245,0555,4465,4715,5245,415
BoneCP3,7383,1503,1945,68111,01823,125
jboss-datasource4,3772,9883,6803,98032,70837,742
C3P010,84113,63710,68211,05514,49720,351
Proxool16,33716,18718,310(Ex)25,94533,706(Ex)39,501 (Ex)
13.2.3 测试结论

13.3 配置pom.xml

引入Druid依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

13.4 创建DruidDataSourceFactory

MyDruidDataSourceFactory并继承PooledDataSourceFactory,并替换数据源。

package com.qf.mybatis.part2.utils;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSourceFactory;

public class MyDruidDataSourceFactory extends PooledDataSourceFactory {
    public MyDruidDataSourceFactory() {
        this.dataSource = new DruidDataSource();//替换数据源
    }
}

13.5 修改mybatis-config.xml

mybatis-config.xml中连接池相关配置。

<!--连接池-->
<dataSource type="com.qf.mybatis.part2.utils.DruidDataSourceFactory"><!--数据源工厂-->
    <property name="driverClass" value="${driver}"/>
    <property name="jdbcUrl" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/> 
  
</dataSource>

注意:< property name=“属性名” />属性名必须与com.alibaba.druid.pool.DruidAbstractDataSource中一致。

<property name="password" value="${password}"/> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值