【修真院java小课堂】jdbc连接池原理及分析


【修真院java小课堂】jdbc连接池原理及分析

        大家好,我是IT修真院郑州分院第8期的学员,一枚正直纯洁善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务一,拓展的知识点——jdbc连接池原理及分析。

1.背景介绍

        为什么需要连接池?

        最原始的数据库连接就是我们打开一个连接,使用过后再关闭该连接来释放资源。数据库连接是一种关键的有限的昂贵的资源,频繁的新建、打开、关闭连接 对jvm和数据库都有一定的资源负荷,尤其是应用压力比较大的时候,占用过多的资源容易产生性能问题。所以引入数据库连接池。


2.知识剖析

        连接池使用原理

        数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

        具体点说,在普通的数据库访问程序中,真正操作数据库的对象 得到的连接 是物理连接,调用连接对象的close()方法将关闭物理连接。而采用连接池技术,真正操作数据库的对象 得到的连接 是连接池中已经建立好的物理连接的一个句柄,调用连接对象的close()方法,物理连接并没有关闭。

3.常见连接池

        dbcp:是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。

        c3p0:是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

        两者最大的区别:dbcp需要手动释放资源,c3p0可以自动回收连接。dbcp效率高,稳定性差一点;c3p0稳定性好

4.常见问题

     1.连接池的分配与释放

        对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxconn)如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间超过预定时间timeout 则返回空值(null)。系统对已经分配出去正在使用的连接只做计数,当使用完后再返还给空闲池。

        对于空闲连接的状态,可开辟专门的线程定时检测,这样会花费一定的系统开销,但可以保证较快的响应速度。也可采取不开辟专门线程,只是在分配前检测的方法。

     2.连接池的配置与维护

        连接池中到底应该放置多少连接,才能使系统的性能最佳?

        系统可采取设置最小连接数(minconn)和最大连接数(maxconn)来控制连接池中的连接。最小连接数是系统启动时连接池所创建的连接数。如果创建过多,则系统启动就慢,但创建后系统的响应速度会很快;如果创建过少,则系统启动的很快,响应起来却慢。这样,可以在开发时,设置较小的最小连接数,开发起来会快,而在系统实际使用时设置较大的,因为这样对访问客户来说速度会快些。最大连接数是连接池中允许连接的最大数目,具体设置多少,要看系统的访问量,可通过反复测试,找到最佳点。

5.扩展思考

        什么情况下不适合使用连接池?

        如果应用程序具有下列特征就不适合使用连接池,实际上,在这些应用程序上强制使用连接池反而会导致性能下降:

        1.应用程序每天会重新启动多次:这通常出现在没有使用应用程序服务器的架构中,依赖于连接池的配置,应用程序每次启动时可能都会向连接池写入一条记录,这样反而增加了连接池的系统开销;

        2.单用户应用程序,如果应用程序只需要为一个用户建立一个连接,这个时候使用连接池就显得多余了;

6.参考文献

https://blog.csdn.net/shuaihj/article/details/14223015

https://www.cnblogs.com/yizhixiaocaiji/p/4205933.html

https://www.jianshu.com/p/702e8659513b


7.更多讨论

        1.  连接使用完毕是直接释放还是存在连接池中?

        答:如果该连接是超出最小连接数后申请的连接,那么当该连接使用完后,释放之后,经过一定的时间之后会断开物理连接

            如果该连接是在最小连接数范围之内的连接,那么该连接的释放只是把连接还给了连接池,物理连接并没有断开。

        2.最大连接数是不是在mysql允许范围内越打越好?

        答:首先,根据应用程序的需求,如果应用程序不需要建立较多连接,那么就不必要设置过多的连接

        其次,根据服务器的性能,如果最大连接数消耗的资源已经超出了服务器能提供的资源,那么服务器会炸的。

        所以,最大连接数是要综合考虑应用场景设置的

        4.数据库连接池中的连接在空闲时会一直存在么?

        答:dbcp和c3p0都有8小时内无请求断开连接的机制。所以如果空闲时间超过8小时,连接就不存在了。

PPT链接

        今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

        技能树.IT修真院

        “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

        这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

我的邀请码:22140638,或者你可以直接点击此链接:http://www.jnshu.com/login/1/22140638

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 大家好,我是IT修真院上海分院第6期学员,一枚正直善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任...
    风吹_满楼阅读 1,410评论 0 2
  • 1,介绍人说漂亮的不一定漂亮, 但是介绍人没说漂亮的,那就一定丑。 2,女的到二十七八,还单身,要么丑,要么在大城...
    iOS行者阅读 983评论 11 11
  • 第十二章:阴谋显现波澜起 上章回顾:爹爹临行随州前,我们容府团聚一地,饭桌上爹爹和哥哥们古怪的话语,让我一颗心莫名...
    鹿时深阅读 407评论 0 1
  • 昨晚深夜柳梦影又哭了,哭得很寂寞。尽管柳梦影的哭声把室友都给搅扰醒了,但没有一个人说一句话,都装着没听见,甚至还有...
    方东流阅读 255评论 0 0