本发明专利技术公开了一种数据库连接资源的管理方法,该方法包括:A.数据库连接池接收到业务进程的访问请求后,确定与该访问请求对应的应用流程有逻辑关系的应用流程所对应的连接对象;B.将步骤A所确定的连接对象分配给所述业务进程的访问。采用本发明专利技术方法,能够避免污读现象,并保证数据库系统性能。
【技术实现步骤摘要】
本专利技术涉及数据库访问技术,特别涉及数据库连接资源的管理方法。
技术介绍
随着计算机技术的发展,数据管理的规模越来越大,不仅数据量急剧增加,数据共享的要求也越来越高,于是出现了数据库系统用于对所有数据实行统一、集中、独立的管理,使数据存储独立于使用数据的程序,实现数据共享。目前,大型中央数据库系统在许多领域,尤其是通信领域,得到了广泛应用。这种大型数据库系统需要并行处理多个业务进程的访问,并为各业务进程的访问分配数据库连接资源,如何保证大量在线事务处理(OLTP)并发的情况下数据库系统的高效运行、以及数据的一致性和安全性,成为数据库连接资源管理技术主要解决的问题。所述数据库系统至少包括数据库管理系统(DBMS)和物理的数据库(DataBase),以及作为支撑的计算机软/硬件系统。其中,DBMS负责接收业务进程的访问请求,为业务进程建立数据库连接,并根据该业务进程的访问需求通过数据库连接对DataBase进行操作,比如读取、写入、删除数据库记录等。在业务进程访问数据库时,每个业务进程将独占一条数据库连接,这样对于大量业务进程并发访问的数据库系统来讲,系统的响应时间将过长,很难保证良好的数据库系统性能。因此,在大量业务进程并发访问的数据库系统中,还设置了用于对数据库连接资源进行管理的数据库连接池。所述数据库连接池,在系统初始化时,根据配置文件确定向DBMS申请建立数据库连接的数目,并将所建立的每个数据库连接封装成连接对象。当用户的应用流程访问数据库时,系统首先将应用流程随机分配至某个业务进程,再由业务进程访问数据库,数据库连接池将为业务进程的每一次访问分配连接对象。每个业务进程可以由多个应用流程共享,每个连接对象可以由多个业务进程共享,这样,数据库的连接资源不再被单个业务进程的访问独占,从而能够充分利用系统资源访问数据库。也就是说连接对象与多个业务进程的访问建立多个软连接,每个连接对象与数据库之间建立一个硬连接,该多个业务进程的访问共享连接对象与数据库之间的硬连接来访问数据库。但是,当多个应用流程各自通过不同业务进程并使用不同的连接对象访问数据库时,如果该多个应用流程之间存在一定的逻辑关系,就可能出现污读现象。下面结合图1对现有多业务进程访问数据库出现的问题加以详细说明。图1为现有技术数据库连接资源分配情况示意图。如图1所示,业务进程通过数据库连接池与DBMS通信,由DBMS根据业务进程的访问请求对DataBase进行操作。其中,当前进行访问的用户包括用户1、用户2、用户3;业务进程有N个用户1的流程A和用户2的流程B被分配到业务进程1,用户1的流程B和用户2的流程A被分配到业务进程2,......,用户3的流程A和流程B被分配到业务进程N;数据库连接池中建立了M个连接对象,即数据库连接池通过DBMS与DataBase建立了M个数据库硬连接。应用流程每次通过业务进程访问数据库时,数据库连接池将为该业务进程随机分配一个连接对象,即建立数据库软连接。图1中,数据库连接池为用户1的流程A和流程B、用户2的流程B的访问分配连接对象1,并分别建立连接1、连接2和连接3;为用户2的流程A、用户3的流程A和流程B分配连接对象2,并分别建立连接4、连接5和连接6。其中,用户2的流程A和流程B的访问对应的是不同的连接对象,这样如果该流程A与流程B之间存在一定的逻辑关系,用户2访问数据库时可能出现污读。以无线通讯领域的归属位移寄存器(HLR)设备为例,该设备需要处理的消息流程有多种,而且对于同一个用户的不同消息流程而言,它们之间存在逻辑关系。假定流程A为位置登记流程,流程B为取路由流程,只有成功执行了位置登记流程,取路由流程才能根据位置登记后的数据正确获取用户2漫游地信息。由于,流程A与流程B分别通过连接对象2和连接对象1使用不同的硬连接访问数据库,也就将分别使用各自硬连接对应的数据缓存区对数据库进行操作。因此,如果在先的流程A结束时没有将其对于数据库的改动及时提交到数据库中,那么这些更新的数据就保存在连接对象2对应的数据缓存区中,随后的流程B通过连接对象1的硬连接访问数据库时,读到的是连接对象1对应的数据缓存区中的数据,该数据为未经流程A更新的“脏”数据,即产生污读。这里,数据库系统为每个数据库硬连接分配数据缓存区,将当前对数据库的修改缓存起来;DBMS将根据系统性能要求等因素在若干应用流程结束后,将数据缓存区的数据更新提交到DataBase。当然,为了避免上述污读情况,可以在每一个应用流程结束后均执行提交数据库操作,即每个应用流程对应一个数据库事务。这样从理论上可行,但频繁的提交(COMMIT)操作将导致输入/输出(I/O)迅速成为数据库系统的性能瓶颈。以Oracle数据库系统为例,每次执行COMMIT操作时,系统的写日志进程(LGWR)就会将日志缓存区的重做日志(redo log)写入日志文件。由于写日志文件涉及到外存访问,因此系统需要等待的时间就会显著增加。当应用流程即数据库事务非常多,执行COMMIT操作非常频繁时,系统等待写redo log的时间超过了其它所有操作的时间,也就是说系统主要是在等待写redo log的完成。因此,导致I/O显著增长为系统性能的瓶颈,消息流程时延的均值和离散程度都显著增加,系统的运行状态变得非常不稳定。综上所述,现有数据库连接池的数据库连接分配机制不能有效使所有应用流程使用所分配的连接访问到准确的数据,如果要避免污读只能使系统性能显著下降,甚至造成系统崩溃。如何在维持一定系统性能的基础上保证数据库访问的有效性成为目前数据库连接资源管理技术中亟待解决的问题。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,能够避免多业务进程同时访问数据库时出现的污读,并有效保证数据库系统的I/O性能。为达到上述目的,本专利技术的技术方案是这样实现的,该方法包括A.数据库连接池接收到业务进程的访问请求后,确定与该访问请求对应的应用流程有逻辑关系的应用流程所对应的连接对象;B.将步骤A所确定的连接对象分配给所述业务进程的访问。其中,所述逻辑关系为应用流程属性之间的关联关系。其中,所述有逻辑关系的应用流程为与该访问请求对应的应用流程具有相同属性的应用流程。步骤A中,所述确定连接对象的方法为预先配置应用流程属性和连接对象的对应关系,根据所述访问请求中的应用流程属性确定连接对象。步骤A中,所述配置应用流程属性和连接对象的对应关系的方法为构造哈希(HASH)算法;所述根据应用流程属性确定连接对象的方法为根据应用流程属性,通过所构造的HASH算法得到连接对象ID。步骤A中,所述配置应用流程属性和连接对象的对应关系的方法为设置应用流程属性与连接对象之间的映射关系表;所述根据应用流程属性确定连接对象的方法为根据应用流程属性查询该映射关系表确定连接对象。其中,该方法进一步包括建立并实时维护应用流程的连接对象使用状态表;步骤A中,所述确定连接对象的方法包括A1.根据访问请求中的应用流程属性查询该连接对象使用状态表,判断具有该属性的应用流程是否已经分配过连接对象,如果是,执行步骤A2;否则执行步骤A3;A2.确定该已分配的连接对象为与该访问请求对应的应用流程有逻辑关系的应用流程所对应的连接对象,执行步骤B;A3.确定本文档来自技高网...
【技术保护点】
一种数据库连接资源的管理方法,其特征在于,该方法包括:A.数据库连接池接收到业务进程的访问请求后,确定与该访问请求对应的应用流程有逻辑关系的应用流程所对应的连接对象;B.将步骤A所确定的连接对象分配给所述业务进程的访问。
【技术特征摘要】
1.一种数据库连接资源的管理方法,其特征在于,该方法包括A.数据库连接池接收到业务进程的访问请求后,确定与该访问请求对应的应用流程有逻辑关系的应用流程所对应的连接对象;B.将步骤A所确定的连接对象分配给所述业务进程的访问。2.根据权利要求1所述的方法,其特征在于,所述逻辑关系为应用流程属性之间的关联关系。3.根据权利要求2所述的方法,其特征在于,所述有逻辑关系的应用流程为与该访问请求对应的应用流程具有相同属性的应用流程。4.根据权利要求3所述的方法,其特征在于,步骤A中,所述确定连接对象的方法为预先配置应用流程属性和连接对象的对应关系,根据所述访问请求中的应用流程属性确定连接对象。5.根据权利要求4所述的方法,其特征在于,步骤A中,所述配置应用流程属性和连接对象的对应关系的方法为构造哈希HASH算法;所述根据应用流程属性确定连接对象的方法为根据应用流程属性,通过所构造的HASH算法得到连接对象ID。6.根据权利要求4所述的方法,其特征在于,步骤A中,所述配置应用流程属性和连接对象的对应关系的方法为设置应用流程属性与连接对象之间的映射关系表;所述根据应用流程属性确定连接对象的方法为根据应用流程属性查询该映射关系表确定连接对象。7.根据权利要求3所述的方法,其特征在于,该方法进一步包括建立并实时维护应用流程的连接对象使用状态表;步骤A中,所述确定连接对象的方法包括A1.根据访...
【专利技术属性】
技术研发人员:王仲涛,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。