
连接池负责分配,管理和释放连接. 它允许应用程序重用现有的连接,而不是重新建立连接. 那么什么是运行机制?今天,我主要介绍连接池和常用连接池的原理.
连接是关键,有限和昂贵的资源,在多用户Web应用程序中尤为突出. 连接对象对应于物理连接. 每个操作都会打开一个物理连接,使用后会关闭该连接,这会导致系统性能下降.
连接池的解决方案是在应用程序启动时建立足够的连接delphi 连接池,并讨论构成连接池的这些连接(简单地说: 将许多半成品连接对象放在“池”中)该应用程序动态应用,使用和释放池中的连接. 对于连接池中具有更多连接的并发请求,应将它们在请求队列中排队. 应用程序可以根据池中连接的使用率动态地增加或减少池中的连接数.
连接池技术可重复使用尽可能多的内存消耗资源,从而大大节省内存,提高服务器服务效率并能够支持更多的客户服务. 通过使用连接池,程序的效率将大大提高. 同时,我们可以通过其自己的管理机制监视连接的数量和使用情况.
以下是访问MySQL并执行SQL命令的示例. 如果不使用连接池,则需要经历哪些过程.

不使用连接池的步骤:
TCP三向握手建立连接,MySQL认证三向握手,真正的SQL执行,MySQL关闭,TCP四向握手,关闭
您可以看到,为了执行SQL,需要进行大量的网络交互.
好处:
缺点:
使用连接池的步骤:

首次访问时,需要建立连接. 但是,后续访问将重用先前创建的连接并直接执行SQL语句.
好处:
连接池的工作原理主要由三部分组成:
通常,在初始化系统时,将根据系统配置来建立连接池,并在该池中创建多个连接对象,以便在使用连接池时可以从连接池中获取该连接对象. 连接池中的连接无法随意创建和关闭,避免了由于随意建立和关闭连接而导致的系统开销.
Java中有许多可以轻松建立连接池的容器类,例如Vector和Stack.
连接池管理策略是连接池机制的核心. 连接池中连接的分配和释放对系统性能有很大影响. 其管理策略是:
当客户端请求连接时,首先检查连接池中是否有空闲连接. 如果存在空闲连接,则将连接分配给客户端;否则,将连接分配给客户端. 如果没有空闲连接,请检查当前打开的连接数是否已达到最大. 如果未达到连接数,请重新创建与发出请求的客户端的连接. 如果达到了,请按照设置的最大等待时间等待,如果超过了最大等待时间,则会向客户端抛出异常.

当客户端释放连接时,首先确定连接的引用次数是否超过指定的值,如果超过指定的值,则从连接池中删除该连接,否则保留给其他客户端使用.
此策略可确保有效地重用连接,并避免由于频繁建立和释放连接而导致的系统资源开销.
当应用程序退出时,连接池中的所有连接都将关闭,并且释放与连接池相关的资源. 这个过程与创作相反.
为了使连接管理服务具有最大的通用性,我们必须考虑多线程环境,即并发问题.
这个问题相对容易解决,因为每种语言本身都支持并发管理,例如java,c#等. 使用sync(java)lock(C#)关键字可以确保线程同步.
我们知道交易是原子的. 这时,需要对进行操作以符合“ ALL-OR-NOTHING”原则,即必须执行或不执行一组SQL语句.
我们知道,当两个线程共享一个连接Connection对象,并且每个线程都有自己的事务要处理时,这对于连接池来说很头疼,因为即使Connection类提供了相应的事务支持,我们仍然无法确保哪个操作与该事务相对应. 这是因为我们有两个线程都在执行事务操作.
由于这个原因,我们可以使用每个事务来独占连接. 尽管此方法有点浪费连接池资源,但可以大大降低事务管理的复杂性.
连接池的分配和释放对系统的性能有很大的影响. 合理的分配和释放可以改善连接的重用性,从而减少建立新连接的开销,同时可以加快用户的访问速度.
列表可以用于连接管理. 也就是说,将所有已创建的连接放入列表以进行统一管理. 每当用户请求连接时delphi 连接池,系统都会检查此列表中是否可以分配任何连接. 如果存在,则为他分配最合适的连接,否则,向用户抛出异常.
应该在连接池中放置多少个连接以最大化系统性能?
系统可以通过设置参数(例如最小连接数(minConnection)和最大连接数(maxConnection))来控制连接池中的连接. 例如,最小连接数是系统启动时由连接池创建的连接数. 如果创建过多,则系统将启动缓慢,但是创建后系统将快速响应;如果创建的内容太少,系统将快速启动并响应缓慢. 这样,您可以在开发过程中设置较小的最小连接数,这将使开发速度更快,而在实际使用该系统时,可以设置较大的最小数,因为访问客户的速度更快. 最大连接数是连接池中允许的最大连接数. 具体设置取决于系统访问量,可以通过软件要求获得.
如何确保连接池中的连接数最少?有两种策略,动态策略和静态策略. 每隔一定时间动态检测连接池. 如果发现连接数小于最小连接数,则添加相应的新连接数,以确保连接池的正常运行. 静态是在空闲连接不足时再次检查.
如今,尽管每个应用程序(需要RDBMS)都与连接池密不可分,但在实际使用中,连接池可能已经是“不可见的”. 也就是说,在正常情况下,连接池完成项目的初始配置后,无需进行任何更改.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-176060-1.html
不要大惊小怪
小米一万毫安时的69元确实不错就是太重了
015-10W*1