一种数据库查询方法及系统的制作方法

文档序号:9489434阅读:312来源:国知局
一种数据库查询方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据库技术领域,特别涉及一种数据库查询方法和系统。
【背景技术】
[0002]现在市面上常见的系统很多都是一个页面里附带着一个或多个数据库请求,比如目录页面、树节点页面、查询条件页面、报表等。访问这样的页面往往都伴随数据库请求,多次刷新同一个页面相应的数据库请求也会使用同一个SQL去多次查询数据库。
[0003]现有的数据库SQL在查询时,用户的每次请求页面都会有一次SQL去查询数据库。当多次刷新同一页面时就会发出多个相同的SQL请求并查询多次数据库,所有的查询都下发到数据库加剧拥塞,给数据库造成不必要的负担。因此,迫切需要一种能解决多次数据库请求造成数据库拥堵的解决方案,以适应多数据库请求的需求。

【发明内容】

[0004]鉴于上述问题,本发明实施例提供一种数据库查询方法和系统,将多次SQL请求压缩成一次,能够减轻数据库的负担,从而解决多次数据库请求造成数据库拥堵的技术问题。
[0005]本发明实施例采用了如下技术方案:
[0006]本发明一个实施例提供了一种数据库查询方法,所述方法包括:
[0007]接收数据库查询请求;
[0008]判断所述数据库查询请求是否为初次请求;
[0009]若所述数据库查询请求是初次请求,则执行对应的数据库查询操作,并将查询结果存入缓存中;
[0010]若所述数据库查询请求不是初次请求,则在所述缓存中获取所述数据库查询请求的查询结果。
[0011]所述判断所述数据库查询请求是否为初次请求包括:
[0012]检索标记正在查询请求中是否有与所述数据库查询请求相同的查询请求;
[0013]若有则确定所述数据库查询请求不是初次请求;
[0014]若没有则确定所述数据库查询请求是初次请求,并将所述数据库查询请求标记为正在查询请求。
[0015]所述若所述数据库查询请求是初次请求,则执行对应的数据库查询操作,并将查询结果存入缓存中包括:
[0016]若所述数据库查询请求是初次请求,则执行对应的数据库查询操作;
[0017]将查询结果存入缓存,且与所述数据库查询请求相对应;
[0018]在标记的正在查询请求中将所述数据库查询请求删除。
[0019]所述若所述数据库查询请求不是初次请求,则在所述缓存中获取所述数据库查询请求的查询结果包括:
[0020]若所述数据库查询请求不是初次请求,则在缓存中查询所述数据库查询请求对应的查询结果是否存在;
[0021 ] 若存在则直接获取所述查询结果;
[0022]若不存在,则等待查询周期后,再次在缓存中查询所述数据库查询请求对应的查询结果是否存在,直至在缓存中查询到所述数据库查询请求对应的查询结果,并获取所述查询结果。
[0023]所述等待查询周期后还包括:
[0024]判断当前距离初次接收到所述数据库查询请求的时间是否超过存活周期;
[0025]若超过存活周期,则在标记的正在查询请求中将所述数据库查询请求删除,并返回超时异常,结束;
[0026]若未超过存活周期,则执行所述再次在缓存中查询所述数据库查询请求对应的查询结果是否存在。
[0027]所述将查询结果存入缓存,且与所述数据库查询请求相对应之后还包括:
[0028]监控所述查询结果的存储时间是否超过缓存占用周期;在所述查询结果的存储时间超过缓存占用周期时,在缓存中删除所述查询结果。
[0029]另外,本发明实施例还提供了一种数据库查询系统,所述系统包括:
[0030]请求接收模块,用于接收数据库查询请求;
[0031]判断模块,用于判断所述数据库查询请求是否为初次请求;
[0032]初次请求执行模块,用于若所述判断模块的判断结果是所述数据库查询请求是初次请求,则执行对应的数据库查询操作,并将查询结果存入缓存中;
[0033]再次请求执行模块,用于若所述判断模块的判断结果是若所述数据库查询请求不是初次请求,则在所述缓存中获取所述数据库查询请求的查询结果。
[0034]所述判断模块包括:
[0035]检索单元,用于检索标记正在查询请求中是否有与所述数据库查询请求相同的查询请求;
[0036]第一确定单元,用于若有则确定所述数据库查询请求不是初次请求;
[0037]第二确定单元,用于若没有则确定所述数据库查询请求是初次请求,并将所述数据库查询请求标记为正在查询请求。
[0038]所述初次请求执行模块包括:
[0039]查询操作单元,用于若所述数据库查询请求是初次请求,则执行对应的数据库查询操作;
[0040]缓存单元,用于将查询结果存入缓存,且与所述数据库查询请求相对应;
[0041]第一删除单元,用于在标记的正在查询请求中将所述数据库查询请求删除。
[0042]所述再次请求执行模块包括:
[0043]查询单元,用于若所述数据库查询请求不是初次请求,则在缓存中查询所述数据库查询请求对应的查询结果是否存在;
[0044]第一结果获取单元,用于若所述查询单元的查询结果是存在则直接获取所述查询结果;
[0045]第二结果获取单元,用于若所述查询单元的查询结果是不存在,则等待查询周期后,再次在缓存中查询所述数据库查询请求对应的查询结果是否存在,直至在缓存中查询到所述数据库查询请求对应的查询结果,并获取所述查询结果;
[0046]所述第二结果获取单元包括:
[0047]存活周期判断子单元,用于若所述查询单元的查询结果是不存在,则等待查询周期后,判断当前距离初次接收到所述数据库查询请求的时间是否超过存活周期;
[0048]第一判断子单元,用于若所述存活周期判断子单元的判断结果为超过存活周期,则在标记的正在查询请求中将所述数据库查询请求删除,并返回超时异常,结束;
[0049]第二判断子单元,用于若所述存活周期判断子单元的判断结果为未超过存活周期,则再次在缓存中查询所述数据库查询请求对应的查询结果是否存在,直至在缓存中查询到所述数据库查询请求对应的查询结果,并获取所述查询结果;
[0050]所述初次请求执行模块还包括:
[0051]第二删除单元,用于所述缓存单元将查询结果存入缓存后,监控所述查询结果的存储时间是否超过缓存占用周期;在所述查询结果的存储时间超过缓存占用周期时,在缓存中删除所述查询结果。
[0052]本发明实施例提供一种数据库查询方法和系统,接收数据库查询请求;判断所述数据库查询请求是否为初次请求;若所述数据库查询请求是初次请求,则执行对应的数据库查询操作,并将查询结果存入缓存中;若所述数据库查询请求不是初次请求,则在所述缓存中获取所述数据库查询请求的查询结果。可见,相同的SQL在同时请求数据库时,只请求一次并返回结果,其它的请求获取这个请求的结果,即在一定条件下,一段时间内查询SQL语句只有第一次生效,其余的则等待查询的结果。将多次SQL请求压缩成一次,能够减轻数据库的负担,从而解决多次数据库请求造成数据库拥堵的技术问题,并且进一步提高了 SQL查询返回结果集的速度,后续的请求使用的是第一次请求的结果集,大大缩短了查询时间。
【附图说明】
[0053]图1为本发明实施例提供的一种数据库查询方法流程图;
[0054]图2为本发明实施例中一种数据库查询方法示意图;
[0055]图3为本发明实施例中提供的一种数据库查询方法具体实例流程图;
[0056]图4为本发明实施例中一种数据库查询系统结构框图。
【具体实施方式】
[0057]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0058]本发明实施例要解决的技术问题:相同的SQL在同时请求数据库时,只请求一次并返回结果,其他的请求获取这个请求的结果。
[0059]参见图1,本发明实施例提供一种数据库查询方法,具体包括如下步骤:
[0060]S101:接收数据库查询请求。
[0061]数据库查询请求类型包括多种,比如URL请求、SQL请求等。
[0062]S102:判断所述数据库查询请求是否为初次请求。
[0063]作为优选的,本步骤中所述判断所述数据库查询请求是否为初次请求具体可以包括:
[0064]检索标记正在查询请求中是否有与所述数据库查询请求相同的查询请求;
[0065]若有则确定所述数据库查询请求不是初次请求;
[0066]若没有则确定所述数据库查询请求是初次请求,并将所述数据库查询请求标记为正在查询请求。
[0067]也就是说,对于初次的数据库查询请求,可以做个标记,用于标识为初次查询请求,且该查询请求正在查询。
[0068]S103:若所述数据库查询请
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1