druid和HikariCP
来源:互联网 发布:爱知 编辑:程序博客网 时间:2024/06/05 00:55
今天为了优化springmvc中的数据连接池,就去查了下一些数据连接池的性能。结果如下:
1:性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
2:druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。
3:综合性能,扩展性等方面,可考虑使用druid或者hikariCP连接池。
4:可开启prepareStatement缓存,对性能会有大概20%的提升。
那么久着重讲下hikariCP 和 druid。hikariCP是速度最快的,而且不是快一两点。那么就来了解下在项目(maven+springMVC)中的使用:
<!-- 在pom.xml中的依赖 --><!-- Hikari 数据库连接池依赖 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>2.6.0</version> </dependency>
<!-- 配置在spring.xml(或者叫applicationContext.xml等不同意习惯不一) --><!-- 引入外部文件 --> <context:property-placeholder location="classpath:db.properties" /><!-- Hikari Datasource 速度最快数据连接池 --> <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}" /> <!-- 连接只读数据库时配置为true,保证安全 --> <property name="readOnly" value="false" /> <!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException,缺省:30秒 --> <property name="connectionTimeout" value="30000" /> <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 --> <property name="idleTimeout" value="600000" /> <!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) --> <property name="maxLifetime" value="1800000" /> <!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) --> <property name="maximumPoolSize" value="60" /> <property name="minimumIdle" value="10" /> </bean><!-- 剩下的配置和dbcp2,c3p0一样 --><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,就是看重它全面。
<!-- 阿里 druid数据连接池依赖 配置于pom.xml--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2</version> </dependency>
<!-- druid 阿里数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置监控统计拦截的filters --> <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" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements" value="true" /> <property name="maxOpenPreparedStatements" value="20" /> </bean> <!-- 剩下的请参照上马代码 -->
阅读全文
0 0
- druid和HikariCP
- druid配置与HikariCP配置
- HikariCP
- 数据库连性池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)
- 数据库连性池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)
- 数据库连接池-HikariCP-配置和使用
- HikariCP VS druid VS c3p0 VS dbcp VS jdbc 数据库连接池性能比对
- Spring Cloud (15) | Spring Boot、HikariCP、Mybatis和MySQL 配置HikariCP数据库连接池
- Druid是什么和Druid的介绍
- 了解HikariCP
- HikariCP maxLifeTime
- HikariCP logoJDBC 连接池 HikariCP
- druid
- druid
- Druid
- druid
- Druid
- druid
- Trie
- mos驱动查错
- Combinatorics——HDUOJ 1261
- 关于FOR的用法
- 01背包
- druid和HikariCP
- 如何正确的根据自身喜好投简历
- 程序小白入门史
- 03 网络连接的判断
- Python笔记—Django框架搭建和运行
- 操作表格
- IDEA 2017激活教程
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- json in java