数据查询方法和系统的制作方法
【技术领域】
[0001] 本发明涉及数据库技术领域,特别是涉及一种数据查询方法和系统。
【背景技术】
[0002] 企业应用系统中,随着用户数量增大,并发访问数很高,由于每个请求都几乎会访 问数据库,但数据库连接数并非越多越好,过多的数据库连接,会造成争抢服务器硬件资 源,造成资源都浪费在等待上,尤其需要查询大量数据的数据查询(例如报表),会占用很 多资源,造成其他查询等待,所以通常的方式是根据服务器硬件设置一个最大连接数,通过 设置最大连接数,限制并行查询的数量,以求达到一个平均的响应时间,尽量减少大量资源 用于等待的情况。
[0003] 数据查询占用的如CPU和磁盘读取等的资源,可以统称为成本,不同的数据查询 的成本差距非常大,简单做分类,大多数成本很低,少数成本中等,极少数成本很高。通过限 制数据库的最大连接数,有较大缺陷。如服务器硬件能满足1万个成本很低的数据并行查 询,但考虑到可能会有成本中等和成本很高级别数据查询同时访问,数据库最大连接数可 能只会设为100以避免资源竞争。但如果只是同时有400个成本很低的数据并行查询,虽 然服务器硬件能够满足,而由于数据库最大连接数只有100,400个成本很低的数据并行查 询也会分成4批顺序执行,响应时间延长,服务器资源没有充分利用。
[0004] 又比如,即便数据库并发最大连接数只设为100,但如果有10个成本很高的数据 同时查询,也足够将服务器资源占满,而造成其它90个请求响应变慢,需要长时间等待。
[0005] 总而言之就是大多数情况下,服务器资源利用率较低,而在一些极端情况下服务 器响应非常缓慢。
【发明内容】
[0006] 基于此,有必要针对服务器资源利用率低的问题,提供一种提高服务器利用率的 数据查询方法及系统。
[0007] 本发明提供了一种数据查询方法,包括以下步骤:
[0008] 接收数据查询请求以及查询请求所属的数据查询级别;
[0009] 获取数据查询级别的锁可用数量;
[0010] 比较获取的锁可用数量和〇的大小;
[0011] 若获取的锁可用数量大于0,则将数据查询级别的锁可用数量减1,并执行数据查 询请求以获得数据查询结果。
[0012] 在其中一种实施方式中,获取数据查询级别的锁可用数量步骤之前,还包括:
[0013] 申请数据查询级别的锁;
[0014] 将数据查询级别的锁可用数量减1的步骤之前或之后,还包括:分配该数据查询 级别的锁。
[0015] 在其中一种实施方式中,方法还包括:
[0016] 若获取的锁可用数量等于0,则暂缓查询请求并继续申请数据查询级别的锁,直至 获取的锁可用数量大于〇。
[0017] 在其中一种实施方式中,在执行数据查询请求以获得数据查询结果步骤之后,还 包括:
[0018] 释放数据查询级别的锁;
[0019] 将数据查询级别的锁可用数量加1。
[0020] 在其中一种实施方式中,数据查询级别的锁可用数量具有最大值,数据查询级别 根据数据查询所占用的资源划分。
[0021] 本发明还提供一种数据查询系统,包括:
[0022] 接收模块,用于接收数据查询请求以及查询请求所属的数据查询级别;
[0023] 获取模块,用于获取数据查询级别的锁可用数量;
[0024] 比较模块,用于比较获取的锁可用数量和0的大小;
[0025] 查询分级数量控制模块,用于若获取的锁可用数量大于0,将数据查询级别的锁可 用数量减1 ;
[0026] 查询模块,用于若获取的锁可用数量大于0则执行数据查询请求以获得数据查询 结果。
[0027] 在其中一种实施方式中,系统还包括执行模块,用于在获取模块获取数据查询级 别的锁可用数量之前,申请数据查询级别的锁;
[0028] 查询分级数量控制模块还用于将数据查询级别的锁可用数量减1之前或之后,分 配该数据查询级别的锁。
[0029] 在其中一种实施方式中,执行模块,还用于当比较模块比较所获取的锁可用数量 等于〇时,暂缓查询请求并继续向查询分级数量控制模块申请数据查询级别的锁,直至获 取的锁可用数量大于〇。
[0030] 在其中一种实施方式中,执行模块,还用于在查询模块执行数据查询请求以获得 数据查询结果之后,释放数据查询级别的锁;
[0031] 查询分级数量控制模块,还用于在查询模块执行数据查询以获得数据查询结果之 后,将数据查询级别的锁可用数量加1。
[0032] 在其中一种实施方式中,查询分级数量控制模块还用于根据数据查询所占用的资 源划分数据查询级别;数据查询级别的锁可用数量具有最大值。
[0033] 根据数据查询方法,通过设定不同级别的查询请求的锁可用数量来控制同一级别 查询的并发数量,只有当比较所获取的数据查询级别的锁可用数量大于〇时,才执行数据 查询请求,从而能够避免多个占用资源的查询请求并行执行,造成服务器资源耗尽的情况, 有效的提升了服务器的利用率。
[0034] 而数据查询系统通过设置数据分级数量控制模块,通过设定不同级别的查询请求 的锁可用数量来控制同一级别查询的并发数量,当执行某一数据查询请求时,通过比较模 块比较所获取的数据查询级别的锁可用数量和〇的大小,只有所获取的数据查询级别的锁 可用数量大于〇时,才执行数据查询请求。从而能够避免多个占用资源的查询请求并行执 行,造成服务器资源耗尽的情况,有效的提升了服务器的利用率。
【附图说明】
[0035] 图1为一种实施方式的数据查询方法的流程图;
[0036] 图2为另一种实施方式的数据查询方法的流程图;
[0037] 图3为查询查询系统的执行示意图;
[0038] 图4为数据查询系统的模块图。
【具体实施方式】
[0039] 为了使本发明的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发 明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用 于限定本发明。
[0040] 如图1所示,在一个实施例中,一种数据查询方法,具体包括以下步骤:
[0041] S100 :接收数据查询请求以及所述查询请求所属的数据查询级别。
[0042] 具体的,向数据库发出查询请求时携带有该查询请求的参数,获取数据查询请求 的同时,根据该查询请求所携带的参数获取该查询请求所属的数据查询级别,例如,获取该 查询请求属于占用资源较多、成本较高的级别。
[0043] S110 :获取所述数据查询级别的锁可用数量。
[0044] 具体的,预先根据数据查询占用资源,分成若干等级并预先设定每个级别的锁可 用数量。在执行数据查询时,获取该数据查询级别的锁可用数量。
[0045] S120 :比较所述获取的锁可用数量和0的大小。
[0046] 若所获取的锁可用数量大于0,则执行步骤S400,若所获取的锁可用数量等于0, 则暂缓该查询请求并执行步骤S200继续获取该数据查询级别的锁可用数量。
[0047] S130 :若所述获取的锁可用数量大于0,则将所述数据查询级别的锁可用数量减 1,并执行所述数据查询请求以获得数据查询结果。
[0048] 上述查询方法通过设定不同级别的查询请求的锁可用数量来控制同一级别查询 的并发数量,只有当比较所获取的数据查询级别的锁可用数量大于〇时,才执行数据查询 请求,从而能够避免多个占用资源的查询请求并行执行,造成服务器资源耗尽的情况,有效 的提升了服务器的利用率。
[0049] 如图2所示,在另一个实施例中,一种数据查询方法,具体包括以下步骤:
[0050] S200 :接收数据查询请求以及该查询请求所属的数据查询级别。
[0051] 具体的,向数据库发出查询请求时携带有该查询请求的