2、应用每次从数据源中获取连接时候,会根据testOnBorrow、testWhileIdle参数检测连接的有效性 。
因此,我们需要重点配置如下的参数:
A、timeBetweenEvictionRunsMillis 参数:间隔多久检测一次空闲连接是否有效 。
B、testWhileIdle 参数:启空闲连接的检测,强烈建议设置为 true。
C、minEvictableIdleTimeMillis 参数:连接池中连接最大空闲时间(毫秒),连接数 > minIdle && 空闲时间 > minEvictableIdleTimeMillis。
D、maxEvictableIdleTimeMillis 参数:连接池中连接最大空闲时间,空闲时间 > maxEvictableIdleTimeMillis,不管连接池中的连接数是否小于最小连接数。
E、testOnBorrow 参数:开启连接的检测,获取连接时检测是否有效,假如设置为 true , 可以最大程度的保证连接的可靠性,但性能会变很差。
笔者建议在配置这些参数时,和 DBA、架构师做好提前沟通,每个公司的数据库配置策略并不相同,假如数据库配置连接存活时间很短,那么就需要适当减少空闲连接检测间隔 , 并调低最大和最小空闲时间 。5 总结这篇文章,笔者整理了数据库连接池的知识点 。
1)连接池的优点:资源重用、提高性能、优化资源分配、连接管理;
2)JDBC 连接池:实现数据源接口javax.sql.DataSource,这个类位于 Java 标准库;
3)连接池 Druid 实现原理:
- 核心方法:初始化、创建连接、获取连接、归还连接、销毁连接 。
- 存储容器:连接池数组、销毁连接数组、保活连接数组 。
- 线程模型:独立的创建连接线程和销毁连接线程 。
- 锁机制:在创建连接、获取连接时 , 都会加锁,通过两个 Condition 对象 empty 、notEmpty 分别控制创建连接线程和获取连接线程的等待和唤醒 。
配置连接池参数时,和 DBA、架构师做好提前沟通,每个公司的数据库配置策略并不相同,假如数据库配置连接存活时间很短,那么就需要适当减少空闲连接检测间隔,并调低最大和最小空闲时间 。
最后,数据库连接池、线程池都是对象池的思想 。对象池是一种设计模式,用于管理可重复使用的对象 , 以减少对象的创建和销毁开销 。
笔者会在接下来的文章里为大家详解,敬请期待:
- 如何使用池化框架 Commons Pool ;
https://segmentfault.com/a/1190000043208041
https://blog.csdn.net/weixin_43790613/article/details/133940617
https://blog.csdn.net/yaomingyang/article/details/123145662
推荐阅读
- 退房时酒店为什么不再查房了?前台工作人员说出真相,原来如此!
- 演员张潮:再婚娶小20岁娇妻,62岁又做父亲,大女儿也是知名演员
- 灵堂缺席的三天王,戳穿了娱圈的人情冷暖,刘德华的话,有人信了
- 演员李芸:与前夫离婚后,再婚嫁小提琴家,现在儿女双全
- 红毯再放异彩,美貌争议背后,业务能力能否成就顶流之巅
- 灵堂迟来的三天王,戳穿了娱圈的人情冷暖,刘德华的话,有人信了
- 没想到《一念关山》剧外能这么热闹!男主无差别抢所有人戏份翻车
- “渣男”原形毕露?也许再多的名和利,都救不了48岁的于震!
- 夏天长湿疹别再喝啤酒
- “刀郎停更”却被媒体称赞,这一次,韩红的话,终于有人信了!
