数据库连接池原理

合集下载

数据库连接池的使用与配置方法

数据库连接池的使用与配置方法

数据库连接池的使用与配置方法引言数据库是现代软件系统的重要组成部分,它负责存储和管理大量的数据。

在软件开发过程中,经常需要与数据库进行交互,而数据库连接则是实现这一过程的关键。

然而,大量的数据库连接请求可能会导致性能问题和资源浪费。

为了解决这个问题,数据库连接池应运而生。

本文将介绍数据库连接池的使用与配置方法,以提高数据库连接的效率和性能。

一、什么是数据库连接池数据库连接池是一种数据库连接管理机制,它维护一组数据库连接,以供应用程序复用。

连接池通过预先创建一定数量的数据库连接,并将其保存在池中;当应用程序需要连接数据库时,从池中取出一个连接并将其分配给应用程序使用。

在应用程序不再需要连接时,将释放连接并放回连接池,以供其他应用程序使用。

通过连接的复用和池的管理,数据库连接池可以有效地减少数据库连接的创建和销毁开销,提高应用程序的响应速度和资源利用率。

二、数据库连接池的优势1. 提高系统响应速度:通过复用连接,避免了频繁创建和销毁连接的开销,减少了与数据库建立连接的时间,从而提高了系统的响应速度。

2. 提高资源利用率:连接池提供了对连接的管理和复用,可以根据应用程序的需求动态调整连接数,有效地利用系统资源。

同时,连接池还可以对连接进行预处理和监控,进一步提高资源的利用效率。

3. 减轻数据库负载:连接池通过限制同时存在的连接数,可以有效地控制连接的并发数,从而减轻了数据库的负载,提高了数据库的吞吐量。

三、数据库连接池的配置1. 连接池参数设置:连接池的配置主要包括最大连接数、最小连接数、初始连接数、最大空闲连接数等参数。

最大连接数决定了连接池可以同时提供的最大连接数;最小连接数和初始连接数用于指定连接池的初始大小;最大空闲连接数用于控制连接池中保持空闲的最大连接数。

通过灵活配置这些参数,可以根据应用程序的需求进行调整,以达到最佳的性能和资源利用效果。

2. 连接超时设置:连接超时是指连接等待数据库响应的最大时间。

连接池的工作原理

连接池的工作原理

连接池的工作原理
连接池是一种用于提高数据库连接使用效率的技术。

它通过预先创建一定数量的数据
库连接,并将这些连接放入一个连接池中,以便在需要数据库连接的时候可以快速获取。

连接池中的连接可以被不同的线程共享和重复使用,避免了频繁地创建和销毁连接的开
销。

连接池的工作原理如下:
1. 初始化连接池:在程序启动时,连接池会根据配置文件或者代码指定的参数,创
建一定数量的数据库连接,并将这些连接放入连接池中。

连接池还可以设置一些额外的参数,例如最大连接数、最小连接数、空闲连接超时时间等。

2. 获取连接:当程序需要连接数据库时,它会向连接池请求一个连接。

连接池会首
先判断连接池中是否有可用的空闲连接,如果有,则会直接将一个空闲连接分配给该程序;如果没有可用的空闲连接,连接池还可以根据策略选择是否创建新的连接(直到达到最大
连接数限制)。

3. 使用连接:程序通过获取到的连接可以执行数据库操作,例如查询、插入、更新等。

当程序使用完连接后,需要手动释放连接资源,将连接返回给连接池,使其可以被其
他程序复用。

4. 连接池管理:连接池会监控连接的状态,例如连接是否有效、连接是否超时等。

如果连接失效或超时,连接池会将该连接从连接池中移除,并创建新的连接补充连接池。

连接池还会根据配置的参数动态调整连接池中连接的数量,保证最佳的连接使用效率。

通过连接池,可以充分利用已经创建的数据库连接,减少了频繁创建新连接的开销,
提高了数据库访问的性能和效率。

连接池还可以防止由于数据库连接不释放而引起的连接
泄漏问题,确保系统的稳定性和可靠性。

连接池工作原理

连接池工作原理

连接池工作原理连接池是一种用于管理数据库连接的技术,它能够有效地提高数据库访问的性能和效率。

连接池的工作原理是通过预先创建一定数量的数据库连接,并将这些连接保存在一个池中,当应用程序需要访问数据库时,直接从连接池中获取连接,使用完毕后再将连接放回连接池中,而不是每次都重新创建和销毁连接。

这种方式可以减少数据库连接的创建和销毁次数,从而提高数据库访问的效率。

连接池的工作原理主要包括连接的创建、连接的获取、连接的释放和连接的销毁几个方面。

首先,连接池在启动时会创建一定数量的数据库连接,并将这些连接保存在连接池中。

这些连接是提前创建好的,可以在应用程序需要访问数据库时立即获取和使用,而不需要等待连接的创建过程。

其次,当应用程序需要访问数据库时,直接从连接池中获取一个空闲的连接。

连接池会管理这些连接的状态,确保只有空闲的连接才会被分配给应用程序使用,而不会出现连接被重复使用或者被多个应用程序同时使用的情况。

然后,应用程序在使用完毕连接后,将连接释放回连接池中。

连接池会重新标记这些连接为“空闲”,以便其他应用程序可以继续使用这些连接,而不需要重新创建新的连接。

最后,连接池会定期检查连接的状态,当连接长时间没有被使用时,连接池会将这些连接销毁,以释放资源和避免连接的过期。

通过连接池的工作原理,可以有效地减少数据库连接的创建和销毁次数,提高数据库访问的性能和效率。

同时,连接池还可以对数据库连接进行管理和监控,确保连接的有效性和可靠性,从而提高应用程序对数据库的稳定性和可靠性。

总之,连接池是一种非常重要的数据库访问技术,它能够通过预先创建和管理数据库连接,提高数据库访问的性能和效率,同时还能够对数据库连接进行管理和监控,确保数据库访问的稳定性和可靠性。

连接池的工作原理是通过连接的创建、获取、释放和销毁来实现的,通过这种方式可以有效地减少数据库连接的创建和销毁次数,提高数据库访问的效率,是一种非常值得推广和应用的技术。

数据库连接池的原理机制

数据库连接池的原理机制

数据库连接池的原理机制1.连接池初始化:在应用程序启动时,连接池会根据配置参数预先创建一定数量的数据库连接,并存放在连接池中。

通常情况下,初始化时创建的连接数量较少,但根据实际需求会不断动态增加。

2.连接请求获取:当应用程序需要与数据库进行交互时,它会从连接池中获取一个可用的连接。

如果连接池中没有可用连接,请求线程将会等待,直到连接池中有可用连接或者超时。

这个过程是通过线程池技术实现的。

3.连接使用与归还:获取到连接后,应用程序使用这个连接进行数据库操作。

操作完成后,应用程序需要将连接归还给连接池,以便其他线程可以继续使用。

连接的归还可以通过调用连接池提供的归还方法或者将连接放入连接池管理的线程本地变量中来完成。

4.连接池维护与扩容:在连接池运行期间,连接池会监控连接的使用情况。

如果发现一些连接长时间没有被使用,连接池会关闭这个连接并删除。

同时,连接池会根据业务需求动态增加连接数量,使连接池始终保持一定数量的可用连接。

5.连接状态管理:连接池会维护每个连接的状态信息。

例如,连接的空闲状态表示连接可供使用,活动状态表示连接正在被使用。

连接池会通过时间戳等机制来检测连接的可用性和超时情况。

6.连接池参数配置:连接池提供了一系列的参数配置,用于调整连接池的大小、最大连接数、最小连接数、超时时间等。

这些参数可以根据应用的实际需求进行调优,以达到最佳的性能和稳定性。

1.提高数据库操作效率:连接池预先创建了一定数量的数据库连接,避免了每次连接数据库的开销,提高了数据库操作效率。

2.节省系统资源:连接池可以限制最大连接数,避免了频繁的连接创建和销毁过程,从而节省了系统资源。

3.提高并发处理能力:连接池可以同时为多个线程提供数据库连接,提高了系统的并发处理能力,降低了系统响应时间。

4.动态扩容与回收:连接池会动态增加和回收连接的数量,根据业务的负载情况来调整连接池的大小,以适应不同的业务需求。

5.连接状态管理:连接池能够管理连接的状态,保证连接的可用性和稳定性,提供了连接超时等机制,防止连接长时间占用而导致的资源浪费。

数据库连接池的工作原理

数据库连接池的工作原理

数据库连接池的工作原理数据库连接池是一种用于管理数据库连接的技术,它能够提高数据库的性能和并发访问能力。

本文将介绍数据库连接池的工作原理,包括连接池的创建、连接的获取和释放、连接的管理等方面。

一、连接池的创建连接池的创建是在应用程序启动时进行的。

在创建连接池时,需要指定连接池的大小、最大连接数、最小空闲连接数等参数。

连接池的大小是指连接池中的连接数,最大连接数是指连接池所能容纳的最大连接数,最小空闲连接数是指连接池中保持的最小空闲连接数。

连接池的创建过程需要耗费一定的时间和资源,因此一般只在应用程序启动时进行一次。

二、连接的获取当应用程序需要与数据库进行交互时,首先需要从连接池中获取一个连接。

连接的获取是通过连接池的获取连接方法来实现的。

在获取连接之前,连接池会判断连接池中是否有可用的连接,如果有,则直接返回一个连接给应用程序;如果没有可用的连接,则根据连接池的配置和策略来创建新的连接。

在获取连接时,连接池还会根据配置的最大连接数来判断是否已经达到最大连接数,如果已达到最大连接数,则会等待一定的时间,然后再次尝试获取连接。

三、连接的释放当应用程序使用完连接后,需要将连接返回给连接池进行管理,以便其他应用程序可以继续使用该连接。

连接的释放是通过连接池的释放连接方法来实现的。

在释放连接时,连接池会将连接的状态设置为可用,并将连接放回连接池中。

在释放连接之前,连接池还会根据配置的最小空闲连接数来判断是否需要销毁一些多余的连接,以减少资源的占用。

四、连接的管理连接池还负责连接的管理工作,包括连接的状态管理、连接的健康检查和连接的超时处理等。

连接的状态管理是指连接池会维护连接的状态信息,包括连接的使用状态、空闲状态和繁忙状态等。

连接的健康检查是指连接池会定期检查连接的可用性,以确保连接的正常工作。

连接的超时处理是指连接池会对连接进行超时判断,如果连接超时,则会将其关闭并从连接池中移除。

五、连接池的优势使用数据库连接池可以带来许多优势。

python. 连接池原理

python. 连接池原理

python. 连接池原理Python连接池原理连接池是一种常见的技术,用于管理数据库连接、网络连接或其他资源。

在Python中,连接池用于提高性能和效率,减少资源的重复创建和销毁。

本文将详细介绍Python连接池的原理、实现方式和使用方法。

一、连接池的概念连接池是一种管理和复用资源的技术。

在数据库或网络编程中,会频繁地创建和销毁连接,这样会消耗大量的时间和资源。

而连接池的作用就是将连接保存在一个池中,当需要连接时,从池中获取已存在的连接,而不是每次都创建新的连接。

这样可以避免频繁地创建和销毁连接,提高程序的性能和效率。

连接池通常包含以下几个关键组成部分:1. 连接池管理器(Pool Manager):负责管理连接池的创建、销毁和连接分配。

2. 连接池(Connection Pool):实际存储和管理连接的容器,通常是一个数据结构,如列表或哈希表。

3. 连接对象(Connection Object):具体的连接对象,如数据库连接对象或网络连接对象,它们需要实现获取和释放连接的方法。

二、连接池的实现方式Python中连接池的实现方式主要有两种:线程池和进程池。

下面将分别介绍这两种方式的原理和使用方法。

1. 线程池线程池是最常见的连接池实现方式之一。

它使用线程作为连接的载体,通过创建一定数量的线程,将连接保存在一个列表中。

当需要连接时,从列表中获取一个空闲的连接,并将其标记为使用中。

连接使用完毕后,再将其标记为空闲,放回连接池供其他线程使用。

下面是一个简单的线程池实现示例:pythonimport threadingimport queueclass ConnectionPool:def __init__(self, max_connections):self.connections = queue.Queue(max_connections)for _ in range(max_connections):self.connections.put(Connection())def get_connection(self):conn = self.connections.get()conn.set_busy(True)return conndef return_connection(self, conn):conn.set_busy(False)self.connections.put(conn)class Connection:def __init__(self):self.busy = Falsedef set_busy(self, value):self.busy = valuedef execute(self, sql):# 执行SQL语句pass在上面的示例中,ConnectionPool类表示线程池,connections队列保存连接对象。

数据库连接池超时配置及解决方案

数据库连接池超时配置及解决方案

数据库连接池超时配置及解决方案在使用数据库连接池时,超时配置是一个非常重要的问题。

合理配置超时时间可以保障系统的稳定性和性能,确保应用程序在高并发环境下高效运行。

本文将详细介绍数据库连接池超时配置的原理,以及一些常见的解决方案。

一、超时配置的作用和原理数据库连接池是一种管理数据库连接的机制,它预先创建一些数据库连接并保存在连接池中,应用程序在需要数据库连接时,直接从连接池中获取连接,使用完之后再将连接归还给连接池。

这样可以避免频繁创建和关闭连接的开销,提高数据库操作的效率。

超时配置是指连接池在获取连接时设置的等待时间,当连接池无法在超时时间内分配连接时,会抛出超时异常。

超时配置的主要作用是控制连接池中可用连接的数量,避免连接池过载或者被过度消费。

超时配置的实现原理是通过定时任务和线程池来实现的。

当连接池无法及时分配连接,内部定时任务会定期检查空闲连接的超时情况,并释放超过超时时间的连接。

同时,通过线程池来管理连接请求的分配和回收,保证连接池的高效运行。

二、超时配置的优化策略1. 合理设置连接池的最大连接数连接池的最大连接数决定了连接池中能保存的最大连接数量。

合理设置最大连接数可以避免连接池过载,同时避免系统资源浪费。

如果最大连接数设置过小可能导致连接不足,无法满足系统的并发需求;如果设置过大可能导致系统资源被占用过多,影响系统的稳定性。

2. 设置适当的超时时间超时时间需要根据实际情况进行配置。

通常来说,超时时间太短会导致连接分配不足,从而抛出超时异常;超时时间过长会导致连接池资源被长时间占用,无法及时释放,影响系统的并发能力和稳定性。

根据业务需求和系统压力,可以通过监控和调优来确定合适的超时时间。

3. 使用心跳机制心跳机制是连接池中常用的一种优化策略。

可以通过定时发送心跳语句来检测连接的可用性,一旦发现连接不可用,则将其从连接池中移除。

这样可以避免使用不可用的连接,提高系统的效率和可靠性。

4. 使用连接池分区对于高并发系统,可以考虑将连接池进行分区管理。

数据库连接池的作用及原理

数据库连接池的作用及原理

数据库连接池的作用及原理1. 介绍数据库连接池是数据库应用程序中常用的技术之一,它的作用是通过预先建立一定数量的数据库连接对象,将这些连接对象存放在一个池子中,然后在需要连接数据库的时候,从连接池中获取一个空闲的数据库连接对象进行使用。

使用完毕后,再将连接放回连接池,以供其他线程复用。

数据库连接池的存在可以提高数据库访问性能、降低资源消耗,使应用程序更高效稳定。

2. 作用数据库连接池的主要作用包括以下几个方面:2.1 提高数据库访问性能数据库连接的建立和释放会消耗较多的时间和系统资源。

通过使用连接池,可以避免频繁地创建和销毁连接,从而减少系统开销,并且在连接池中可复用现有的连接,减少了建立连接的时间,提高了数据库访问的响应速度。

2.2 资源控制和管理数据库连接池可以限制连接的数量,通过设置连接池的最大连接数,可以有效地控制数据库连接的使用,避免过多的连接导致系统的性能下降。

连接池还可以实现对连接的生命周期进行管理,包括连接的创建、销毁、超时等,更好地管理系统资源。

另外,连接池还可以设置连接的最小空闲数和最大空闲时间,保持连接的稳定性和可靠性。

2.3 防止数据库连接泄露在使用数据库连接时,如果没有正确释放连接,会导致连接的泄露。

数据库连接泄露会占用系统资源,最终导致系统崩溃。

连接池可以通过连接的闲置超时机制和自动回收功能,检测并关闭长时间未使用的连接,及时释放系统资源,防止连接泄露的发生。

3. 连接池的原理数据库连接池的实现原理主要包括以下几个方面:3.1 连接池的创建和初始化连接池的创建一般在系统初始化的时候进行,根据系统的需求和实际情况设置连接池的参数,例如最大连接数、最小空闲数、最大空闲时间等。

连接池也可以设置一些其他的参数,例如连接超时时间、回收机制等。

初始化连接池时,会创建一定数量的连接对象,并将这些连接对象放入连接池中。

3.2 连接的获取和释放应用程序在需要连接数据库时,可以从连接池中获取一个可用的连接对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。

一.早期我们怎么进行数据库操作1.原理:一般来说,java应用程序访问数据库的过程是:①装载数据库驱动程序;②通过jdbc建立数据库连接;③访问数据库,执行sql语句;④断开数据库连接。

2.代码// 查询所有用户[java]view plaincopyprint?1.Public void FindAllUsers(){2.//1、装载sqlserver驱动对象3. DriverManager.registerDriver(new SQLServerDriver());4.//2、通过JDBC建立数据库连接5. Connection con =DriverManager.getConnection("jdbc:sqlserver://192.168.2.6:1433;DatabaseName=customer", "sa", "123");6.//3、创建状态7. Statement state =con.createStatement();8.//4、查询数据库并返回结果9. ResultSet result =state.executeQuery("select * from users");10.//5、输出查询结果11.while(result.next()){12. System.out.println(result.getString("email"));13. }14.//6、断开数据库连接15. result.close();16. state.close();17. con.close();18. }3.分析程序开发过程中,存在很多问题:首先,每一次web请求都要建立一次数据库连接。

建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。

这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。

可是对于现在的web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。

在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。

不是危言耸听,这就是制约某些电子商务网站发展的技术瓶颈问题。

其次,对于每一次数据库连接,使用完后都得断开。

否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。

还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。

上述的用户查询案例,如果同时有1000人访问,就会不断的有数据库连接、断开操作:通过上面的分析,我们可以看出来,“数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。

其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。

就避免了一次建立数据库连接和断开的操作时间消耗。

原理如下:二. 技术演进出来的数据库连接池由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。

我们知道,对于共享资源,有一个很著名的设计模式:资源池(resource pool)。

该模式正是为了解决资源的频繁分配﹑释放所造成的问题。

为解决上述问题,可以采用数据库连接池技术。

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。

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

我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。

更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。

我们自己尝试开发一个连接池,来为上面的查询业务提供数据库连接服务:①编写class 实现DataSource 接口②在class构造器一次性创建10个连接,将连接保存LinkedList中③实现getConnection 从 LinkedList中返回一个连接④提供将连接放回连接池中方法1、连接池代码[java]view plaincopyprint?1.public class MyDataSource implementsDataSource {2.//链表 --- 实现栈结构3. privateLinkedList<Connection> dataSources = new LinkedList<Connection>();4.5.//初始化连接数量6. publicMyDataSource() {7.//一次性创建10个连接8.for(int i = 0; i < 10; i++) {9.try {10.//1、装载sqlserver驱动对象11. DriverManager.registerDriver(new SQLServerDriver());12.//2、通过JDBC建立数据库连接13. Connection con =DriverManager.getConnection(14."jdbc:sqlserver://192.168.2.6:1433;DatabaseName=customer", "sa", "123");15.//3、将连接加入连接池中16. dataSources.add(con);17. } catch (Exception e) {18. e.printStackTrace();19. }20. }21. }22.23.@Override24. publicConnection getConnection() throws SQLException {25.//取出连接池中一个连接26. finalConnection conn = dataSources.removeFirst(); // 删除第一个连接返回27. returnconn;28. }29.30.//将连接放回连接池31. publicvoid releaseConnection(Connection conn) {32. dataSources.add(conn);33. }34. }2、使用连接池重构我们的用户查询函数[java]view plaincopyprint?1.//查询所有用户2. Public void FindAllUsers(){3.//1、使用连接池建立数据库连接4. MyDataSource dataSource = newMyDataSource();5. Connection conn =dataSource.getConnection();6.//2、创建状态7. Statement state =con.createStatement();8.//3、查询数据库并返回结果9. ResultSet result =state.executeQuery("select * from users");10.//4、输出查询结果11.while(result.next()){12. System.out.println(result.getString("email"));13. }14.//5、断开数据库连接15. result.close();16. state.close();17.//6、归还数据库连接给连接池18. dataSource.releaseConnection(conn);19. }这就是数据库连接池的原理,它大大提供了数据库连接的利用率,减小了内存吞吐的开销。

我们在开发过程中,就不需要再关心数据库连接的问题,自然有数据库连接池帮助我们处理,这回放心了吧。

但连接池需要考虑的问题不仅仅如此,下面我们就看看还有哪些问题需要考虑。

三.连接池还要考虑更多的问题1、并发问题为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。

这个问题相对比较好解决,因为java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。

使用方法为直接在类方法前面加上synchronized关键字,如:publicsynchronized connection getconnection()2、多数据库服务器和多用户对于大型的企业级应用,常常需要同时连接不同的数据库(如连接oracle和sybase)。

如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址等信息。

根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。

连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。

对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。

3、事务处理我们知道,事务具有原子性,此时要求对数据库的操作符合“all-all-nothing”原则即对于一组sql语句要么全做,要么全不做。

在java语言中,connection类本身提供了对事务的支持,可以通过设置connection的autocommit属性为false 然后显式的调用commit或rollback方法来实现。

但要高效的进行connection复用,就必须提供相应的事务支持机制。

可采用每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。

4、连接池的分配与释放连接池的分配与释放,对系统的性能有很大的影响。

合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。

对于连接的管理可使用空闲池。

即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。

每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。

如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxconn)如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。

相关文档
最新文档