CN108345594A - 数据库访问请求的控制方法、控制装置及控制系统 - Google Patents
数据库访问请求的控制方法、控制装置及控制系统 Download PDFInfo
- Publication number
- CN108345594A CN108345594A CN201710046948.4A CN201710046948A CN108345594A CN 108345594 A CN108345594 A CN 108345594A CN 201710046948 A CN201710046948 A CN 201710046948A CN 108345594 A CN108345594 A CN 108345594A
- Authority
- CN
- China
- Prior art keywords
- access request
- database
- current
- dynamic threshold
- existing
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库访问请求的控制方法、控制装置及控制系统。该方法包括:获取数据库的当前访问请求;查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,并已有访问请求的个数加1。本发明实施例提供的数据库访问请求的控制方法以及控制装置,可以实现根据数据库的处理能力设置动态阈值,从而对访问请求的数量进行合理控制,避免在数据库处理效率低或者出现故障时,访问请求的连接数量超出数据库的处理能力,进一步影响数据库的处理效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据库访问请求的控制方法、控制装置及控制系统。
背景技术
随着软件技术的发展,各种应用系统越来越多。应用系统中绝大多数都有后端数据库支撑,特别是行业应用系统,基本离不开数据库的支持。
各行业应用系统中,都需要对数据库进行访问,而且在部分行业应用系统中会对数据库频繁进行访问,例如在线购物、电子商务类网站等,用户对数据库的访问非常频繁,每秒百万级的数据库并发访问请求已不足为奇。当数据库的并发访问请求达到一定数量时,数据库处理效率会明显下降,甚至会出现数据库假死或宕机现象。
现有技术中,通过查询连接模块控制连接数的方式控制数据库的并发访问请求。首先,把客户端信息传送给各业务功能模块后,通过查询连接模块访问数据库连接池,然后将查询连接模块分为大查询连接模块和一般连接查询模块,并在大查询连接模块设有最大总并发数。当用户端提交大查询请求时,若访问请求的个数小于最大总并发数,则从数据库连接池获取一个数据库连接。但是,在该方法中只对大查询连接模块设置最大总并发数,而没有合理地针对数据库的实时处理能力设置数据库的最大总并发数对并发的访问请求进行限制。因此,当访问请求的并发数超出数据库的处理能力时,依旧可能降低数据库的处理效率,甚至使数据库出现假死或宕机现象。
发明内容
根据本发明的实施例,提供了一种数据库访问请求的控制方法、控制装置及控制系统,可以实现有效控制数据库的访问请求的数据库连接数量,避免在数据库处理效率低或者出现故障时,访问请求的数据库连接数量超出数据库的处理能力,从而影响数据库的处理效率的问题。
根据本发明实施例的一个方面,提供了一种数据库访问请求的控制方法,包括:获取数据库的当前访问请求;查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
根据本发明实施例的一个方面,数据库访问请求的控制方法还包括:向数据库发送一个已有访问请求后,将已有访问请求的个数减1。
根据本发明实施例的一个方面,数据库访问请求的控制方法还包括:已有访问请求的个数大于或者等于动态阈值,则拒绝将当前访问请求加入至当前访问队列中。
根据本发明实施例的一个方面,数据库最近一次处理访问请求的时间为,最近一次发送给数据库至数据库返回处理结果的时间间隔。
根据本发明实施例的一个方面,数据库访问请求的控制方法还包括:记录最近一次发送给数据库和数据库返回处理结果的时间点。
根据本发明实施例的另一个方面,提供了一种数据库访问请求的控制装置,包括:请求处理单元,用于获取数据库的当前访问请求;访问控制单元,用于查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
根据本发明实施例的另一个方面,访问控制单元还用于,向数据库发送一个已有访问请求后,将已有访问请求的个数减1。
根据本发明实施例的另一个方面,访问控制单元还用于,当已有访问请求的个数大于或者等于动态阈值,拒绝将当前访问请求加入至当前访问队列中。
根据本发明实施例的另一个方面,数据库最近一次处理访问请求的时间为,最近一次发送给数据库至数据库返回处理结果的时间间隔。
根据本发明实施例的另一个方面,数据库访问请求的控制装置还包括服务处理单元,用于记录最近一次发送给数据库和数据库返回处理结果的时间点。
根据本发明实施例的再一个方面,还提供一种数据库访问请求的控制系统,该系统包括:存储器,用于存储程序;处理器,用于运行存储器中存储的程序,以执行以下步骤:获取数据库的当前访问请求;查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
综上,本发明实施例的数据库访问请求的控制方法、控制装置及控制系统,在获取到数据库的当前访问请求时,通过查询数据库的当前访问队列中的已有访问请求的个数,并通过计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值。进一步可比较已有访问请求的个数与动态阈值,当已有访问请求的个数小于动态阈值时,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。由此,可以根据服务器的处理能力,设置动态阈值,从而对访问请求的数据库连接数量进行合理控制,避免在数据库处理效率低或者出现故障时,访问请求的数据库连接数量超出数据库的处理能力,进一步影响数据库的处理效率,甚至导致数据库出现假死甚至宕机的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是示出根据本发明一实施例的数据库访问请求的控制方法的流程图。
图2是示出根据本发明另一实施例的数据库访问请求的控制方法的流程图。
图3是根据本发明一实施例的数据库访问请求的控制装置的结构示意图。
图4是根据本发明另一实施例的数据库访问请求的控制装置的结构示意图。
图5是示出图4中的数据库访问请求的控制装置的一个具体应用示例。
图6是示出图4中的数据库访问请求的控制装置的另一个具体应用示例。
图7是示出图4中的数据库访问请求的控制装置的再一个具体应用示例。
图8是示出客户端与服务器之间的信令流程图。
图9是示出根据本发明实施例的数据库访问请求的控制方法及控制装置的数据库访问请求的控制系统的示例性硬件架构的结构图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。
数据库作为应用系统的支撑,更是例如生活、娱乐、金融等服务业的行业应用系统中重要的组成部分,因此在行业应用系统的运行过程中不能脱离客户端对数据库的访问。但是当频繁的访问操作使数据库的并发访问请求的连接(即数据库连接)达到一定的数量时,会导致数据库的处理效率下降。本发明实施例的数据库访问请求的控制方法能够根据数据库的实时处理能力设置动态阈值,来控制数据库的并发访问请求的连接数量,避免在对数据库频繁访问的过程中,多个并发访问请求造成堵塞,从而影响数据库的处理效率甚至使数据库出现宕机的现象。
上述的客户端中可以包括:短信计费服务器、催缴业务服务器、传真服务器、语音服务器以及应用服务器等客户服务系统,上述的客户服务系统中的各种服务器通过访问数据库中存储的数据来向用户提供各种业务服务。
下面结合附图,详细描述根据本发明实施例的数据库访问请求的控制方法。
图1是示出根据本发明一实施例的数据库访问请求的控制方法的流程图。如图1所示,本实施例中数据库访问请求的控制方法包括以下步骤。
步骤S110,获取数据库的当前访问请求。
当客户端需要对数据库进行数据访问时,则会向数据库发送当前访问请求,当前访问请求即客户端向数据库实时发送的访问请求。在此步骤中,数据库不断获取来自客户端的当前访问请求,该当前访问请求可以采用公知的数据包格式,在数据包中包含访问需求参数,访问需求参数具体可以包括:客户端进行访问的资源类型、资源标识或客户端对应的用户标识等。可以理解的是,具体的访问需求参数根据实际应用的不同还可以进行变换,因此,本发明实施例对此不进行限定。
另外,对于获取到的客户端发送的当前访问请求,还可以根据数据库的配置文件中预设的具体通信协议,对当前访问请求数据包中的报文命令字进行格式转换操作,当然,本发明实施例对此不进行限制。也可以由客户端自行格式转换后发送给数据库。
步骤S120,查询数据库的当前访问队列中的已有访问请求的个数。
客户端通常按照数据库规定的访问策略对数据库进行访问,为了满足各种需要,需要对获取的多个访问请求进行队列控制,例如可以按照访问请求的优先级由高到低的顺序对已有的访问请求进行排列处理,而已有访问请求即为由客户端向数据库发送并已经建立数据库连接的访问请求。
示例性地,在本实施例中,当数据库处于系统繁忙状态时则需要进行队列控制,以避免访问请求的数据包丢失。即,在数据库无法处理新的访问请求时,可以将多个已有访问请求进行顺序排列,构成访问队列,以便待数据库可进行相关处理时再将已有访问请求发送给数据库进行处理。在此步骤中,在每次获取当前访问请求后,即开始查询当前访问队列中已有访问请求的个数,并设当前访问队列中的已有访问请求的个数为Key,并且Key的初始值为0。
当然,也可以为当前访问队列增加一个计数器,在Key发生变化时进行增减计数。当一个新的当前访问请求加入至访问队列时,计数器加1;而当向数据库发送一个已有访问请求时,计数器减1。
另外,本发明实施例对于当前访问队列中的已有访问请求的排列规则不进行限制,可以根据实际应用需要按照各种预设规则对已有访问请求进行排列。
当然在对客户端发送的访问请求进行队列控制的同时还可以进行超时控制,示例性地,当一项访问请求在访问队列中等待时间过长而未得到响应时,可以对该访问请求进行超时控制处理,将该访问请求拒绝并进行重新获取。
步骤S130,计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值。
在此步骤中,需要计算动态阈值,动态阈值即为上述当前访问队列中的已有访问请求的个数Key的动态的最大值(即对Key的最大值进行实时更新),并将动态阈值设为Max。Max为变量,其计算公式为:即通过预设系数K除以t后向下取整,其中,K为预设系数,t为数据库最近一次处理访问请求的时间,而Max的初始值为∞。
具体地,在此步骤中,该预设系数K与服务器(包含数据库)的处理效率(同服务器的处理能力,例如:CPU占例、内存占例、内存大小、网卡速度、硬盘速度、硬盘大小、网络宽带、CPU缓存大小以及CPU寄存器宽度等)、网络传输效率有关,可以根据实际应用环境中的服务器的处理效率以及网络传输效率计算得出。
当数据库可以进行数据处理时,即可将上述当前访问队列中的已有访问请求发送给数据库,数据库开始对接收到的访问请求(即已经发送给数据库的当前访问队列中的已有访问请求)进行处理。
示例性地,数据库根据接收到的访问请求中包含的访问需求参数,查询数据库中与该访问需求参数对应的访问控制参数(例如管理策略和操作对象),当然,在构建数据库时可以预设访问需求参数与访问控制参数的对应关系,也可以在系统运行过程中对该对应关系进行修改、更新。当将已有访问请求发给数据库后,通过建立的数据库连接,按照管理策略对操作对象进行访问,而数据库则将对访问请求进行处理后的处理结果(同数据库对访问请求的响应)返回给客户端。
由于数据库对每个访问请求进行单独处理,因此数据库在运行过程中处理每个访问请求的时间不同,而处理访问请求的时间为发送给数据库至数据库返回处理结果的时间间隔。而t为数据库最近一次处理访问请求的时间,即与获取到客户端发送的当前访问请求的时间点最接近的一次数据库处理访问请求的时间间隔。而数据库最近一次处理访问请求的时间为,最近一次发送给数据库至数据库返回处理结果的时间间隔。每当数据库处理完一个访问请求后,则更新时间t,同时重新计算动态阈值Max。由此,在数据库的运行过程中,可以根据上述公式(1)不断地对动态阈值Max进行更新操作。
在一个实施例中,由于数据库在运行过程中随着时间的变化处理多个访问请求的时间为变量,则可以通过不断地记录最近一次发送给数据库和从数据库返回处理结果的时间点来记录数据库最近一次处理访问请求的时间,作为数据库处理访问请求的时间t。
示例性地,设定K=100,t=3s,则Max=33,也就是说,在预设系数K为100时,数据库最近一次处理访问请求的时间为3s时,当前访问队列中的已有访问请求的个数的最大值为33个。
根据数据库最近一次处理访问请求的时间t,能够实时对动态阀值Max进行更新。因此,数据库处理访问请求的时间越短,Max越大,说明数据库的处理效率越高,从而能够允许将更多的当前访问请求加入至当前访问队列中,也代表用户能够通过客户端发送更多的访问请求(同时用户也可以发送更大的访问请求,即处理过程相对复杂的访问请求)。反之,Max越小,说明数据库处理效率越低,从而允许加入至当前访问队列中的访问请求的数量会变少,也代表用户能够通过客户端发送的访问请求变少。如此,即可实现对当前访问对列中已有访问请求个数的最大值进行动态调整。
上述的数据库处理访问请求的时间为发送给数据库至数据库返回处理结果的时间间隔,但是本发明实施例并不限于此,在其他的实施例中,由于数据库能够自行记录对访问请求的处理时间,因此该数据库处理访问请求的时间还可以为,数据库接收到访问请求至数据库向外发送处理结果的时间间隔。
步骤S140,比较已有访问请求的个数与动态阈值。
在此步骤中,每获取到一个由客户端发来的当前访问请求,则开始比较查询到的当前访问队列中的已有访问请求的个数Key与实时更新的动态阈值Max的大小。并确定已有访问请求的个数Key是否小于动态阈值Max,若是,即已有访问请求的个数Key小于动态阈值Max,则执行步骤S150。若否,即已有访问请求的个数Key大于或者等于动态阈值Max,则执行步骤S160。
步骤S150,已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
在此步骤中,当当前访问队列中的已有访问请求的个数Key小于动态阈值Max时,则允许获取的当前访问请求与数据库之间建立数据库连接,即将由客户端发送的当前访问请求加入至当前访问队列中,并将当前访问队列中已有访问请求的个数加1,即Key加1。
示例性地,假设当前访问队列中的已有访问请求的个数为20,即Key=20,如上述动态阈值Max=33,当获取到一个新的当前访问请求后,比较Key与Max的大小,而Key<Max,则可以将该当前访问请求加入至当前访问队列中,并且此时Key=20+1=21,当前访问队列中的已有访问请求的个数更新为21。
当然,将当前访问请求加入至当前访问队列中时,可以按照访问请求的优先级由高到低的顺序对所有的已有的访问请求进行重新排列处理,或者直接将该当前访问请求排列至当前访问队列的队尾。
图2是示出根据本发明另一实施例的数据库访问请求的控制方法的流程图。如图2所示,本实施例中数据库访问请求的控制方法中的步骤S110至步骤S150与上述实施例的数据库访问请求的控制方法中的步骤S110至步骤S150相同,不同之处在于,本实施例中的数据库访问请求的控制方法还包括步骤S160至S170。
步骤S160,已有访问请求的个数大于或者等于动态阈值,则拒绝将当前访问请求加入至当前访问队列中。
在此步骤中,当当前访问队列中的已有访问请求的个数Key大于或者等于动态阈值Max时,则不允许获取的当前访问请求与数据库之间建立数据库连接,拒绝该当前访问请求,即拒绝由客户端发送的当前访问请求加入至当前访问队列。
需要说明的是,若获取的当前访问请求未能被允许加入至当前访问队列中,则可能会向客户端返回获取访问请求失败的提示,或者按照预制的机制进行处理,例如请求客户端重新发送访问请求等。示例性地,假设当前访问队列中的已有访问请求的个数为35,即Key=35,如上述Max=33,当获取到一个新的当前访问请求后,比较Key与Max的大小,而Key>Max,则拒绝将该当前访问请求加入至当前访问队列中,当Key=Max时同Key>Max。
步骤S170,向数据库发送一个已有访问请求后,将已有访问请求的个数减1。
在此步骤中,当向数据库发送一个当前访问队列中的已有访问请求后,当前访问队列中即减少了一个已有访问请求,则可以将已有访问请求的个数减1,即将Key减1。以便当再一次获取到当前访问请求后,可以查询到当前访问队列中实际的已有访问请求的个数,避免影响数据库的处理效率。
示例性地,设当前访问队列中的已有访问请求的个数为20,Key=20,当向数据库发送一个已有访问请求后,则需要将已有访问请求的个数减1,即此时Key=20-1=19。
需要明确的是,本发明实施例并不局限于上文所描述的数据库访问请求的控制方法的处理时序,示例性地,在其他的实施例中,步骤S170可以在任一步骤之前或者之后执行。
另外,在上述实施例中只说明了获取一个当前访问请求的情况,以及从当前访问队列中向数据库发送一个已有访问请求的情况,在实际的处理过程中,有可能同时获取多个当前访问请求,并且从当前访问队列中向数据库发送多个已有访问请求。而获取多个当前访问请求的执行过程与获取一个数据库的当前访问请求的执行过程相同,可以同时并单独执行多个进程或者按顺序执行每一个进程。而向数据库发送多个已有访问请求的执行过程与向数据库发送一个已有访问请求的执行过程相同,可以同时并单独执行多个进程或者按顺序执行每一个进程。
此外,根据数据库的连接池情况,还可以同时建立多个访问队列,处理过程复杂的访问请求和处理过程简单的访问请求可以分开进行队列控制,并且针对每个队列中分别单独设置动态阈值,对已有访问请求的数量进行控制。
由此,本发明实施例的数据库访问请求的控制方法通过设置动态阈值Max,能够根据数据库的处理能力,动态调整已有访问请求个数的上限值,从而当数据库处理效率降低时,避免按照固定的已有访问请求个数上限对已有访问请求进行限制,而导致占用过多的数据库资源,从而降低数据库的处理效率的问题。同时,通过设置动态阈值对获取的当前访问请求进行控制,可以使用户能够根据数据库当前的处理效率或者故障情况来决定是否继续发送访问请求。
通过本发明实施例的数据库访问请求的控制方法能够有效控制数据库的已有访问请求的数量,从而能够限制客户端与数据库之间建立的数据库连接数,在保证满足客户端业务需要的同时尽量减少数据库的负荷。具体地,通过数据库响应访问请求的时间的长短反映出数据库运行过程中的负荷变化,即数据库处理能力的变化。当数据库响应访问请求的时间过长时,则可以通过上述公式(1)调节访问队列中的已有访问请求的个数的最大值(即Max),从而避免访问请求的数据库连接数量过多,造成数据库超负荷运行,进而导致数据库无响应甚至出现宕机的问题,能够实现节省数据库的处理资源,保证数据库的正常运行的目的。进一步地,当数据库性能出现问题时,则能够根据数据库处理访问请求的时间计算出的动态阈值,判断出是否需要减少或者停止用户向数据库发送访问请求,避免过多的访问请求造成堵塞,而影响数据库的处理效率,甚至导致数据库出现宕机现象。
下面接合图3详细描述本发明实施例的数据库访问请求的控制装置300。图3是示出根据本发明一实施例的应用上述数据库访问请求的控制方法的数据库访问请求的控制装置300的结构示意图。如图3所示,数据库访问请求的控制装置300包括:请求处理单元301和访问控制单元302。
请求处理单元301,用于获取数据库的当前访问请求。
访问控制单元302,用于查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
在一个具体示例中,访问控制单元302根据服务器的处理效率以及网络传输效率等获取预设系数K,并对已经与数据库建立数据库连接的已有访问请求进行排列处理,建立当前访问队列,设当前访问队列中的已有访问请求的个数为Key。每当数据库处理完一个访问请求后,返回给访问控制单元302处理结果以及处理该访问请求的时间t,从而能够根据上述公式(1)计算动态阈值Max,实现根据数据库处理该访问请求的时间t对动态阈值Max进行动态调整。
当获取到新的当前访问请求后,即可查询Key,并比较Key与Max的大小,当Key<Max时,则可以将当前访问请求加入至当前访问队列中,并且将已有访问请求的个数加1,即Key加1。访问控制单元302具体的工作原理与上述方法实施例中的步骤相同,故不再加以赘述。
具体地,数据库最近一次处理访问请求的时间为,最近一次发送给数据库至数据库返回处理结果的时间间隔。
在一些实施例中,访问控制单元302还用于,向数据库发送一个已有访问请求后,将已有访问请求的个数减1,即Key减1。
在一些实施例中,访问控制单元302还用于,当已有访问请求的个数大于或者等于动态阈值,拒绝将当前访问请求加入至当前访问队列中。即当Key≥Max时,则拒绝将当前访问请求加入至当前访问队列中。
另外,访问控制单元302在拒绝将当前访问请求加入至当前访问队列时,可以同时给客户端发送提示消息,该提示消息可以包括数据库当前的处理效率或者故障情况,以使用户可根据数据库的处理能力来决定是否继续发送访问请求。
图4是示出本发明另一实施例的数据库访问请求的控制装置400的结构示意图。图4与图3相同或等同的模块或部件使用相同的编号。如图4所示,数据库访问请求的控制装置400与数据库访问请求的控制装置300基本相同,不同之处在于,数据库访问请求的控制装置400还包括服务处理单元303。
服务处理单元303,用于记录最近一次发送给数据库和数据库返回处理结果的时间点。
在一些实施例中,服务处理单元303还用于,将已有访问请求发送给数据库进行处理,以及接受数据库对访问请求的处理结果,并将处理结果发送给访问控制单元302。
示例性地,当数据库能够处理新的访问请求时,则访问控制单元302从当前访问队列中抽取一个已有访问请求,并将已有访问请求发送给服务处理单元303,服务处理单元303将该已有访问请求发送给数据库进行处理,并记录发送给数据库的时间点。
当数据库处理完访问请求后(即由服务处理单元303发送的已有访问请求),将处理结果发送给服务处理单元303,服务处理单元303再次记录接收到数据库返回处理结果的时间点。服务处理单元303将发送给数据库和数据库返回处理结果之间的时间间隔作为处理该访问请求的时间t,并将时间t夹带于处理结果中发送给访问控制单元302。
相应地,访问控制单元302还用于接收到处理结果后,通过其中的时间t更新动态阈值Max,并将处理结果发送给请求处理单元301。由此可以通过请求处理单元301按照客户端能够读取的格式对处理结果进行格式转换并发送给客户端。当然,格式转化过程同样可以由客户端执行。然后,访问控制单元302收到服务处理单元303发送的处理结果后,再次从访问队列中提取已有访问请求发送给服务处理单元302,执行循环操作。
根据本发明实施例的数据库访问请求的控制装置,可以根据数据库最近一次处理访问请求的时间,不断更新动态阈值,即,根据数据库的实时处理能力,有效控制访问请求的数据库连接数量,从而在数据库处理效率降低或者出现故障时,限制客户端与数据库之间建立的数据库连接数量,保证满足客户端业务需要的同时尽量减少数据库的负荷,避免数据库出现假死甚至宕机的现象。同时,通过设置动态阈值对获取的当前访问请求进行控制,可以使用户能够根据数据库当前的处理效率或者故障情况来决定是否继续发送访问请求。
根据本发明实施例的数据库访问请求的控制装置的其他细节与以上结合图1和图2描述的根据本发明实施例的数据库访问控制方法类似,在此不再赘述。
另外,本发明的数据库访问请求的控制装置应该理解为它可以通过软件、硬件及其接合的方式实现,而且其物理位置可以位于客户端内,也可以位于服务器内,还可以独立于客户端和服务器而分立存在。具体分为以下四种应用情形。当然服务器包括数据库。
请参见图5,图5是示出图4中的数据库访问请求的控制装置400的一个具体应用示例。如图5所示,其中,请求处理单元301和访问控制单元302设置于客户端中,而服务处理单元303设置于服务器中,从而实现客户端对数据库进行访问。
请参见图6,图6是示出图4中的数据库访问请求的控制装置400的另一个具体应用示例。如图6所示,其中,请求处理单元301、访问控制单元302以及服务处理单元303同时设置于客户端中,从而实现客户端对数据库进行访问。
请参见图7,图7是示出图4中的数据库访问请求的控制装置400的再一个具体应用示例。如图7所示,其中,请求处理单元301、访问控制单元302以及服务处理单元303同时设置于服务器中,从而实现客户端对数据库进行访问。
在数据库访问请求的控制装置400的又一个具体应用示例中,其独立设置,结构如图4所示。
当然在数据库访问请求的控制装置400的以上四种应用情形中,请求处理单元301、访问控制单元302以及服务处理单元303的工作原理与上述实施例的数据库访问请求的控制装置400中请求处理单元301、访问控制单元302以及服务处理单元303的工作原理相同,故不再加以赘述。
另外,数据库可以设置在服务器中或者与服务器通信连接,以便客户端可以通过服务器对数据库进行访问。
下面结合图8所示的客户端与服务器之间的信令流程图,对客户端通过数据库访问请求的控制装置访问数据库的具体流程进行说明,该服务器包括数据库。当然,在本实施例中并不限定请求处理单元301、访问控制单元302以及服务处理单元303的具体设置位置。如图8所示,客户端访问数据库的具体过程包括以下几个步骤。
步骤S810,客户端向请求处理单元301发送当前访问请求。
步骤S820,请求处理单元301将接收到的当前访问请求发送给访问控制单元302。另外,在执行此步骤之前,请求处理单元301还可以按照数据库的读取格式对客户端发送的当前访问请求进行处理,当然,如果该当前访问请求在由客户端发出之前已经进行了格式转换处理则请求处理单元301不需要再一次进行格式转换。
步骤S830,在此步骤中访问控制单元的处理过程与上述实施例中的数据库访问请求的控制方法中的步骤S120至步骤S170相同,故不再加以赘述。
步骤S840,访问控制单元302将当前访问队列中的已有访问请求发送给服务处理单元303。
步骤S850,服务处理单元303将接收到的访问请求(即访问控制单元302发送的已有访问请求)发送给服务器,由服务器中的数据库对访问请求进行处理,并且服务处理单元303记录发送给服务器的时间点。
步骤S860,数据库对访问请求进行处理后将处理结果返回给服务处理单元303,服务处理单元303接收到处理结果,并记录由服务器返回处理结果的时间点。
步骤S870,服务器处理单元303将接收到的处理结果发送给访问控制单元302。另外,在执行步骤S870后,访问控制单元302同时执行步骤S130和步骤S170,即根据数据库最近一次处理访问请求的时间t重新计算动态阈值Max,并从访问队列中抽取一个已有访问请求发送给服务处理单元303。
步骤S880,访问控制单元302将接收到的处理结果发送给请求处理单元301。
步骤S890,请求处理单元301进一步将接收到的处理结果发送给客户端,客户端中的应用程序则接收到处理结果并显示给用户。
当然,本发明对于上述的由客户端访问数据库的具体流程中的步骤的顺序不进行限制,在上述实施例中只示意性地描述了从客户端到数据库的一个完整的流程,但是其中的多个步骤在实际执行过程中也可以是同步进行。
结合图1至图7描述的根据本发明实施例的数据库访问请求的控制方法及控制装置可以由可拆卸地或者固定地安装在客户端或者服务器上的数据库访问请求的控制系统实现。图9是示出可以实现根据本发明实施例的数据库访问请求的控制方法及控制装置的数据库访问请求的控制系统900的示例性硬件架构的结构图。如图9所示,数据库访问请求的控制系统900包括输入设备901、输入接口902、中央处理器903、存储器904、输出接口905、以及输出设备906。其中,输入接口902、中央处理器903、存储器904、以及输出接口905通过总线910相互连接,输入设备901和输出设备906分别通过输入接口902和输出接口905与总线910连接,进而与流量提醒系统500的其他组件连接。具体地,输入设备901接收来自外部(例如,流量计费系统)的输入信息,并通过输入接口902将输入信息传送到中央处理器903;中央处理器903基于存储器904中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器904中,然后通过输出接口905将输出信息传送到输出设备906;输出设备906将输出信息输出到数据库访问请求的控制系统900的外部供用户使用。
也就是说,图9所示的数据库访问请求的控制系统也可以被实现为包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图7描述的数据库访问请求的控制方法和控制装置。这里,处理器可以与数据库访问请求的控制系统通信,从而基于来自数据库访问请求的控制系统的相关信息执行计算机可执行指令,从而实现结合图1至图7描述的数据库访问请求的控制方法和控制装置。
在一个实施例中,图9所示的数据库访问请求的控制系统900可以被实现为包括:存储器,用于存储程序;处理器,用于运行存储器中存储的程序,以执行以下步骤:获取数据库的当前访问请求;查询数据库的当前访问队列中的已有访问请求的个数;计算预设系数与数据库最近一次处理访问请求的时间的比值,比值向下取整得到动态阈值;比较已有访问请求的个数与动态阈值;已有访问请求的个数小于动态阈值,将当前访问请求加入至当前访问队列中,已有访问请求的个数加1。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
通过本发明实施例的数据库访问请求的控制系统,可以根据数据库最近一次处理访问请求的时间,不断更新动态阈值,即,根据数据库的实时处理能力,有效控制访问请求的数据库连接数量,从而在数据库处理效率降低或者出现故障时,限制客户端与数据库之间建立的数据库连接数量,保证满足客户端业务需要的同时尽量减少数据库的负荷,避免由于已有访问请求的上限设置不合理,而影响数据库处理效率,甚至导致数据库出现假死或者宕机的现象。同时,通过设置动态阈值对获取的当前访问请求进行控制,可以使用户能够根据数据库当前的处理效率或者故障情况来决定是否继续发送访问请求。
在上述实施例中,描述和示出了若干具体的步骤作为示例。以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (11)
1.一种数据库访问请求的控制方法,其特征在于,包括:
获取数据库的当前访问请求;
查询所述数据库的当前访问队列中的已有访问请求的个数;
计算预设系数与所述数据库最近一次处理访问请求的时间的比值,所述比值向下取整得到动态阈值;
比较所述已有访问请求的个数与所述动态阈值;
所述已有访问请求的个数小于所述动态阈值,将所述当前访问请求加入至所述当前访问队列中,所述已有访问请求的个数加1。
2.根据权利要求1所述的数据库访问请求的控制方法,其特征在于,还包括:
向所述数据库发送一个所述已有访问请求后,将所述已有访问请求的个数减1。
3.根据权利要求1所述的数据库访问请求的控制方法,其特征在于,还包括:
所述已有访问请求的个数大于或者等于所述动态阈值,则拒绝将所述当前访问请求加入至所述当前访问队列中。
4.根据权利要求1所述的数据库访问请求的控制方法,其特征在于,所述数据库最近一次处理访问请求的时间为,最近一次发送给所述数据库至所述数据库返回处理结果的时间间隔。
5.根据权利要求4所述的数据库访问请求的控制方法,其特征在于,还包括:
记录所述最近一次发送给所述数据库和所述数据库返回处理结果的时间点。
6.一种数据库访问请求的控制装置,其特征在于,包括:
请求处理单元,用于获取数据库的当前访问请求;
访问控制单元,用于查询所述数据库的当前访问队列中的已有访问请求的个数;
计算预设系数与所述数据库最近一次处理访问请求的时间的比值,所述比值向下取整得到动态阈值;
比较所述已有访问请求的个数与所述动态阈值;
所述已有访问请求的个数小于所述动态阈值,将所述当前访问请求加入至所述当前访问队列中,所述已有访问请求的个数加1。
7.根据权利要求6所述的数据库访问请求的控制装置,其特征在于,所述访问控制单元还用于,向所述数据库发送一个所述已有访问请求后,将所述已有访问请求的个数减1。
8.根据权利要求6所述的数据库访问请求的控制装置,其特征在于,所述访问控制单元还用于,当所述已有访问请求的个数大于或者等于所述动态阈值,拒绝将所述当前访问请求加入至所述当前访问队列中。
9.根据权利要求6所述的数据库访问请求的控制装置,其特征在于,所述数据库最近一次处理访问请求的时间为,最近一次发送给所述数据库至所述数据库返回处理结果的时间间隔。
10.根据权利要求9所述的数据库访问请求的控制装置,其特征在于,还包括服务处理单元,用于记录所述最近一次发送给所述数据库和所述数据库返回处理结果的时间点。
11.一种数据库访问请求的控制系统,其特征在于,所述控制系统包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行以下步骤:
获取数据库的当前访问请求;
查询所述数据库的当前访问队列中的已有访问请求的个数;
计算预设系数与所述数据库最近一次处理访问请求的时间的比值,所述比值向下取整得到动态阈值;
比较所述已有访问请求的个数与所述动态阈值;
所述已有访问请求的个数小于所述动态阈值,将所述当前访问请求加入至所述当前访问队列中,所述已有访问请求的个数加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710046948.4A CN108345594A (zh) | 2017-01-22 | 2017-01-22 | 数据库访问请求的控制方法、控制装置及控制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710046948.4A CN108345594A (zh) | 2017-01-22 | 2017-01-22 | 数据库访问请求的控制方法、控制装置及控制系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108345594A true CN108345594A (zh) | 2018-07-31 |
Family
ID=62974395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710046948.4A Pending CN108345594A (zh) | 2017-01-22 | 2017-01-22 | 数据库访问请求的控制方法、控制装置及控制系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345594A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299049A (zh) * | 2018-10-11 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种文件访问请求的处理方法及装置 |
CN109408207A (zh) * | 2018-09-20 | 2019-03-01 | 北京小米移动软件有限公司 | 微服务访问控制方法、装置及存储介质 |
CN109617829A (zh) * | 2018-11-01 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种业务请求数据的处理方法、装置及系统 |
CN110019487A (zh) * | 2018-08-16 | 2019-07-16 | 联动优势电子商务有限公司 | 一种数据库连接管理方法及装置 |
CN110460676A (zh) * | 2019-08-22 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 请求量控制方法、装置、存储介质和计算机设备 |
CN110879818A (zh) * | 2019-10-12 | 2020-03-13 | 北京字节跳动网络技术有限公司 | 一种获取数据的方法、装置、介质和电子设备 |
CN111581052A (zh) * | 2020-04-26 | 2020-08-25 | 中国工商银行股份有限公司 | 报警数据的处理方法及装置 |
CN115412604A (zh) * | 2022-07-28 | 2022-11-29 | 中国电信股份有限公司 | 一种访问请求的处理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729693A (zh) * | 2008-10-27 | 2010-06-09 | 华为技术有限公司 | 处理优先级的提高方法、装置及系统 |
CN102236622A (zh) * | 2010-04-30 | 2011-11-09 | 中兴通讯股份有限公司 | 提高动态存储器带宽利用率的动态存储器控制器及方法 |
CN102780722A (zh) * | 2011-05-11 | 2012-11-14 | 北京磊友信息科技有限公司 | 向移动终端提供应用程序的方法和服务器 |
CN102905343A (zh) * | 2012-10-10 | 2013-01-30 | 福建星网锐捷网络有限公司 | 无线接入方法和无线接入控制器 |
CN102915374A (zh) * | 2012-11-07 | 2013-02-06 | 北京搜狐新媒体信息技术有限公司 | 一种控制数据库资源访问的方法、装置及系统 |
CN106302211A (zh) * | 2016-07-18 | 2017-01-04 | 网易无尾熊(杭州)科技有限公司 | 一种网络资源的请求量控制方法和装置 |
-
2017
- 2017-01-22 CN CN201710046948.4A patent/CN108345594A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729693A (zh) * | 2008-10-27 | 2010-06-09 | 华为技术有限公司 | 处理优先级的提高方法、装置及系统 |
CN102236622A (zh) * | 2010-04-30 | 2011-11-09 | 中兴通讯股份有限公司 | 提高动态存储器带宽利用率的动态存储器控制器及方法 |
CN102780722A (zh) * | 2011-05-11 | 2012-11-14 | 北京磊友信息科技有限公司 | 向移动终端提供应用程序的方法和服务器 |
CN102905343A (zh) * | 2012-10-10 | 2013-01-30 | 福建星网锐捷网络有限公司 | 无线接入方法和无线接入控制器 |
CN102915374A (zh) * | 2012-11-07 | 2013-02-06 | 北京搜狐新媒体信息技术有限公司 | 一种控制数据库资源访问的方法、装置及系统 |
CN106302211A (zh) * | 2016-07-18 | 2017-01-04 | 网易无尾熊(杭州)科技有限公司 | 一种网络资源的请求量控制方法和装置 |
Non-Patent Citations (1)
Title |
---|
孟庆昌: "《操作系统教程 Linux实例分析》", 31 July 2004, 西安电子科技大学出版社 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019487A (zh) * | 2018-08-16 | 2019-07-16 | 联动优势电子商务有限公司 | 一种数据库连接管理方法及装置 |
CN109408207A (zh) * | 2018-09-20 | 2019-03-01 | 北京小米移动软件有限公司 | 微服务访问控制方法、装置及存储介质 |
CN109408207B (zh) * | 2018-09-20 | 2021-10-22 | 北京小米移动软件有限公司 | 微服务访问控制方法、装置及存储介质 |
CN109299049A (zh) * | 2018-10-11 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种文件访问请求的处理方法及装置 |
CN109617829A (zh) * | 2018-11-01 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种业务请求数据的处理方法、装置及系统 |
CN109617829B (zh) * | 2018-11-01 | 2023-03-24 | 创新先进技术有限公司 | 一种业务请求数据的处理方法、装置及系统 |
CN110460676A (zh) * | 2019-08-22 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 请求量控制方法、装置、存储介质和计算机设备 |
CN110493362A (zh) * | 2019-08-22 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 请求量控制方法、装置、存储介质和计算机设备 |
CN110879818A (zh) * | 2019-10-12 | 2020-03-13 | 北京字节跳动网络技术有限公司 | 一种获取数据的方法、装置、介质和电子设备 |
CN111581052A (zh) * | 2020-04-26 | 2020-08-25 | 中国工商银行股份有限公司 | 报警数据的处理方法及装置 |
CN111581052B (zh) * | 2020-04-26 | 2023-11-24 | 中国工商银行股份有限公司 | 报警数据的处理方法及装置 |
CN115412604A (zh) * | 2022-07-28 | 2022-11-29 | 中国电信股份有限公司 | 一种访问请求的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108345594A (zh) | 数据库访问请求的控制方法、控制装置及控制系统 | |
CN110276182A (zh) | Api分布式限流的实现方法 | |
JP3812236B2 (ja) | イベント制御手段を備えたネットワーク管理システム | |
CN109684358A (zh) | 数据查询的方法和装置 | |
US8353771B2 (en) | System of mobile online game and method for communicating between mobile game terminals | |
CN111478857B (zh) | 一种接口限流控制方法、装置以及电子设备 | |
US20020078214A1 (en) | Method and system for controlling a load on a computer | |
CN104978335A (zh) | 数据访问控制方法和装置 | |
JP2003141068A (ja) | セッション管理装置およびセッション管理方法およびプログラムおよび記録媒体 | |
CN112788074A (zh) | 数据发送方法、处理方法、接收方法及其设备、存储介质 | |
CN110471749A (zh) | 任务处理方法、装置、计算机可读存储介质和计算机设备 | |
CN108492109B (zh) | 电子装置、动态码请求的处理方法及存储介质 | |
CN106649856A (zh) | 一种数据库访问装置、系统及方法 | |
CN109241099A (zh) | 一种数据查询方法及终端设备 | |
CN112600761A (zh) | 一种资源分配的方法、装置及存储介质 | |
CN100477664C (zh) | 基于虚拟接口的存储系统 | |
CN106294261A (zh) | 一种高性能实时响应的服务器架构 | |
US6754658B1 (en) | Database server processing system, method, program and program storage device | |
CN114189476B (zh) | 一种多元接口分流调用方法及终端 | |
CN103457980B (zh) | 终端设备和数据获取方法 | |
KR100737143B1 (ko) | 고객 관리 대행 서비스 제공 시스템 및 방법 | |
WO2002023859A1 (en) | Method for exchanging capability information | |
JP4141937B2 (ja) | データ保管方法、データ保管プログラム、およびコンピュータ読取り可能な記録媒体 | |
CN110059109A (zh) | 数据查询的装置、方法及存储介质 | |
CN115934006B (zh) | Io接入点和数据处理任务管理方法、装置、设备和介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180731 |