druid和HikariCP

今天为了优化springmvc中的数据连接池,就去查了下一些数据连接池的性能。结果如下:
1:性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
2:druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。
3:综合性能,扩展性等方面,可考虑使用druid或者hikariCP连接池。
4:可开启prepareStatement缓存,对性能会有大概20%的提升。
那么久着重讲下hikariCP 和 druid。hikariCP是速度最快的,而且不是快一两点。那么就来了解下在项目(maven+springMVC)中的使用:



        <dependency>
            <groupId>com.zaxxergroupId>
            <artifactId>HikariCPartifactId>
            <version>2.6.0version>
        dependency>


    <context:property-placeholder location="classpath:db.properties" />


    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="shutdown">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        
        <property name="readOnly" value="false" />
        
        <property name="connectionTimeout" value="30000" />
        
        <property name="idleTimeout" value="600000" />
        
        <property name="maxLifetime" value="1800000" />
        
        <property name="maximumPoolSize" value="60" />
        <property name="minimumIdle" value="10" />
    bean>


<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="typeAliasesPackage" value="com.zm.blog.entity" />
        <property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
    bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="xxx.xxx.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    bean>

做完以上步骤就能使用HikariCP了,druid配置是一样的类似的。这里说下我们公司用的是druid,就是看重它全面。


        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.2version>
        dependency>

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        
        <property name="filters" value="stat" />

        
        <property name="maxActive" value="20" />
        <property name="initialSize" value="1" />
        <property name="minIdle" value="1" />

        
        <property name="maxWait" value="60000" />

        
        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />

        
        <property name="poolPreparedStatements" value="true" />
        <property name="maxOpenPreparedStatements" value="20" />
    bean>
    

你可能感兴趣的:(环境配置,编程知识)