连接池这一概念想必对于程序员来说并不陌生了,毕竟经常会在连接数据库的时候使用到的,那么大家了解连接池的原理是什么吗?知道它的工作原理吗?
首先要明确连接池技术的核心思想就是连接的复用,就是希望建立一个数据库连接池及一套连接使用、分配和管理策略,让该连接池中的连接可以获得更加高效、安全的复用,主要是避免了数据库连接频繁的建立、关闭的额外开销。
其次,需要了解的是连接池的工作原理主要是由三部分组成的,分别是连接池的建立、连接池中连接的使用管理和连接池的关闭。
连接池的建立
通常是在系统初始化的时候,连接池就会根据系统的配置建立,还会在池中创建几个待连接的对象,以便使用的时候可以从连接池里面获取。连接池中的连接是不能随意创建和关闭的,这样可以有效避免连接随意建立和关闭造成的系统开销。其实Java里面也提供了很多容器类可以方便的构建连接池,例如Vector、Stack等。
连接池的管理
连接池管理策略也是连接池机制的核心,因为连接池内连接的分配和释放对系统的性能是存在很大的影响。究其管理策略就是:
每当客户请求数据库连接的时候,首先就要查看连接池里面是不是有空闲连接,如果是存在空闲连接,就会把连接分配给到客户去使用;如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就会重新创建一个连接给到请求的客户;如果已经达到就按设定的最大等待时间去进行等待,要是超出了最大的等待时间,就抛出异常给客户。当客户释放数据库连接的时候,先要判断该连接的引用次数是不是已经超过了规定值,如果是超过就从连接池里面删除掉该连接,否则就保留着,去为其他客户服务。
连接池的关闭
在应用程序退出时,关闭了连接池中所有的连接,释放连接池相关的资源,过个程正好与创建相反了。
数据库连接池的主要操作步骤如下所示:
1.建立数据库连接池对象即服务器启动。
2.按照事先指定的参数创建初始数量的数据库连接,即空闲连接数。
3.对于一个数据库访问请求,可以直接从连接池中得到一个连接。如果是数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),就会建一个新的数据库连接。
4.存取数据库。
5.关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列里面去。)。
6.释放数据库连接池对象。
好了,以上就是本篇文章的所有内容了,还想了解更多java常见问答知识,记得关注本站消息哦,更多精彩内容等你来获取!
推荐阅读: