druid数据库连接池
来源:互联网 发布:python 一段时间日期 编辑:程序博客网 时间:2024/05/17 18:04
1.添加maven配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> </dependency>
2. 注掉原有的DBCP数据源配置,加上以下配置
<bean id="myDataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password--> <property name="url"value="${mysql_url}" /> <property name="username"value="${mysql_username}" /> <property name="password"value="${mysql_password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize"value="100" /> <property name="minIdle"value="200" /> <property name="maxActive"value="2000" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait"value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <propertyname="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <propertyname="minEvictableIdleTimeMillis" value="300000" /> <propertyname="validationQuery" value="SELECT 'x'" /> <propertyname="testWhileIdle" value="true" /> <property name="testOnBorrow"value="false" /> <property name="testOnReturn"value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <property name="poolPreparedStatements"value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize"value="20" /> <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --> <property name="filters"value="stat" /> </bean>
3.web.xml中添加以下内容
<!-- 添加支持 页面监控连接池 --><servlet><servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping> <!-- druid 阿里连接池 --> <filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <param-name>exclusions</param-name> <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value> </init-param> </filter> <filter-mapping> <filter-name>DruidWebStatFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
以上就配置好了,还是很简单的,然后打开监控页面
http://ip:port/项目名/druid/index.html
三.关于参数配置的解释:
1. 初始化时建立的物理连接个数,初始化发生在显示调用init方法,或者第一次getConnection时
<propertyname="initialSize" value="100" />
2. 最大连接池数量
<propertyname="maxActive" value="2000" />
3. 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
<propertyname="maxPoolPreparedStatementPerConnectionSize" value="20"/>
4. 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
<propertyname="poolPreparedStatements" value="true" />
1.地址:
https://github.com/alibaba/druid/wiki/%E5%90%84%E7%A7%8D%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E5%AF%B9%E6%AF%94
2.测试执行申请归还连接1,000,000(一百万)次总耗时性能对比。
Testcase
Connection conn = dataSource.getConnection();
conn.close();
测试demo地址:
https://github.com/alibaba/druid/blob/master/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java
private int initialSize = 10;
private int minPoolSize = 10;
private int maxPoolSize = 50;
private int maxActive = 50;
结论:
1. Druid是性能最好的数据库连接池,tomcat-jdbc和druid性能接近。
2. proxool在激烈并发时会抛异常,完全不靠谱。
3. c3p0和proxool都相当慢,慢到影响sql执行效率的地步。
4. bonecp性能并不优越,采用LinkedTransferQueue并没有能够获得性能提升。
5. 除了bonecp,其他的在JDK 7上跑得比JDK 6上快
6. jboss-datasource虽然稳定,但是性能很糟糕
- 数据库连接池之 Druid
- 推荐数据库连接池Druid
- 数据库连接池:Druid
- 阿里巴巴数据库连接池--Druid
- Druid数据库连接池使用
- Druid数据库连接池使用
- druid数据库连接池
- 数据库连接池Druid
- Druid数据库连接池
- Druid数据库连接池使用
- Druid数据库连接池使用
- Druid数据库连接池使用
- Druid数据库连接池使用
- Druid数据库连接池使用
- Druid数据库连接池使用
- Druid数据库连接池使用
- 数据库连接池Druid
- Druid数据库连接池使用
- 阶梯博弈——学习笔记
- Python内置函数: __nonzero__
- spark--actions算子--count
- 全国各省市县级边界范围及其中心城区查询(调用百度地图)
- sklearn训练后使用pickle、joblib保存与恢复模型
- druid数据库连接池
- 自定义UISegmentControl控件
- learning之建造者模式
- C语言包含头文件时用引号和尖括号的区别
- 用python解压分析jar包
- 【二叉树】树的直径【543. Diameter of Binary Tree】
- Unity游戏开发网络基础(2)
- jetty9优化,添加jvm参数配置
- Android Studio的下载和配置