CN111046023A - 数据库连接管理方法、服务器及计算机存储介质 - Google Patents
数据库连接管理方法、服务器及计算机存储介质 Download PDFInfo
- Publication number
- CN111046023A CN111046023A CN201911267992.3A CN201911267992A CN111046023A CN 111046023 A CN111046023 A CN 111046023A CN 201911267992 A CN201911267992 A CN 201911267992A CN 111046023 A CN111046023 A CN 111046023A
- Authority
- CN
- China
- Prior art keywords
- database
- database connection
- server
- access request
- connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000010926 purge Methods 0.000 claims description 11
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据库连接管理方法、服务器及计算机存储介质,用于减轻服务器建立连接池的负担以及管理和维护连接池的负担。本申请实施例方法包括:服务器接收客户端发送的访问请求,并根据访问请求获取数据库连接,使用缓存管理机制对数据库连接进行管理。本申请实施例中,当数据库的数量不断增多而服务器的数量较少导致服务器难以进行高效地数据处理时,为了维持正常的数据处理能力,服务器管理数据库对应的数据库连接的方式不再是为每一个数据库建立连接池,而是使用缓存管理机制来管理数据库连接,因此,减轻了服务器建立连接池以及管理和维护连接池的负担。
Description
技术领域
本申请实施例涉及数据管理领域,具体涉及一种数据库连接管理方法、服务器及计算机存储介质。
背景技术
Java平台企业版(Java platform enterprise edition,Java EE)是一套使用Java编程语言进行企业级网络应用开发的技术标准,而数据库连接(Java databaseconnectivity,JDBC)是Java EE标准中一项重要的核心技术,JDBC技术提供了连接和访问数据库、对数据库进行查询和更新的方法。当客户端需要连接和访问数据库时,Java服务器建立该数据库的数据库连接,并设置连接池来管理数据库连接。连接池也就是Java服务器建立的用于存放指定的数据库连接的一块独立空间,Java服务器为每一个数据库建立一个连接池,并对每个连接池进行维护和管理。
然而,Java服务器使用连接池来管理数据库连接的做法存在弊端,原因在于,由于Java服务器会为每一个数据库建立连接池,一旦数据库的数量不断增多,Java服务器便需要建立更多的连接池来管理数据库连接,同时需要对建立的连接池进行维护和管理,若此时Java服务器的数量较少,则无疑增加了Java服务器建立连接池的负担以及管理和维护连接池的负担,导致Java服务器难以进行高效地数据处理。
发明内容
本申请实施例提供了一种数据库连接管理方法、服务器及计算机存储介质,用于减轻服务器建立连接池的负担以及管理和维护连接池的负担。
本申请实施例第一方面提供了一种数据库连接管理方法,包括:
接收客户端发送的访问请求;
根据所述访问请求获取数据库连接;
使用缓存管理机制管理所述数据库连接。
优选的,所述使用缓存管理机制管理所述数据库连接,包括:
使用所述缓存管理机制包括的清除机制,清除所述数据库连接中的一个或多个数据库连接。
优选的,所述使用所述缓存管理机制包括的清除机制,清除所述数据库连接中的一个或多个数据库连接,包括:
获取所述客户端最后一次使用一个或多个所述数据库连接的目标时间点;
根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接。
优选的,所述根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接,包括:
按照所述目标时间点的时间顺序依次排列多个所述数据库连接,形成队列;
当所述队列中的所述数据库连接的数量n大于预设数量N时,将最接近所述队列的前端的(n-N)个数据库连接清除,其中,n和N分别为大于1的正整数。
优选的,所述根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接,包括:
判断所述数据库连接的目标时间点是否在预设的时间范围内;
若不在,则清除不在所述时间范围内的目标时间点所对应的数据库连接。
优选的,所述根据所述访问请求获取数据库连接之后,所述方法还包括:
将所述数据库连接交由处理所述访问请求的线程保管;
所述使用缓存管理机制管理所述数据库连接,包括:
在所述线程的生命周期结束之后,将由所述线程保管的所述数据库连接存储至缓存单元中。
优选的,所述根据所述访问请求获取数据库连接,包括:
判断所述缓存单元中是否存储有与所述访问请求中携带的请求信息对应的所述数据库连接;
若所述缓存单元中存储有与所述请求信息对应的所述数据库连接,则从所述缓存单元中调用所述数据库连接;
若所述缓存单元中没有存储与所述请求信息对应的所述数据库连接,则根据所述访问请求创建所述数据库连接。
优选的,根据所述访问请求创建所述数据库连接,包括:
根据所述访问请求中携带的请求信息,在路由信息中查询所述客户端所要访问的数据库,所述路由信息包括所述访问请求与所述数据库的对应关系;
创建与查询到的所述数据库对应的所述数据库连接。
本申请实施例第二方面提供了一种服务器,包括:
接收单元,用于接收客户端发送的访问请求;
获取单元,用于根据所述访问请求获取数据库连接;
缓存单元,用于使用缓存管理机制管理所述数据库连接。
优选的,所述缓存单元具体用于使用所述缓存管理机制包括的清除机制,清除所述数据库连接中的一个或多个数据库连接。
优选的,所述缓存单元具体用于获取所述客户端最后一次使用一个或多个所述数据库连接的目标时间点,根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接。
优选的,所述缓存单元具体用于按照所述目标时间点的时间顺序依次排列多个所述数据库连接,形成队列,当所述队列中的所述数据库连接的数量n大于预设数量N时,将最接近所述队列的前端的(n-N)个数据库连接清除,其中,n和N分别为大于1的正整数。
优选的,所述缓存单元具体用于判断所述数据库连接的目标时间点是否在预设的时间范围内,若不在,则清除不在所述时间范围内的目标时间点所对应的数据库连接。
优选的,所述服务器还包括:
转交单元,用于将所述数据库连接交由处理所述访问请求的线程保管;
所述缓存单元具体用于在所述线程的生命周期结束之后,将由所述线程保管的所述数据库连接存储至缓存单元中。
优选的,所述获取单元具体用于判断所述缓存单元中是否存储有与所述访问请求中携带的请求信息对应的所述数据库连接,若所述缓存单元中存储有与所述请求信息对应的所述数据库连接,则从所述缓存单元中调用所述数据库连接;若所述缓存单元中没有存储与所述请求信息对应的所述数据库连接,则根据所述访问请求创建所述数据库连接。
优选的,所述获取单元具体用于根据所述访问请求中携带的请求信息,在路由信息中查询所述客户端所要访问的数据库,所述路由信息包括所述访问请求与所述数据库的对应关系,创建与查询到的所述数据库对应的所述数据库连接。
本申请实施例第三方面提供了一种服务器,包括:
处理器、存储器、总线、输入输出设备;
所述处理器与所述存储器、输入输出设备相连;
所述总线分别连接所述处理器、存储器以及输入输出设备;
所述输入输出设备用于接收客户端发送的访问请求;
所述处理器用于根据所述访问请求获取数据库连接;
所述处理器还用于使用缓存管理机制管理所述数据库连接。
本申请实施例第四方面提供了一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行前述第一方面的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,服务器接收客户端发送的访问请求,并根据访问请求获取数据库连接,使用缓存管理机制对数据库连接进行管理。当数据库的数量不断增多而服务器的数量较少导致服务器难以进行高效地数据处理时,为了维持正常的数据处理能力,服务器管理数据库对应的数据库连接的方式不再是为每一个数据库建立连接池,而是使用缓存管理机制来管理数据库连接,因此,减轻了服务器建立连接池以及管理和维护连接池的负担。
附图说明
图1为本申请实施例中数据库连接管理方法一个流程示意图;
图2为本申请实施例中数据库连接管理方法另一流程示意图;
图3为本申请实施例中数据库连接管理方法另一流程示意图;
图4为本申请实施例中数据库连接管理方法另一流程示意图;
图5为本申请实施例中服务器一个结构示意图;
图6为本申请实施例中服务器另一结构示意图;
图7为本申请实施例中服务器另一结构示意图。
具体实施方式
本申请实施例提供了一种数据库连接管理方法、服务器及计算机存储介质,用于减轻服务器建立连接池的负担以及管理和维护连接池的负担。
请参阅图1,本申请实施例中数据库连接管理方法一个实施例包括:
101、接收客户端发送的访问请求。
当客户端需要访问数据库时,客户端向服务器发送访问数据库的访问请求,服务器接收该访问请求。
本实施例中,客户端对数据库的访问是指客户端对数据库的任何操作,包括查询数据库、更新数据库等操作,即包括客户端所作出的任何涉及到数据库的操作。
102、根据访问请求获取数据库连接。
服务器根据访问请求中携带的信息获取与客户端所要访问的数据库对应的一个或多个数据库连接,以便于让客户端通过数据库连接访问到该客户端所要访问的数据库。
103、使用缓存管理机制管理数据库连接。
当服务器中存在数据库连接时,服务器可以使用缓存管理机制来对数据库连接进行管理。其中,服务器对数据库连接的管理是指服务器针对数据库连接所执行的任何操作,该操作包括但不限于清除数据库连接、将数据库连接存储在缓存单元中等操作。
本实施例中,服务器接收客户端发送的访问请求,并根据访问请求获取数据库连接,使用缓存管理机制对数据库连接进行管理。当数据库的数量不断增多而服务器的数量较少导致服务器难以进行高效地数据处理时,为了维持正常的数据处理能力,服务器管理数据库对应的数据库连接的方式不再是为每一个数据库建立连接池,而是使用缓存管理机制来管理数据库连接,因此,减轻了服务器建立连接池以及管理和维护连接池的负担。
本申请实施例中,服务器管理数据库连接的方式除了将数据库连接存储在缓存单元中,还可以是服务器根据缓存管理机制清除一个或多个数据库连接,其中,缓存管理机制包括清除机制。下面将对本申请实施例的清除机制进行详细地描述。
本申请实施例中,服务器可以根据目标时间点对数据库连接进行有目的性地清除,其中,目标时间点是指客户端最后一次使用一个或多个数据库连接的时间点,最后一次使用数据库连接的时间点是在客户端使用某个数据库连接的所有时间点当中,与服务器清除数据库连接的时间点的时间距离最短的一个时间点。例如,客户端使用某个数据库连接的所有时间点分别是同一日期的15:10、15:30及15:50,而服务器清除数据库连接的时间点是同一日期的16:00,由于15:50与16:00的时间距离最短,因此,该数据库连接最后一次被使用的时间点是15:50,应将15:50作为该数据库连接的目标时间点。同理,若某个数据库连接在服务器清除数据库连接的时间点之前只被客户端使用过一次,则该数据库连接的目标时间点即为该数据库连接唯一一次被使用的时间点。
可以理解的是,由于创建数据库连接的目的在于使客户端能够使用数据库连接访问数据库,因此,对于新创建的数据库连接,在客户端使用该新创建的数据库连接之前,应将该新创建的数据库连接的创建时间点作为目标时间点。例如,数据库连接Z是新创建的数据库连接,创建数据库连接Z的时间点是15:40,服务器清除数据库连接的时间点是同一日期的16:10,在15:40至16:10的这段时间内,数据库连接Z还没有被客户端使用,因此,在客户端使用数据库连接Z之前,应将15:40作为数据库连接Z的目标时间点。
需要说明的是,使用某个数据库连接的客户端可以是同一客户端,也可以是不同的客户端,对此不作限定。可以理解的是,多个数据库连接的目标时间点可能相同,也可能会不同。而某个数据库连接的目标时间点并不是一成不变的,例如,客户端使用某个数据库连接的所有时间点分别是同一日期的15:10、15:30、15:45及16:20,当服务器清除数据库连接的时间点是同一日期的16:00时,则数据库连接的目标时间点为15:45,而当服务器清除数据库连接的时间点为同一日期的16:30时,则该数据库连接的目标时间点应为16:20,而不再是15:45,以此类推。
在实际应用中,由于客户端通常会使用数据库连接一段时间。因此,确定客户端使用数据库连接的时间点可以是该一段时间内的任意一个时间点,优选方案是将客户端对数据库连接的使用完毕后断开数据库连接的时间点作为客户端使用数据库连接的时间点。
可以理解的是,在实际应用中,本申请实施例中的时间点的单位可以精确至秒、毫秒,或者仅精确至分、小时,甚至可以仅精确至日期,本申请实施例对此不作限定。
本申请实施例提供了服务器根据目标时间点清除数据库连接的两种方法,图2示出其中一种方法。请参阅图2,本申请实施例中数据库连接管理方法一个实施例包括:
201、接收客户端发送的访问请求。
本步骤与前述图1所示实施例中的步骤101类似,此处不再赘述。
202、判断缓存单元中是否存储有与访问请求中携带的请求信息对应的数据库连接,若是,则执行步骤204;若否,则执行步骤203。
服务器接收到访问请求后,根据访问请求中携带的请求信息确定客户端所要访问的数据库,若该数据库存在数据库连接,则表示访问请求中携带的请求信息与客户端所要访问的数据库的数据库连接对应。
服务器判断缓存单元中是否存储有与访问请求中携带的请求信息对应的数据库连接,若存储有与该请求信息对应的数据库连接,则执行步骤204;若没有储存与该请求信息对应的数据库连接,则执行步骤203。
访问请求中携带的请求信息可以是访问请求的身份信息,访问请求的身份信息表示该访问请求由具体的某个客户端发出。访问请求中携带的请求信息也可以是统一资源定位符(uniform resource locator,URL)路径,还可以是包含在请求行中的请求方法或者请求参数,只要服务器根据请求信息能够判断出与请求信息对应的数据库连接即可,请求信息的具体形式不作限定。
203、根据访问请求创建数据库连接。
当缓存中没有存储与访问请求中携带的请求信息对应的数据库连接时,服务器根据访问请求中携带的请求信息确定客户端所要访问的数据库,并创建该数据库对应的数据库连接,以使客户端能够使用数据库连接访问数据库。
本实施例中,服务器可以根据访问请求中携带的请求信息在路由信息中查询客户端所要访问的数据库,路由信息包括访问请求与数据库的对应关系,即访问请求中携带的请求信息与数据库的识别信息的对应关系,其中,数据库的识别信息可以是数据库的IP地址、端口号,数据库名等能够识别数据库身份的信息。路由信息可以记录在路由表或者其他数据表中。当服务器查询到客户端所要访问的数据库之后,服务器获取与查询到的数据库对应的一个或多个数据库连接。
本实施例中,由于数据库的识别信息可以记录在路由表上,服务器可以通过路由表查询到客户端所要访问数据库,因此,若存在新增的数据库,服务器只需要在路由表上配置数据库的IP地址等识别信息,无需在整个服务器上增加数据库的配置,简化了服务器的操作。
在实际应用中,服务器也可以不通过路由信息查询的方式确定客户端所要访问的数据库,而是通过识别访问请求的特性所包含的信息,如URL路径、包含在请求行中的请求方法或者请求参数等特性所包含的信息,来确定客户端所要访问的数据库,只要服务器能够确定出客户端所要访问的数据库的其他方式亦可,具体方式不作限定。
204、从缓存单元中调用数据库连接。
若缓存中存储有与访问请求中携带的请求信息对应的数据库连接时,服务器从缓存中调用该与请求信息对应的数据库连接,以使客户端能够通过数据库连接访问数据库。
本实施例中,服务器在接收客户端发送的访问请求之后,也可以无需判断缓存单元中是否存储有与访问请求中携带的请求信息对应的数据库连接,而是直接创建客户端所要访问的数据库所对应的数据库连接,具体此处不作限定。
205、获取客户端最后一次使用一个或多个数据库连接的目标时间点。
服务器从数据库连接中携带的信息获取到该数据库连接的目标时间点。在本实施例中,服务器会获取到多个目标时间点,该多个目标时间点分别对应多个数据库连接。
206、按照目标时间点的时间顺序依次排列多个数据库连接,形成队列。
服务器获取到多个目标时间点之后,服务器按照时间顺序将多个目标时间点分别对应多个数据库连接依次排列,形成队列。例如,服务器得到数据库连接A、B、C、D和E分别对应的目标时间点是同一日期的13:20、15:30、14:50、16:10及15:40,则服务器按照时间顺序对数据库连接A、B、C、D和E进行排列,形成的队列为D-E-B-C-A或者A-C-B-E-D。
207、将最接近队列的前端的(n-N)个数据库连接清除。
当队列中的数据库连接的数量n大于预设数量N时,服务器将最接近队列的前端的(n-N)个数据库连接清除,其中,n和N分别为大于1的正整数。其中,最接近队列的前端是指队列中的数据库连接的目标时间点与服务器清除数据库连接的时间点的时间距离最长。
举例来说,在上述步骤206的例子当中,若服务器将队列中的数据库连接的预设数量设置为3个,则服务器应确定最接近队列的前端的2个数据库连接作为清除对象。若服务器清除数据库连接的时间点为16:15,则在队列中的数据库连接A、B、C、D和E中,由于数据库连接A和数据库连接C的目标时间点分别是13:20、14:50,这两个时间点与服务器清除数据库连接的时间点16:15的时间距离最长,因此,服务器会将数据库连接A和C清除。
同理,若此时服务器在同一日期的16:15新创建了数据库连接F,在客户端第一次使用数据库连接F之前,服务器将创建数据库连接F的时间点16:15作为F的目标时间点,并将F加入到清除后的队列中,形成F-D-E-B或者B-E-D-F的队列。由于超过了队列数据库连接的预设数量,且数据库连接B与服务器清除数据库连接的时间点16:15的时间距离最长,因此,服务器应将最接近队列的前端的数据库连接B清除。
在实际应用中,服务器可以不间断地、持续地监控队列中数据库连接的数量是否超过预设数量,也可以通过设置计时器,在到达预设时间点时确定缓存单元中是否存在需要清除的数据库连接,本实施例对服务器清除数据库连接的执行时间点不作限定。
本实施例中,服务器可以实时地监控队列中数据库连接的数量是否超过预设数量,一旦队列中数据库连接的数量是否超过预设数量,服务器将依据目标时间点清除数据库连接,保证缓存单元中的数据库连接的数量维持在预设水平,实现对数据库连接的有效管理。
以上描述了服务器根据目标时间点清除数据库连接的其中一种方法,下面将对服务器根据目标时间点清除数据库连接的另外一种方法进行详细描述。请参阅图3,本申请实施例中数据库连接管理方法一个实施例包括:
301、接收客户端发送的访问请求。
302、判断缓存单元中是否存储有与访问请求中携带的请求信息对应的数据库连接,若是,则执行步骤204;若否,则执行步骤203。
303、根据访问请求创建数据库连接。
304、从缓存单元中调用数据库连接。
305、获取客户端最后一次使用一个或多个数据库连接的目标时间点。
本实施例中的步骤301至305与前述图2所示实施例中的步骤201至205类似,此处不再赘述。
306、服务器判断数据库连接的目标时间点是否在预设的时间范围内,若不在,则执行步骤307。
服务器可以预先设置具体的时间范围,并判断数据库连接的目标时间点是否在预设的时间范围内,若数据库连接的目标时间点在预设的时间范围内,则无需清除该数据库连接;若不在,则执行步骤307。
时间范围可以是服务器清除数据库连接的时间点与过去任意一个时间点的时间距离,例如,如果服务器清除数据库连接的时间点是2017年11月9日10:25,服务器可以将清除数据库连接的时间点与过去一个时间点的时间距离设定为1天,即时间范围是2017年11月8日10:25至2017年11月9日10:25。在此设定的条件下,服务器判断是否有目标时间点不在上述时间范围内的数据库连接,若存在该数据库连接,则执行步骤307。
307、清除不在时间范围内的目标时间点所对应的数据库连接。
服务器根据设定好的时间范围判断是否有目标时间点不在上述时间范围内的数据库连接,若有,则将该数据库连接清除。
例如,在步骤306的例子当中,数据库连接X的目标时间点是2017年11月8日08:40,该目标时间点不在上述的时间范围之内,说明数据库连接X最后一次被客户端使用的时间点与服务器清除数据库连接的时间点的时间距离已经超过了1天,服务器在设定的条件下,应该将数据库连接X清除。
再例如,在步骤306的例子当中,若数据库连接Y是新创建的数据库连接且创建时的时间点是2017年11月8日09:30,Y创建之后一直没有被客户端使用,则Y的目标时间点为2017年11月8日09:30,此目标时间点不在上述的时间范围内,因此,服务器将数据库连接Y清除。
本实施例中,服务器可以监控数据库连接的目标时间点是否在预设的时间范围内,若不在时间范围内,则将该数据库连接清除,目的是为了让长时间没有被客户端使用的数据库连接不占用缓存空间,同时,也减轻了服务器自身的管理负担。
在实际应用中,服务器也可以不考虑清除数据库连接的时间点,而是直接取某段时间作为预设的时间范围。例如,服务器清除数据库连接的时间点是2017年11月9日10:25,服务器直接将过去的一段时间2017年11月6日13:40至2017年11月7日10:25设定为时间范围,并将目标时间点不在此时间范围的数据库连接清除,目的在于能够使服务器在选择清除特定的数据库连接时更加灵活。可以理解的是,只要使服务器能够依据预设的时间范围清除数据库连接即可,时间范围的具体设定方式不作限定。
本实施例中,服务器可以不间断地、持续地监控队列中数据库连接的目标时间点是否在预设的时间范围之内,也可以通过设置计时器,在到达预设时间点时判断数据库连接的目标时间点是否在预设的时间范围之内,还可以是服务器在相同的时间间隔下自动判断数据库连接的目标时间点是否在预设的时间范围之内,本实施例对服务器清除数据库连接的执行时间点不作限定。
图2及图3所示实施例描述了本申请实施例服务器根据目标时间点清除数据库连接的两种方法,除此之外,服务器还可以结合上述两种方法,即按照时间顺序将多个目标时间点分别对应多个数据库连接依次排列,形成队列,当队列中的数据库连接的数量没有超过预设数量时,服务器判断队列中一个或多个数据库连接的目标时间点是否在预设的时间范围内,若有一个或多个数据库连接的目标时间点不在预设的时间范围内,则服务器将该不在预设的时间范围内的数据库连接清除。本申请实施例中,只要服务器能够根据目标时间点对数据库连接进行清除即可,具体根据目标时间点清除数据库连接的方式不作限定。
本申请实施例中,服务器除了可以根据目标时间点清除数据库连接之外,还可以根据数据库连接的使用频率对数据库连接进行清除,当某个数据库连接的使用频率低于预设频率时,服务器清除该数据库连接。此外,服务器还可以根据缓存淘汰算法,如最近最少使用(least recently used,LRU)算法、先进先出(first in first out,FIFO)算法或者最不经常使用(least frequently used,LFU)算法,对数据库连接进行有选择性地清除,本申请实施例对服务器清除数据库连接的方式不作限定。
本申请实施例中,服务器对数据库连接的管理除了上述的对数据库连接进行有目的性地清除之外,本申请实施例还提供了另外一种数据库连接的管理方法,请参阅图4,本申请实施例中数据库连接管理方法一个实施例包括:
401、接收客户端发送的访问请求。
402、根据访问请求获取数据库连接。
本实施例中的步骤401至402与前述图1所示实施例中的步骤101至102类似,此处不再赘述。
403、将数据库连接交由处理访问请求的线程保管。
服务器将获取到的数据库连接交由服务器中处理客户端发送的访问请求的线程保管。服务器中处理访问请求的线程可以将数据库连接存储在线程本地变量(ThreadLocal)中,以保证线程之间的变量处理互不影响,也可以将数据库连接存储在哈希映射(HashMap)、队列(queue)或者存储在Java虚拟机(Java virtual machine,JVM)内的内存中,以便于服务器保持对数据库连接的管理。
404、使用缓存管理机制管理数据库连接。
本实施例中,服务器使用缓存管理机制管理数据库连接的方式还可以是,在保管数据库连接的线程的生命周期结束之后,服务器拦截该线程,并将由该线程保管的数据库连接存储至缓存单元中,以便于客户端再次访问数据库时可以复用该数据库连接。
本实施例中,服务器将数据库连接交由处理访问请求的线程保管,确保了线程之间的变量处理互不影响,并在线程的生命周期结束之后,将由线程保管的数据库连接存储至缓存单元中,便于客户端再次访问数据库时可以复用该数据库连接。
本申请实施例中,服务器使用缓存管理机制管理数据库连接的方式包括将数据库连接存储在缓存单元中以及对数据库连接进行有目的性地清除,或者修改数据库连接的信息,也可以包括服务器对数据库连接所采取的其他操作,具体此处不作限定。
需要说明的是,本申请实施例在列举数据库连接时以大写字母代表某个数据库连接以进行示例性的说明,其中,大写字母并不表示实际应用中具体的数据库连接的名称或者其他数据库连接的特性,仅仅在示例中起到作为代号的作用,大写字母并不对数据库连接作出任何限定。
上面对本申请实施例中的数据库连接管理方法进行了描述,下面对本申请实施例中的服务器进行描述,请参阅图5,本申请实施例中服务器一个实施例包括:
接收单元501,用于接收客户端发送的访问请求;
获取单元502,用于根据访问请求获取数据库连接;
缓存单元503,用于使用缓存管理机制管理数据库连接。
本实施例中,服务器中各单元所执行的操作与前述图1所示实施例中描述的类似,此处不再赘述。
本实施例中,接收单元501接收客户端发送的访问请求,获取单元502根据访问请求获取数据库连接,缓存单元503使用缓存管理机制对数据库连接进行管理。当数据库的数量不断增多而服务器的数量较少导致服务器难以进行高效地数据处理时,为了维持正常的数据处理能力,服务器管理数据库对应的数据库连接的方式不再是为每一个数据库建立连接池,而是使用缓存管理机制来管理数据库连接,因此,减轻了服务器建立连接池以及管理和维护连接池的负担。
请参阅图6,本申请实施例中服务器一个实施例包括:
接收单元601,用于接收客户端发送的访问请求;
获取单元602,用于根据访问请求获取数据库连接;
缓存单元603,用于使用缓存管理机制管理数据库连接。
本实施例中,缓存单元603具体用于使用缓存管理机制包括的清除机制,清除数据库连接中的一个或多个数据库连接。
本实施例中,缓存单元603具体用于获取客户端最后一次使用一个或多个数据库连接的目标时间点,根据目标时间点清除数据库连接中的一个或多个数据库连接。
本实施例中,缓存单元603具体用于按照目标时间点的时间顺序依次排列多个数据库连接,形成队列,当队列中的数据库连接的数量n大于预设数量N时,将最接近队列的前端的(n-N)个数据库连接清除,其中,n和N分别为大于1的正整数。
本实施例中,缓存单元603具体用于判断数据库连接的目标时间点是否在预设的时间范围内,若不在,则清除不在时间范围内的目标时间点所对应的数据库连接。
本实施例中,服务器还包括:
转交单元604,用于将数据库连接交由处理访问请求的线程保管;
缓存单元603具体用于在线程的生命周期结束之后,将由线程保管的数据库连接存储至缓存单元603中。
本实施例中,获取单元602具体用于判断缓存单元603中是否存储有与访问请求中携带的请求信息对应的数据库连接,若缓存单元603中存储有与请求信息对应的数据库连接,则从缓存单元603中调用数据库连接;若缓存单元603中没有存储与请求信息对应的数据库连接,则根据访问请求创建数据库连接。
本实施例中,获取单元602具体用于根据访问请求中携带的请求信息,在路由信息中查询客户端所要访问的数据库,路由信息包括访问请求与数据库的对应关系,创建与查询到的数据库对应的数据库连接。
本实施例中,服务器管理数据库连接的方式除了将数据库连接存储在缓存单元中,还可以是服务器根据缓存管理机制清除一个或多个数据库连接,在服务器使用缓存管理机制管理数据库连接的过程中,各单元所执行的操作与前述图2至图4所示实施例中描述的类似,此处不再赘述。
下面对本申请实施例中的服务器进行描述,请参阅图7,本申请实施例中服务器一个实施例包括:
该服务器700可以包括一个或一个以***处理器(central processing units,CPU)701和存储器705,该存储器705中存储有一个或一个以上的应用程序或数据。
其中,存储器705可以是易失性存储或持久存储。存储在存储器705的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器701可以设置为与存储器705通信,在服务器700上执行存储器705中的一系列指令操作。
服务器700还可以包括一个或一个以上电源702,一个或一个以上有线或无线网络接口703,一个或一个以上输入输出接口704,和/或,一个或一个以上操作***,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该中央处理器701可以执行前述图1至图4所示实施例中服务器所执行的操作,具体此处不再赘述。
本申请实施例还提供了一种计算机存储介质,其中一个实施例包括:该计算机存储介质中存储有指令,该指令在计算机上执行时,使得该计算机执行前述图1至图4所示实施例中服务器所执行的操作。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (11)
1.一种数据库连接管理方法,其特征在于,包括:
接收客户端发送的访问请求;
根据所述访问请求获取数据库连接;
使用缓存管理机制管理所述数据库连接。
2.根据权利要求1所述的数据库连接管理方法,其特征在于,所述使用缓存管理机制管理所述数据库连接,包括:
使用所述缓存管理机制包括的清除机制,清除所述数据库连接中的一个或多个数据库连接。
3.根据权利要求2所述的数据库连接管理方法,其特征在于,所述使用所述缓存管理机制包括的清除机制,清除所述数据库连接中的一个或多个数据库连接,包括:
获取所述客户端最后一次使用一个或多个所述数据库连接的目标时间点;
根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接。
4.根据权利要求3所述的数据库连接管理方法,其特征在于,所述根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接,包括:
按照所述目标时间点的时间顺序依次排列多个所述数据库连接,形成队列;
当所述队列中的所述数据库连接的数量n大于预设数量N时,将最接近所述队列的前端的(n-N)个数据库连接清除,其中,n和N分别为大于1的正整数。
5.根据权利要求3所述的数据库连接管理方法,其特征在于,所述根据所述目标时间点清除所述数据库连接中的一个或多个数据库连接,包括:
判断所述数据库连接的目标时间点是否在预设的时间范围内;
若不在,则清除不在所述时间范围内的目标时间点所对应的数据库连接。
6.根据权利要求1所述的数据库连接管理方法,其特征在于,所述根据所述访问请求获取数据库连接之后,所述方法还包括:
将所述数据库连接交由处理所述访问请求的线程保管;
所述使用缓存管理机制管理所述数据库连接,包括:
在所述线程的生命周期结束之后,将由所述线程保管的所述数据库连接存储至缓存单元中。
7.根据权利要求6所述的数据库连接管理方法,其特征在于,所述根据所述访问请求获取数据库连接,包括:
判断所述缓存单元中是否存储有与所述访问请求中携带的请求信息对应的所述数据库连接;
若所述缓存单元中存储有与所述请求信息对应的所述数据库连接,则从所述缓存单元中调用所述数据库连接;
若所述缓存单元中没有存储与所述请求信息对应的所述数据库连接,则根据所述访问请求创建所述数据库连接。
8.根据权利要求7所述的数据库连接管理方法,其特征在于,根据所述访问请求创建所述数据库连接,包括:
根据所述访问请求中携带的请求信息,在路由信息中查询所述客户端所要访问的数据库,所述路由信息包括所述访问请求与所述数据库的对应关系;
创建与查询到的所述数据库对应的所述数据库连接。
9.一种服务器,其特征在于,所述服务器包括:
接收单元,用于接收客户端发送的访问请求;
获取单元,用于根据所述访问请求获取数据库连接;
缓存单元,用于使用缓存管理机制管理所述数据库连接。
10.一种服务器,其特征在于,所述服务器包括:
处理器、存储器、总线、输入输出设备;
所述处理器与所述存储器、输入输出设备相连;
所述总线分别连接所述处理器、存储器以及输入输出设备;
所述输入输出设备用于接收客户端发送的访问请求;
所述处理器用于根据所述访问请求获取数据库连接;
所述处理器还用于使用缓存管理机制管理所述数据库连接。
11.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911267992.3A CN111046023A (zh) | 2019-12-11 | 2019-12-11 | 数据库连接管理方法、服务器及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911267992.3A CN111046023A (zh) | 2019-12-11 | 2019-12-11 | 数据库连接管理方法、服务器及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111046023A true CN111046023A (zh) | 2020-04-21 |
Family
ID=70235722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911267992.3A Pending CN111046023A (zh) | 2019-12-11 | 2019-12-11 | 数据库连接管理方法、服务器及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111046023A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538605A (zh) * | 2020-04-24 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种分布式数据访问层中间件及命令执行方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434543B1 (en) * | 1999-11-01 | 2002-08-13 | Sun Microsystems, Inc. | System and method for reliable caching of database connections in a distributed application |
KR20100014016A (ko) * | 2008-08-01 | 2010-02-10 | 주식회사대교 | 전자학습용 관리 서버 및 이의 전자학습 제공 방법 |
CN101902440A (zh) * | 2009-05-27 | 2010-12-01 | 北京启明星辰信息技术股份有限公司 | 一种阻断tcp连接的方法和装置 |
CN105512188A (zh) * | 2015-11-25 | 2016-04-20 | 用友网络科技股份有限公司 | 数据连接方法和数据连接*** |
CN105764065A (zh) * | 2014-12-15 | 2016-07-13 | 深圳市中兴微电子技术有限公司 | 一种应用小区连接建立失败报告的方法及设备 |
CN106844259A (zh) * | 2016-12-07 | 2017-06-13 | 硅谷数模半导体(北京)有限公司 | USBType‑C接口设备之间通信连接的建立方法和装置 |
-
2019
- 2019-12-11 CN CN201911267992.3A patent/CN111046023A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434543B1 (en) * | 1999-11-01 | 2002-08-13 | Sun Microsystems, Inc. | System and method for reliable caching of database connections in a distributed application |
KR20100014016A (ko) * | 2008-08-01 | 2010-02-10 | 주식회사대교 | 전자학습용 관리 서버 및 이의 전자학습 제공 방법 |
CN101902440A (zh) * | 2009-05-27 | 2010-12-01 | 北京启明星辰信息技术股份有限公司 | 一种阻断tcp连接的方法和装置 |
CN105764065A (zh) * | 2014-12-15 | 2016-07-13 | 深圳市中兴微电子技术有限公司 | 一种应用小区连接建立失败报告的方法及设备 |
CN105512188A (zh) * | 2015-11-25 | 2016-04-20 | 用友网络科技股份有限公司 | 数据连接方法和数据连接*** |
CN106844259A (zh) * | 2016-12-07 | 2017-06-13 | 硅谷数模半导体(北京)有限公司 | USBType‑C接口设备之间通信连接的建立方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538605A (zh) * | 2020-04-24 | 2020-08-14 | 北京思特奇信息技术股份有限公司 | 一种分布式数据访问层中间件及命令执行方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108965007B (zh) | Api网关接口配置更新方法及装置 | |
US8620926B2 (en) | Using a hashing mechanism to select data entries in a directory for use with requested operations | |
US20090157678A1 (en) | Content Based Load Balancer | |
CN107066570A (zh) | 数据管理方法及装置 | |
CN107943718B (zh) | 一种清理缓存文件的方法和装置 | |
CN107395659A (zh) | 一种业务受理及共识的方法及装置 | |
US20040220924A1 (en) | System and method for updating a cache | |
CN110837513B (zh) | 一种缓存更新方法、装置、服务器及存储介质 | |
CN105653198A (zh) | 数据处理方法及装置 | |
CN106357778A (zh) | 一种会话信息的共享方法、装置及*** | |
CN104866339B (zh) | Fota数据的分布式持久化管理方法、***和装置 | |
US20100262687A1 (en) | Dynamic data partitioning for hot spot active data and other data | |
CN106603319B (zh) | 一种故障处理的方法、管理服务器以及逻辑服务器 | |
JP2005276198A (ja) | 複数のメモリ・バッファ・サイズを均衡させるためのシステムおよび方法 | |
CN107026879B (zh) | 一种数据缓存方法及后台应用*** | |
CN111177601B (zh) | 页面渲染处理方法、装置、设备及可读存储介质 | |
CN109947724A (zh) | 分布式锁服务的方法和装置 | |
CN110581784B (zh) | 一种节点健康检查方法、装置及设备 | |
CN106161519B (zh) | 一种信息获取方法和装置 | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询*** | |
CN109274734B (zh) | 一种基于物联网云平台的服务进程调用方法及装置 | |
CN109213774B (zh) | 数据的存储方法及装置、存储介质、终端 | |
CN112491609A (zh) | 基于业务服务的***应用架构发现方法及*** | |
US20170104683A1 (en) | Dynamically segmenting traffic for a/b testing in a distributed computing environment | |
CN111046023A (zh) | 数据库连接管理方法、服务器及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |