300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java 连接池 druid_从零开始学 Java - 数据库连接池的选择 Druid

java 连接池 druid_从零开始学 Java - 数据库连接池的选择 Druid

时间:2021-06-03 17:18:59

相关推荐

java 连接池 druid_从零开始学 Java - 数据库连接池的选择 Druid

我先说说数据库连接

数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名、密码了,然后我们就可以打开门去任意的存取东西了。这个时候,我们与数据库之间的连接就是「数据库连接」。

这个时候问题就来了,当我们仅仅只需要去取一个东西的时候,我们取完东西随手关上门,然后拔出钥匙,这完全是再正常不过的流程了,完全没毛病,但是,我们大部分时间是需要一件件的把仓库中的东西搬到外面停放的大卡车上,那这时候我们如果取一件东西把门锁上,然后再打开门取一件再次锁上,这有没有毛病?在我看来,这个逻辑完全正确,没一点毛病,就是这样必然会影响我们装货的效率嘛!正常人肯定会想到我们不锁门不就行了,等这批货装完了,我们再锁上门。这可以阿,但是,会不会有安全及其他问题?还有这时候你是否允许别人从你打开的门进入仓库搬东西?

如果,这时候我们招聘了一个「仓库管理员」帮忙我们管理会怎样?当然完美啦,他会在你进入仓库时给你「授权令」进入,然后可能还会在你出来的时候检查下你搬的货物是否正确,并做下记录以及报表分析,然后你完成时把你的「授权令」还给他,另外一个人进入当然也是这样的,也并不会影响到你的工作,你俩当然可以同时搬东西,仓库管理员并不会在你结束的时候锁上门。

何为数据库连接池

其实上面的「仓库管理员」我就认为是我们程序世界的数据库连接池。因为他手里拿着大把的进入仓库的令牌,他给你一个你就能进去,出来后你还给他,他再接着可以给下一个人,这个时候我们仓库门是一直打开的状态,省去了大把我们开锁、开门、关门、锁门的操作,完全交由一个专业人士管理,更神奇的是他还能记录你的一系列操作。

看概念:

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

摘自百度百科

在大部分 .Net 开发人心目中,好像并没有数据库连接池的概念,只有数据库连接,然后用完要记得close和用using,在 Java 中有太多的开源的数据库连接池,而且好像一个吹的比一个厉害。我其实告诉你,其实在 .Net 中 已经帮我们实现了数据库连接池,我们并不需要什么配置,用就是了,但 Java 不一样,需要我们自己选择合适的数据库连接池。下面我说说项目中为什么选择了阿里的 Druid 数据库连接池。

为监控而生的数据库连接池

这是它在 GitHub 上的描述,它有四千多的 Star , 这些并不重要,其实他的监控功能做的很不错,对开发完成后我们代码优化提供了大量的参考,至少在数据库连接层面的提升是明显可见的。我们曾经把一个耗时半分钟的查询优化到毫秒级别,当然这并不是全靠优化数据库查询,但它对调优有重要帮助。

网上有很多各个比较常用的连接池的对比,如 c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool 等等这些,你可以搜到详细的对比,我这里不再讨论,我提供一个 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试,可以参考。下面是官方的功能对比:

配置起来也很简单

二、applicationContext.xml文件配置数据库连接

这好像和其他数据库连接池没多少区别,除了几个参数不同而已,我贴出我的配置

init-method="init" destroy-method="close">

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/springdemo?useUnicode=true&characterEncoding=UTF-8

root

123456

上面的参数都可以根据自己的需要来调整。具体配置请访问我的 GitHub 示例/mafly/SpringDemo/blob/master/WebContent/WEB-INF/applicationContext.xml

三、web.xml文件配置监控平台

DruidWebStatFilter

com.alibaba.druid.support.http.WebStatFilter

exclusions

*.js,*mp3,*.swf,*.xls,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*

DruidWebStatFilter

/*

DruidStatView

com.alibaba.druid.support.http.StatViewServlet

resetEnable

true

loginUsername

admin

loginPassword

123456

DruidStatView

/druid/*

在文件中加入上面配置,就可以在项目地址后加druid后访问监控平台,看一下数据库连接及 SQL 语句执行时间,当然登录密码什么的自己配置啦。登录后界面:

总结一下

我这里当然就是抛砖引玉的简单说了一下 Druid 数据库连接池的基本配置,更多强大功能等待大家去体验,在我们时间项目中,使用起来会比原来 c3p0 要爽,这里要感谢项目组中小慷同学的技术分享, Druid 的具体情况及各种配置大家都可以去 /alibaba/druid/ 查看,文档还是比较详细的。

当然,我上面的配置大家也都可以访问我 GitHub(改版了,你去看看)上的 Spring 示例项目查看:/mafly/SpringDemo/。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。