[发明专利]数据库查询方法及设备有效
申请号: | 201210590531.1 | 申请日: | 2012-12-31 |
公开(公告)号: | CN103064960A | 公开(公告)日: | 2013-04-24 |
发明(设计)人: | 黄靖东;张宇;杨上德 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 臧建明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 查询 方法 设备 | ||
技术领域
本发明实施例涉及通信技术,尤其涉及一种数据库查询方法及设备。
背景技术
在电信、电子商务和企业等领域的数据库应用系统中,数据库客户端一般是通过向数据库服务器发送SQL(Structured Query Language,结构查询语言)查询命令,从数据库服务器获取查询结果。对于同一SQL查询命令,数据库服务器可能会被执行很多次,造成了不必要的资源浪费。
为了解决上述技术问题,现有技术提出了一种SQL result cache(SQL查询结果缓存)机制,当该SQL result cache机制开启时,执行SQL查询任务的进程在第一次从数据库服务器获取查询结果之后,会先申请内存空间作为SQL result cache,然后把查询结果缓存到SQL result cache中。以后该进程再进行相同的SQL查询时,直接从SQL result cache获取查询结果。但是,现有技术只能在同一访问源(单进程)上进行SQL查询结果的共享,在数据库客户端多访问源(多进程)场景下,需要为每个进程都分配相应的内存,而且各进程以及各进程分别对应的内存互不相干,造成内存的大量消耗。
发明内容
本发明实施例提供一种数据库查询方法及设备,以实现缓存查询结果的内存的共享,提高数据查询的有效性。
第一方面,本发明实施例提供一种数据库查询方法,包括:
第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息;
所述第一业务进程接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程发送所述SQL查询命令;
所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。
在第一种可能的实现方式中,所述第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息之前,所述方法还包括:
第二业务进程向所述数据库服务器发送所述携带有所述SQL查询命令的第二查询请求消息;
所述第二业务进程接收所述数据库服务器返回的、根据所述SQL查询命令查询到的所述第一查询结果,将所述有SQL查询命令和所述第一查询结果发送给所述缓存管理进程;
所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述缓存管理进程建立所述SQL查询命令与所述第一查询结果的对应关系,包括:
所述缓存管理进程对所述SQL查询命令进行哈希处理生成哈希值,将所述哈希值与链表对应存储在所述存储器中,其中,所述链表中记录有所述SQL查询命令与所述第一查询结果的存储地址的对应关系;
所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,包括:
所述缓存管理对所述SQL查询命令进行哈希处理生成所述哈希值,根据所述哈希值从所述存储器中确定链表,根据所述SQL查询命令从所述链表中确定所述第一查询结果的存储地址,根据所述存储地址从所述存储器中获取所述第一查询结果。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系之后,所述方法还包括:
所述缓存管理进程若判断获知所述存储器中还存储有所述SQL查询命令对应的第二查询结果,且没有业务进程读取所述第二查询结果,则将所述第二查询结果删除,并释放存储器中用于存储所述第二查询结果的存储空间。
第二方面,本发明实施例提供一种数据库查询方法,包括:
接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的第一查询请求消息;
判断所述SQL查询命令对应的查询结果缓存是否有效,若是,则向所述数据库客户端装置的第一业务进程发送用于指示所述SQL查询命令对应的查询结果缓存有效的指示消息,以使得所述数据库客户端装置的第一业务进程向所述数据库客户端装置的缓存管理进程发送所述SQL查询命令,所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。
在第一种可能的实现方式中,所述接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的查询请求消息之前,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210590531.1/2.html,转载请声明来源钻瓜专利网。