数据库连接池的动态管理方法和系统与流程

文档序号:12470360阅读:497来源:国知局
数据库连接池的动态管理方法和系统与流程

本发明涉及数据库管理技术领域,尤其涉及一种数据库连接池的动态管理方法和系统。



背景技术:

在当今海量信息化的互联网时代,数据库从简单的存储各种数据表单到海量数据存储在各行各业得到了广泛的应用,因此数据库连接池的应用越来越广泛,数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个,能够提高对数据库操作的性能,因此,连接池的性能直接决定了访问数据库的性能,从而也决定了整个系统的性能。

现有的数据库连接池的管理方案一般是:预先设置好连接池的各项配置参数,连接池在工作时就按照设置好的配置参数运行,配置参数一般包括连接池的最大连接数、最小连接数等,其中,最小连接数是连接池会一直保持的数据连接,如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费掉;最大连接数是连接池能够申请的最大连接数,如果数据连接请求超过最大连接数,后面的数据连接请求将被加入到等待队列中,直到有数据库连接释放后,会按照等待队伍中的数据连接请求的顺序分配释放的数据库连接,但是当等待队伍中的数据连接请求等待时间较长时,会影响之后的数据库操作。

但是,对于现有的数据库连接池,其最大连接数和最小连接数都是预先设置好的,并不会根据连接池的实时运行信息对其进行调整,因此无法对连接池进行动态调整,造成数据库连接池的性能较低。



技术实现要素:

本发明提供一种数据库连接池的动态管理方法和系统,其主要目的在于解决无法对连接池进行动态调整的技术问题,提高数据库连接池的性能。

为实现上述目的,本发明提供一种数据库连接池的动态管理方法,该数据库连接池的动态管理方法包括:

定时或者实时获取连接池中的数据库连接的运行信息,其中,所述运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数中的一个或者多个;

根据获取到的所述运行信息调整所述连接池的配置参数,其中,所述配置参数包括所述连接池的最大连接数和最小连接数,或者,根据获取到的所述运行信息调整所述连接池中的数据库连接的连接状态。

可选地,所述根据获取到的所述运行信息,调整所述连接池的连接数的步骤包括:

当所述连接池的并发连接数在预设时长内持续小于所述连接池的最小连接数时,减小所述连接池的最小连接数。

可选地,所述根据获取到的所述运行信息,调整所述连接池的连接数的步骤包括:

当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数。

可选地,所述当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数的步骤包括:

当所述获取连接时长大于预设连接请求时间阈值时,判断数据库当前是否有空闲连接;

若所述数据库当前有空闲连接,则获取空闲连接数,并根据所述空闲连接数增大所述连接池的最大连接数。

可选地,所述根据获取到的所述运行信息,调整所述连接池中的数据库连接的连接状态的步骤包括:

当所述连接池中有数据库连接的所述连接占用时长大于预设连接占用时间阈值时,关闭占用时长大于所述预设连接占用时间阈值的所述数据库连接;

所述调整所述连接池中的数据库连接的连接状态的步骤之后,所述数据库连接池的动态管理方法还包括步骤:

输出所述连接池发生连接泄漏的通知信息。

此外,为实现上述目的,本发明还提供一种数据库连接池的动态管理系统,该数据库连接池的动态管理系统包括:

信息获取模块,用于定时或者实时获取连接池中的数据库连接的运行信息,其中,所述运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数中的一个或者多个;

连接池调整模块,用于根据获取到的所述运行信息调整所述连接池的配置参数,其中,所述配置参数包括所述连接池的最大连接数和最小连接数,或者,根据获取到的所述运行信息调整所述连接池中的数据库连接的连接状态。

可选地,所述连接池调整模块,还用于当所述连接池的并发连接数在预设时长内持续小于所述连接池的最小连接数时,减小所述连接池的最小连接数。

可选地,所述连接池调整模块,还用于当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数。

可选地,所述连接池调整模块包括:

连接判断单元,用于当所述获取连接时长大于预设连接请求时间阈值时,判断数据库当前是否有空闲连接;

连接池调整单元,用于若所述数据库当前有空闲连接,则获取空闲连接数,并根据所述空闲连接数增大所述连接池的最大连接数。

可选地,所述连接池调整模块,还用于当所述连接池中有数据库连接的所述连接占用时长大于预设连接占用时间阈值时,关闭占用时长大于所述预设连接占用时间阈值的所述数据库连接;

所述数据库连接池的动态管理系统还包括:

信息输出模块,用于输出所述连接池发生连接泄漏的通知信息。

本发明提出的数据库连接池的动态管理方法和系统,对数据库连接池中的数据库连接的运行信息进行定时或者实时地采集,运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数,也就说,在数据库连接池处于运行状态时,采集各个运行信息,对连接池的运行情况进行实时监控,进而根据获取到的运行信息对连接池的配置参数进行调整,例如连接池的最大连接数、最小连接数等,或者,根据获取到的运行信息对连接池的数据库的连接状态进行调整,通过这种方式,能够实时地根据连接池中数据库连接的使用情况对连接池的配置参数进行动态管理,能够避免因为最小连接数过大,而导致数据库连接长时间处于空闲状态造成资源浪费,或者避免因为最大连接数不能满足应用当前的需求而造成等待过久的问题,总之,本发明提出的方法和系统能够提高对连接池进行动态调整,提高其性能,进而提高访问数据库的性能。

附图说明

图1为本发明数据库连接池的动态管理方法第一实施例的流程图;

图2为本发明数据库连接池的动态管理方法第二实施例的流程图;

图3为本发明数据库连接池的动态管理系统第一实施例的功能模块示意图;

图4为本发明数据库连接池的动态管理系统第二实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种数据库连接池的动态管理方法。参照图1所示,为本发明数据库连接池的动态管理方法第一实施例的流程图。

在本实施例中,该数据库连接池的动态管理方法包括:

步骤S10,定时或者实时获取连接池中的数据库连接的运行信息,其中,所述运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数中的一个或者多个;

可以理解的是,本发明提出的数据库连接池的动态管理方法适用于各种不同类型的连接池,例如:DBCP(Database connection pool,数据库连接池)、C3PO连接池(一种开放源代码的JDBC连接池)、proxool连接池等各种类型的数据库连接池。

数据库连接池主要负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

连接池在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,也并非将连接关闭,而是将连接放回连接池中,以供下一个连接请求访问使用。而连接的建立、断开都由连接池自身来管理,或者通过其自身的管理机制来管理。

这些数据库连接的数量由连接池的配置参数制约,配置参数包括但不限于:最小连接数、最大连接数、最大空闲时间、连接的最大使用次数等等,其中,最大空闲时间是指大于最小连接数的数据库连接处于空闲状态的最长时间,当超过该时间后,它会被释放;最小连接数是指无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。最小连接数与最大连接数相差较大时,最先的连接请求将会获利,之后超过最小连接数的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

在连接池的运行过程中,定时或者实时获取连接池中的数据库连接的运行信息,其中,运行信息包括但不限于:获取连接时长、连接占用时长、连接并发数以及空闲连接数等。其中,获取连接时长是指:连接池接收到应用发送的连接获取请求的时间点到分配一个连接池给该应用的时间点之间的时长;连接占用时长是指:将一个数据库连接分配给应用的时间点到应用使用完毕后将该连接归还至连接池的时间点之间的时长;连接并发数是指连接池中当前同时处于使用状态的数据库连接数量;空闲连接数是指连接池中当前处于空闲状态的数据库连接的数量。

步骤S20,根据获取到的所述运行信息调整所述连接池的配置参数,其中,所述配置参数包括所述连接池的最大连接数和最小连接数,或者,根据获取到的所述运行信息调整所述连接池中的数据库连接的连接状态。

在获取到上述运行信息后,根据运行信息对连接池的配置参数进行动态调整,具体地,对连接池的最大连接数,最小连接数或者最大空闲时间等参数进行调整。关于调整连接池的配置参数,可以包括多种情况,例如,减小最小连接数,增大最大连接数,增大最小连接数或者较小最大连接数等。

作为一种实施方式,步骤S20可以包括以下步骤:

当所述连接池的并发连接数在预设时长内持续小于所述连接池的最小连接数时,减小所述连接池的最小连接数。

如果连接池的并发连接数在一定时间内持续小于连接池的最小连接数,则说明当前有一些数据库连接是处于空闲状态的,造成资源浪费,此时可以将最小连接数减小,以便于将空闲的连接再归还给数据库,以使数据库能够分配至其他的应用使用,避免资源因为闲置而造成浪费。

作为另一种实施方式,步骤S20可以包括以下步骤:

当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数。

获取连接时长是连接池接收到应用发送的连接获取请求的时间点到分配一个连接池给该应用的时间点之间的时长。连接池在接收到所述应用的获取数据库连接请求时,判断当前的并发连接数是否小于最大连接数,若是,则与数据库建立新的连接,并将建立的新连接分配至所述应用,若否,则将所述数据库连接请求放入等待队列中。因此,当等待队伍中的数据库连接请求较多时,会造成应用的获取连接时长较长,说明,此时应用对于数据库连接的需求量大,连接池中的数据库连接数已经不满足应用的使用需求,则增大连接池的最大连接数,允许连接池向数据库申请更多的连接。其中,预设连接请求时间阈值可以根据应用的数据量进行设置。

需要说明的是,本发明提出的数据库连接池的动态管理方法,同样适用于对多应用的管理,例如,数据库同时为多个应用提供连接,每个应用有一个连接池,按照应用的使用情况,将数据库中的连接分配给多个不同的应用。

进一步地,根据数据库当前的连接情况判断能够增大最大连接数,如数据库当前有空闲连接时,增大连接池的最大连接数,具体地,当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数的步骤包括以下细化步骤:

当所述获取连接时长大于预设连接请求时间阈值时,判断数据库当前是否有空闲连接;

若所述数据库当前有空闲连接,则获取空闲连接数,并根据所述空闲连接数增大所述连接池的最大连接数。

对于一个连接池来说,能否增大最大连接数需要考虑为其提供连接的数据库是否有空闲连接,因此,在获取连接时长大于预设连接请求时间阈值时,先判断数据库当前是否有空闲连接,若有空闲连接,则获取空闲连接数,并根据空闲连接数增大连接池的最大连接数,增大的连接数量可以小于或者等于数据库当前的空闲连接的数量。具体地,在判断数据库当前是否有空闲连接时,可以向数据库发送增大最大连接数的请求,数据库在接收到请求时,可以向数据库发送反馈信息,以说明是否有空闲连接以及空闲连接的数量。

本实施例提出的数据库连接池的动态管理方法,对数据库连接池中的数据库连接的运行信息进行定时或者实时地采集,运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数,也就说,在数据库连接池处于运行状态时,采集各个运行信息,对连接池的运行情况进行实时监控,进而根据获取到的运行信息对连接池的配置参数进行调整,例如连接池的最大连接数、最小连接数等,或者,根据获取到的运行信息对连接池的数据库的连接状态进行调整,通过这种方式,能够实时地根据连接池中数据库连接的使用情况对连接池的配置参数进行动态管理,能够避免因为最小连接数过大,而导致数据库连接长时间处于空闲状态造成资源浪费,或者避免因为最大连接数不能满足应用当前的需求而造成等待过久的问题,总之,本发明提出的方法能够提高对连接池进行动态调整,提高其性能,进而提高访问数据库的性能。

基于第一实施例提出本发明数据库连接池的动态管理方法的第二实施例。参照图2所示,在本实施例中,步骤S20包括以下细化步骤:

步骤S21,当所述连接池中有数据库连接的所述连接占用时长大于预设连接占用时间阈值时,关闭占用时长大于所述预设连接占用时间阈值的所述数据库连接;

在步骤S20之后,该数据库连接池的动态管理方法还包括:

步骤S30,输出所述连接池发生连接泄漏的通知信息。

在本实施例中,在检测到连接池中有数据库连接的占用时长过长,即大于预设连接占用时间阈值时,说明应用在获取到数据库连接后,长时间未将其归还至连接池,判定发生了连接泄漏的情况,此时,将该被占用的时长过长的数据库连接关闭,实现对连接池的动态管理,提高连接池的性能;同时,向用户输出通知信息,提示用户连接池发生了连接泄漏,以便于用户及时处理,关于输出通知信息的方式,可以向绑定的邮箱发送邮件、或者向绑定的手机等移动终端发送通知信息等。

或者,作为一种实施方式,运行信息还包括建立连接时长,则步骤S20包括:当所述建立连接时长大于预设建立连接时间阈值时,中断连接的建立,并输出提示信息以提示用户当前连接建立速度慢,可以在间隔一段时间后再重新建立。在网络状况不好的情况下,例如发生网络拥堵时,连接池建立新的数据库连接的时长会比较长,甚至会出现发送建立连接的请求后长时间内,仍然没有成功建立新的连接的情况。此时,则可以中断连接的建立,过一段时间后重新尝试,实现对连接池的动态管理,提高连接池的管理效率,进而提高连接池的性能。

本发明还提出一种数据库连接池的动态管理系统。

参照图3所示,为本发明数据库连接池的动态管理系统第一实施例的功能模块示意图。

在该实施例中,该数据库连接池的动态管理系统包括:

信息获取模块10,用于定时或者实时获取连接池中的数据库连接的运行信息,其中,所述运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数中的一个或者多个;

可以理解的是,本发明提出的数据库连接池的动态管理系统适用于各种不同类型的连接池,例如:DBCP(Database connection pool,数据库连接池)、C3PO连接池(一种开放源代码的JDBC连接池)、proxool连接池等各种类型的数据库连接池。

数据库连接池主要负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

连接池在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,也并非将连接关闭,而是将连接放回连接池中,以供下一个连接请求访问使用。而连接的建立、断开都由连接池自身来管理,或者通过其自身的管理机制来管理。

这些数据库连接的数量由连接池的配置参数制约,配置参数包括但不限于:最小连接数、最大连接数、最大空闲时间、连接的最大使用次数等等,其中,最大空闲时间是指大于最小连接数的数据库连接处于空闲状态的最长时间,当超过该时间后,它会被释放;最小连接数是指无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。最小连接数与最大连接数相差较大时,最先的连接请求将会获利,之后超过最小连接数的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

在连接池的运行过程中,信息获取模块10定时或者实时获取连接池中的数据库连接的运行信息,其中,运行信息包括但不限于:获取连接时长、连接占用时长、连接并发数以及空闲连接数等。其中,获取连接时长是指:连接池接收到应用发送的连接获取请求的时间点到分配一个连接池给该应用的时间点之间的时长;连接占用时长是指:将一个数据库连接分配给应用的时间点到应用使用完毕后将该连接归还至连接池的时间点之间的时长;连接并发数是指连接池中当前同时处于使用状态的数据库连接数量;空闲连接数是指连接池中当前处于空闲状态的数据库连接的数量。

连接池调整模块20,用于根据获取到的所述运行信息调整所述连接池的配置参数,其中,所述配置参数包括所述连接池的最大连接数和最小连接数,或者,根据获取到的所述运行信息调整所述连接池中的数据库连接的连接状态。

在获取到上述运行信息后,连接池调整模块20根据运行信息对连接池的配置参数进行动态调整,具体地,对连接池的最大连接数,最小连接数或者最大空闲时间等参数进行调整。关于调整连接池的配置参数,可以包括多种情况,例如,减小最小连接数,增大最大连接数,增大最小连接数或者较小最大连接数等。

作为一种实施方式,连接池调整模块20还用于:当所述连接池的并发连接数在预设时长内持续小于所述连接池的最小连接数时,减小所述连接池的最小连接数。

如果连接池的并发连接数在一定时间内持续小于连接池的最小连接数,则说明当前有一些数据库连接是处于空闲状态的,造成资源浪费,此时连接池调整模块20可以将连接池的最小连接数减小,以便于将空闲的连接再归还给数据库,以使数据库能够分配至其他的应用使用,避免资源因为闲置而造成浪费。

作为另一种实施方式,连接池调整模块20还用于:当所述获取连接时长大于预设连接请求时间阈值时,增大所述连接池的最大连接数。

获取连接时长是连接池接收到应用发送的连接获取请求的时间点到分配一个连接池给该应用的时间点之间的时长。连接池在接收到所述应用的获取数据库连接请求时,判断当前的并发连接数是否小于最大连接数,若是,则与数据库建立新的连接,并将建立的新连接分配至所述应用,若否,则将所述数据库连接请求放入等待队列中。因此,当等待队伍中的数据库连接请求较多时,会造成应用的获取连接时长较长,说明,此时应用对于数据库连接的需求量大,连接池中的数据库连接数已经不满足应用的使用需求,则连接池调整模块20增大连接池的最大连接数,允许连接池向数据库申请更多的连接。其中,预设连接请求时间阈值可以根据应用的数据量进行设置。

需要说明的是,本发明提出的数据库连接池的动态管理系统,同样适用于对多应用的管理,例如,数据库同时为多个应用提供连接,每个应用有一个连接池,按照应用的使用情况,将数据库中的连接分配给多个不同的应用。

进一步地,根据数据库当前的连接情况判断能够增大最大连接数,如数据库当前有空闲连接时,增大连接池的最大连接数,具体地,连接池调整模块20包括连接判断单元,用于当所述获取连接时长大于预设连接请求时间阈值时,判断数据库当前是否有空闲连接;连接池调整单元,用于若所述数据库当前有空闲连接,则获取空闲连接数,并根据所述空闲连接数增大所述连接池的最大连接数。

对于一个连接池来说,能否增大最大连接数需要考虑为其提供连接的数据库是否有空闲连接,因此,在获取连接时长大于预设连接请求时间阈值时,连接判断单元先判断数据库当前是否有空闲连接,若有空闲连接,则连接池调整单元获取空闲连接数,并根据空闲连接数增大连接池的最大连接数,增大的连接数量可以小于或者等于数据库当前的空闲连接的数量。具体地,在判断数据库当前是否有空闲连接时,可以向数据库发送增大最大连接数的请求,数据库在接收到请求时,可以向数据库发送反馈信息,以说明是否有空闲连接以及空闲连接的数量。

本实施例提出的数据库连接池的动态管理系统,对数据库连接池中的数据库连接的运行信息进行定时或者实时地采集,运行信息包括获取连接时长、连接占用时长、连接并发数以及空闲连接数,也就说,在数据库连接池处于运行状态时,采集各个运行信息,对连接池的运行情况进行实时监控,进而根据获取到的运行信息对连接池的配置参数进行调整,例如连接池的最大连接数、最小连接数等,或者,根据获取到的运行信息对连接池的数据库的连接状态进行调整,通过这种方式,能够实时地根据连接池中数据库连接的使用情况对连接池的配置参数进行动态管理,能够避免因为最小连接数过大,而导致数据库连接长时间处于空闲状态造成资源浪费,或者避免因为最大连接数不能满足应用当前的需求而造成等待过久的问题,总之,本发明提出的系统能够提高对连接池进行动态调整,提高其性能,进而提高访问数据库的性能。

基于第一实施例提出本发明数据库连接池的动态管理系统的第二实施例。参照图4所示,在本实施例中,连接池调整模块20还用于:当所述连接池中有数据库连接的所述连接占用时长大于预设连接占用时间阈值时,关闭占用时长大于所述预设连接占用时间阈值的所述数据库连接;

该数据库连接池的动态管理系统还包括:

信息输出模块30,用于输出所述连接池发生连接泄漏的通知信息。

在本实施例中,在检测到连接池中有数据库连接的占用时长过长,即大于预设连接占用时间阈值时,说明应用在获取到数据库连接后,长时间未将其归还至连接池,判定发生了连接泄漏的情况,此时,连接池调整模块20将该被占用的时长过长的数据库连接关闭,实现对连接池的动态管理,提高连接池的性能;同时,信息输出模块30向用户输出通知信息,提示用户连接池发生了连接泄漏,以便于用户及时处理,关于输出通知信息的方式,可以向绑定的邮箱发送邮件、或者向绑定的手机等移动终端发送通知信息等。

或者,作为一种实施方式,运行信息还包括建立连接时长,当所述建立连接时长大于预设建立连接时间阈值时,连接池调整模块20中断连接的建立,信息输出模块30输出提示信息以提示用户当前连接建立速度慢,可以在间隔一段时间后再重新建立。在网络状况不好的情况下,例如发生网络拥堵时,连接池建立新的数据库连接的时长会比较长,甚至会出现发送建立连接的请求后长时间内,仍然没有成功建立新的连接的情况。此时,则可以中断连接的建立,过一段时间后重新尝试,实现对连接池的动态管理,提高连接池的管理效率,进而提高连接池的性能。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1