用于动态分配数据库连接的方法和装置制造方法及图纸

技术编号:18398512 阅读:36 留言:0更新日期:2018-07-08 19:21
一种用于动态分配数据库连接的方法和装置,该方法包括:确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及回收所述线程池中除在所述预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。通过建立线程监控机制和数据库连接分配机制来监控线程池中各个线程的活动状态并对线程池中空闲线程所对应的数据库连接进行回收。由此增加了接口程序对空闲数据库连接的回收功能,可释放空闲数据库连接给与其他活动线程相对应的业务模块,而不是以长连接的模式被业务模块独占,实现了业务模块的动态申请、使用及释放数据库连接的机制以达到数据库连接高效使用的目的。

【技术实现步骤摘要】
用于动态分配数据库连接的方法和装置
本专利技术涉及计算机领域,更具体地涉及一种用于动态分配数据库连接的方法和装置。
技术介绍
数据库连接是数据处理系统中的宝贵资源,对数据库连接的管理能显著地影响到整个应用程序的伸缩性和健壮性,从而影响到程序的性能指标。数据库连接的建立与断开对数据处理系统而言是耗费资源的操作。目前,利用数据库连接池来解决数据库连接的建立与断开耗费资源这一问题,即将使用频率较高的数据库连接放入数据库连接池中,从而提高了数据处理系统的性能。通常,不同接口程序的线程数、及其所使用的数据库连接数是相同的。随着移动互联网业务的不断增长,接口程序需要支持的业务的数量不断增多,这导致接口程序的线程所使用的数据库连接越来越多。然而,接口程序使用的数据库连接一般为长连接,这导致在业务模块初始化阶段或者业务高峰期接口程序占用的数据库连接会一直得不到释放。由于数据库连接的总数是有限的,因此分配给各业务模块的数据库连接的数目也受到限制。这带来了接口程序与数据库交互的最大瓶颈,即互联网渠道需要接口提供更高的并发,而接口无法申请到更多的数据库连接。
技术实现思路
鉴于以上所述的一个或多个问题,本专利技术提供了一种用于动态分配数据库连接的方法和装置。根据本公开的一个方面,提供了一种用于动态分配数据库连接的方法,包括:确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及回收线程池中除在预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。在一个示例性实施例中,确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程的处理包括:监测线程池中的各个线程是否处于活动状态;相关联地记录线程池中处于活动状态的每个线程的线程号、以及指示该线程处于活动状态的时间点或时间段的时间信息;以及基于相关联地记录的线程号和时间信息确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程。在一个示例性实施例中,该用于动态分配数据库连接的方法还包括:记录线程池中的所有线程的线程号;基于线程池中的所有线程的线程号、以及相关联地记录的线程号和时间信息,确定线程池中除在预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程。在一个示例性实施例中,该用于动态分配数据库连接的方法还包括:按照线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程的活动程度,依次为线程池中在预定时段内的一个或多个时间点处于活动状态但尚未被执行的各个线程分配数据库连接,任意一个线程在预定时段内的活动程度与该线程在预定时段内处于活动状态的次数、时长、和/或频率有关。根据本公开的另一方面,提供了一种用于动态分配数据库连接的装置,包括:线程确定模块,被配置为确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及连接分配模块,被配置为回收线程池中除在预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。在一个示例性实施例中,线程确定模块还被配置为:监测线程池中的各个线程是否处于活动状态;相关联地记录线程池中处于活动状态的每个线程的线程号、以及指示该线程处于活动状态的时间点或时间段的时间信息;以及基于相关联地记录的线程号和时间信息确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程。在一个示例性实施例中,线程确定模块还被配置为:记录线程池中的所有线程的线程号;基于线程池中的所有线程的线程号、以及相关联地记录的线程号和时间信息,确定线程池中除在预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程。在一个示例性实施例中,连接分配模块还被配置为:按照线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程的活动程度,依次为线程池中在预定时段内的一个或多个时间点处于活动状态但尚未被执行的各个线程分配数据库连接,任意一个线程在预定时段内的活动程度与该线程在预定时段内处于活动状态的次数、时长、和/或频率有关。本专利技术通过建立线程监控机制和数据库连接分配机制来监控线程池中各个线程的活动状态并对线程池中空闲线程所对应的数据库连接进行回收。由此增加了接口程序对空闲数据库连接的回收功能,可释放空闲数据库连接给与其他活动线程相对应的业务模块,而不是以长连接的模式被业务模块独占,实现了业务模块的动态申请、使用及释放数据库连接的机制以达到数据库连接高效使用的目的。附图说明从下面结合附图对本专利技术的具体实施方式的描述中,可以更好地理解本专利技术,其中:图1是示出根据本专利技术实施例的用于动态分配数据库连接的方法的流程图。图2是示出图1中所示的步骤S101的示例实现过程的流程图。图3是示出图1中所示的步骤S101的示例实现过程的另一流程图。图4是示出根据本专利技术实施例的用于动态分配数据库连接的装置的框图。图5是示出能够实现根据本专利技术实施例的动态回收数据库连接的方法和装置的计算设备的示例性硬件架构的结构图。具体实施方式下面将详细描述本专利技术各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本专利技术的全面理解。但是,对于本领域技术人员来说显而易见的是,本专利技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本专利技术的示例来提供对本专利技术更清楚的理解。本专利技术绝不限于下面所提出的任何具体配置,而是在不脱离本专利技术的精神的前提下覆盖了相关元素或部件的任何修改、替换和改进。本专利技术提出了一种用于动态分配数据库连接的方法和装置,通过建立线程监控机制和数据库连接分配机制来监控线程池中各个线程的活动状态并对线程池中空闲线程所对应的数据库连接进行回收。由此增加了接口程序对空闲数据库连接的回收功能,可释放空闲数据库连接给与其他活动线程相对应的业务模块,而不是以长连接的模式被业务模块独占,实现了业务模块的动态申请、使用及释放数据库连接的机制以达到数据库连接高效使用的目的。图1是示出根据本专利技术实施例的用于动态分配数据库连接的方法的流程图。如图1所示,该用于动态分配数据库连接的方法包括:步骤S101,确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及步骤S102,回收线程池中除在预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。线程池在业务请求还未到来之前,创建一定数量的线程,放入空闲队列中。这些线程都是处于睡眠状态,即均为启动,不消耗CPU,而只是占用较小的内存空间。当业务请求到来之后,缓冲池给这次请求分配一个空闲线程,把请求传入此线程中运行,进行处理。当预先创建的线程都处于运行状态,即预制线程不够,线程池可以自由创建一定数量的新线程,用于处理更多的请求。当系统比较闲的时候,也可以通过移除一部分一直处于不活动状态的线程。线程池可以是可缓存线程池、定长线程池以及周期性线程池,本专利技术不对线程池类型作任何限定。在本专利技术中,线程池中的线程状态归类为两大类:活动状态和不活动状态。此外,连接池中的每个数据库连接和线程池中与某一业务对应的线程中的一者对应。在传统的数据库连接中,有限数量的数据库连接被分配给固定数量的业务,使得业务模块初始化阶段或者业务高峰期接口程序占用的数据库连接会一直得不到释放,造成数据库连接的浪费。本文档来自技高网...

【技术保护点】
1.一种用于动态分配数据库连接的方法,包括:确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及回收所述线程池中除在所述预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。

【技术特征摘要】
1.一种用于动态分配数据库连接的方法,包括:确定线程池中在预定时段内的一个或多个时间点处于活动状态的各个线程;以及回收所述线程池中除在所述预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程所对应的数据库连接。2.根据权利要求1所述的用于动态分配数据库连接的方法,其中,确定所述线程池中在所述预定时段内的一个或多个时间点处于活动状态的各个线程的处理包括:监测所述线程池中的各个线程是否处于活动状态;相关联地记录所述线程池中处于活动状态的每个线程的线程号、以及指示该线程处于活动状态的时间点或时间段的时间信息;以及基于相关联地记录的线程号和时间信息确定所述线程池中在所述预定时段内的一个或多个时间点处于活动状态的各个线程。3.根据权利要求2所述的用于动态分配数据库连接的方法,还包括:记录所述线程池中的所有线程的线程号;基于所述线程池中的所有线程的线程号、以及相关联地记录的线程号和时间信息,确定所述线程池中除在所述预定时段内的一个或多个时间点处于活动状态的各个线程以外的其他线程。4.根据权利要求3所述的用于动态分配数据库连接的方法,还包括:按照所述线程池中在所述预定时段内的一个或多个时间点处于活动状态的各个线程的活动程度,依次为所述线程池中在所述预定时段内的一个或多个时间点处于活动状态但尚未被执行的各个线程分配数据库连接,任意一个线程在所述预定时段内的活动程度与该线程在所述预定时段内处于活动状态的次数、时长、和/或频率有关。5.一种用于动态分配...

【专利技术属性】
技术研发人员:王淳潘文锋
申请(专利权)人:中国移动通信集团江西有限公司中国移动通信集团公司
类型:发明
国别省市:江西,36

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1