数据库连接池原理详解与自定义连接池实现
实现原理
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
注意事项
1、数据库连接池的最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。
2、数据库连接池的最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
3、最大连接数具体值要看系统的访问量.要经过不断测试取一个平衡值
4、隔一段时间对连接池进行检测,发现小于最小连接数的则补充相应数量的新连接
5、最小连接数与最大连接数差距,最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
数据库连接池原理详解与自定义连接池实现相关推荐
- python线程池原理_Python定时器线程池原理详解
这篇文章主要介绍了Python定时器线程池原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 定时器执行循环任务: 知识储备 Timer(int ...
- OkHttp3源码详解(五) okhttp连接池复用机制
1.概述 提高网络性能优化,很重要的一点就是降低延迟和提升响应速度. 通常我们在浏览器中发起请求的时候header部分往往是这样的 keep-alive 就是浏览器和服务端之间保持长连接,这个连接是可 ...
- 详解SpringBoot配置连接池
内置的连接池 目前spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池. 数据库连接可以使用DataSource池进行自动配置. 由于Tomcat数 ...
- Android线程池原理详解
简介 但凡有点开发经验的同学都知道,频繁的创建和销毁线程是会给系统带来比较大的性能开销的.所以线程池就营运而生了.那么使用线程池有什么好处呢? 降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁 ...
- java线程池的工作原理_JAVA线程池原理详解一
线程池的优点 1.线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用. 2.可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃. 线 ...
- jdbc 连接池 java_JDBC自定义连接池过程详解
这篇文章主要介绍了JDBC自定义连接池过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 开发中,"获得连接"和" ...
- java连接池详解与自定义es连接池
目录 1 版本选择 2 依赖选择 3 使用commons-pool构造连接池 3.1 pom.xml 3.2 对象池类 GenericObjectPool普通对象池 GenericKeyedObjec ...
- 并发编程五:java并发线程池底层原理详解和源码分析
文章目录 java并发线程池底层原理详解和源码分析 线程和线程池性能对比 Executors创建的三种线程池分析 自定义线程池分析 线程池源码分析 继承关系 ThreadPoolExecutor源码分 ...
- Spring Boot 使用 HikariCP 连接池配置详解
Spring Boot 使用 HikariCP 连接池配置详解 HikariCP 是一个高性能的 JDBC 连接池组件. Spring Boot 2.x 将其作为默认的连接池组件,项目中添加 spri ...
最新文章
- UIBezierPath介绍
- ​孙家广院士:大数据软件的机遇与挑战
- 清华大学计算机系2015分数线,清华大学2015-2017高考录取分数线,附各省录取数据...
- LeetCode Combination Sum
- 我的《Android官方开发文档Training系列课程中文版》的中期翻译计划
- ICCV 2019 中国论文数量超美国,商汤57篇论文入选!
- C语言文件的随机读写
- python设置excel的格式_python 操作Excel 设置格式
- SpringNet整合NHibernate相关配置
- 计算机常用英语词汇及读音,e发音的单词有哪些
- Python安装 第三方库的安装技巧
- -bash: vim: 未找到命令
- C++二进制数转十进制
- IMO模型编程思维法(Input-Model-Output)
- 高等数学(第七版)同济大学 习题7-7 个人解答
- uniapp大转盘抽奖
- 数据库实验4 SQL语言-SELECT查询操作
- 开源PLM软件Aras详解七 在Aras的Method中如何引用外部DLL
- moncler down
- 利用Bettercap实现密码的嗅探