数据库查询方法及设备技术

技术编号:8626178 阅读:149 留言:0更新日期:2013-04-25 23:20
本发明专利技术实施例提供一种数据库查询方法及设备,该数据库查询方法包括:第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息;第一业务进程接收数据库服务器返回的、用以指示SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程发送SQL查询命令;缓存管理进程根据SQL查询命令从存储器获取第一查询结果,将第一查询结果返回给第一业务进程。本实施例提供的数据库查询方法及设备,实现了缓存查询结果的内存的共享,避免了为每个业务进程分配内存以及对每个内存进行独立操作造成的资源浪费,提高了数据查询的有效性。

【技术实现步骤摘要】

本专利技术实施例涉及通信技术,尤其涉及一种数据库查询方法及设备
技术介绍
在电信、电子商务和企业等领域的数据库应用系统中,数据库客户端一般是通过向数据库服务器发送SQL (Structured Query Language,结构查询语言)查询命令,从数据库服务器获取查询结果。对于同一 SQL查询命令,数据库服务器可能会被执行很多次,造成了不必要的资源浪费。为了解决上述技术问题,现有技术提出了一种SQL result cache (SQL查询结果缓存)机制,当该SQL result cache机制开启时,执行SQL查询任务的进程在第一次从数据库服务器获取查询结果之后,会先申请内存空间作为SQL result cache,然后把查询结果缓存到SQL result cache中。以后该进程再进行相同的SQL查询时,直接从SQL resultcache获取查询结果。但是,现有技术只能在同一访问源(单进程)上进行SQL查询结果的共享,在数据库客户端多访问源(多进程)场景下,需要为每个进程都分配相应的内存,而且各进程以及各进程分别对应的内存互不相干,造成内存的大量消耗。
技术实现思路
本专利技术实施例提供一种数据库查询方法及设备,以实现缓存查询结果的内存的共享,提高数据查询的有效性。第一方面,本专利技术实施例提供一种数据库查询方法,包括第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息;所述第一业务进程接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程发送所述SQL查询命令;所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。在第一种可能的实现方式中,所述第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息之前,所述方法还包括第二业务进程向所述数据库服务器发送所述携带有所述SQL查询命令的第二查询请求消息;所述第二业务进程接收所述数据库服务器返回的、根据所述SQL查询命令查询到的所述第一查询结果,将所述有SQL查询命令和所述第一查询结果发送给所述缓存管理进程;所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述缓存管理进程建立所述SQL查询命令与所述第一查询结果的对应关系,包括所述缓存管理进程对所述SQL查询命令进行哈希处理生成哈希值,将所述哈希值与链表对应存储在所述存储器中,其中,所述链表中记录有所述SQL查询命令与所述第一查询结果的存储地址的对应关系;所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,包括所述缓存管理对所述SQL查询命令进行哈希处理生成所述哈希值,根据所述哈希值从所述存储器中确定链表,根据所述SQL查询命令从所述链表中确定所述第一查询结果的存储地址,根据所述存储地址从所述存储器中获取所述第一查询结果。结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系之后,所述方法还包括所述缓存管理进程若判断获知所述存储器中还存储有所述SQL查询命令对应的第二查询结果,且没有业务进程读取所述第二查询结果,则将所述第二查询结果删除,并释放存储器中用于存储所述第二查询结果的存储空间。第二方面,本专利技术实施例提供一种数据库查询方法,包括接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的第一查询请求消息;判断所述SQL查询命令对应的查询结果缓存是否有效,若是,则向所述数据库客户端装置的第一业务进程发送用于指示所述SQL查询命令对应的查询结果缓存有效的指示消息,以使得所述数据库客户端装置的第一业务进程向所述数据库客户端装置的缓存管理进程发送所述SQL查询命令,所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。在第一种可能的实现方式中,所述接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的查询请求消息之前,所述方法还包括接收所述数据库客户端装置的第二业务进程发送的携带有所述SQL查询命令的第二查询请求消息;判断所述SQL查询命令对应的查询结果缓存是否有效,若否,则根据所述SQL查询命令查询到所述第一查询结果,将所述第一查询结果返回给所述数据库客户端装置的第二业务进程,以使所述第二业务进程将所述第一查询结果发送给所述缓存管理进程,所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述判断所述SQL查询命令对应的查询结果缓存是否有效,包括若所述SQL查询命令所查询的数据库的数据库改变序列号的值没有发生变化,则所述SQL查询命令对应的查询结果缓存有效;或者,若所述SQL查询命令所查询的数据库的数据库改变序列号的值发生变化,所述SQL查询命令所查询的表的表改变序列号的值没有发生变化,则所述SQL查询命令对应的查询结果缓存有效;或者,若所述SQL查询命令所查询的数据库的数据库改变序列号和所述SQL查询命令所查询的表的表改变序列号的值发生变化,所述SQL查询命令所查询的列的列改变序列号的值没有变化,则所述SQL查询命令对应的查询结果缓存有效;或者,若所述SQL查询命令所查询的列的列改变序列号的值发生变化,则所述SQL查询命令对应的查询结果缓存无效。结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括接收数据修改指令,将所述数据修改指令对应的数据库的表的列的内容进行修改,将修改的数据库的数据库改变序列号、修改的表的表改变序列号和修改的列的列改变序列号的值分别加I。第三方面,本专利技术实施例提供一种数据库客户端装置,包括第一业务进程单元和缓存管理进程单元;所述第一业务进程单元,用于向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息,接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程单元发送所述SQL查询命令;所述缓存管理进程单元,用于根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程单元。在第一种可能的实现方式中,所述数据库客户端装置,还包括第二业务进程单元,用于向所述数据库服务器发送所述携带有所述SQL查询命令的第二查询请求消息,接收所述数据库服务器返回的、根据所述SQL查询命令查询到的所述第一查询结果,将所述有SQL查询命令和所述第一查询结果发送给所述缓存管理进程单元;所述缓存管理进程单元,还用于将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述缓存管理进程单元,还用于对所述SQL查询命令进行哈希处理生成哈希值,将所述哈希值与链表对应存储在所述存储器中,其中,所述链表中记录有所述本文档来自技高网...

【技术保护点】
一种数据库查询方法,其特征在于,包括:第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息;所述第一业务进程接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程发送所述SQL查询命令;所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。

【技术特征摘要】
1.一种数据库查询方法,其特征在于,包括 第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息; 所述第一业务进程接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程发送所述SQL查询命令; 所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。2.根据权利要求1所述的数据库查询方法,其特征在于,所述第一业务进程向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息之前,所述方法还包括 第二业务进程向所述数据库服务器发送所述携带有所述SQL查询命令的第二查询请求消息; 所述第二业务进程接收所述数据库服务器返回的、根据所述SQL查询命令查询到的所述第一查询结果,将所述有SQL查询命令和所述第一查询结果发送给所述缓存管理进程; 所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。3.根据权利要求2所述的数据库查询方法,其特征在于,所述缓存管理进程建立所述SQL查询命令与所述第一查询结果的对应关系,包括 所述缓存管理进程对所述SQL查询命令进行哈希处理生成哈希值,将所述哈希值与链表对应存储在所述存储器中,其中,所述链表中记录有所述SQL查询命令与所述第一查询结果的存储地址的对应关系; 所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,包括 所述缓存管理对所述SQL查询命令进行哈希处理生成所述哈希值,根据所述哈希值从所述存储器中确定链表,根据所述SQL查询命令从所述链表中确定所述第一查询结果的存储地址,根据所述存储地址从所述存储器中获取所述第一查询结果。4.根据权利要求2所述的数据库查询方法,其特征在于,所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系之后,所述方法还包括 所述缓存管理进程若判断获知所述存储器中还存储有所述SQL查询命令对应的第二查询结果,且没有业务进程读取所述第二查询结果,则将所述第二查询结果删除,并释放存储器中用于存储所述第二查询结果的存储空间。5.一种数据库查询方法,其特征在于,包括 接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的第一查询请求消息; 判断所述SQL查询命令对应的查询结果缓存是否有效,若是,则向所述数据库客户端装置的第一业务进程发送用于指示所述SQL查询命令对应的查询结果缓存有效的指示消息,以使得所述数据库客户端装置的第一业务进程向所述数据库客户端装置的缓存管理进程发送所述SQL查询命令,所述缓存管理进程根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程。6.根据权利要求5所述的数据库查询方法,其特征在于,所述接收数据库客户端装置的第一业务进程发送的携带有结构查询语言SQL查询命令的查询请求消息之前,所述方法还包括 接收所述数据库客户端装置的第二业务进程发送的携带有所述SQL查询命令的第二查询请求消息; 判断所述SQL查询命令对应的查询结果缓存是否有效,若否,则根据所述SQL查询命令查询到所述第一查询结果,将所述第一查询结果返回给所述数据库客户端装置的第二业务进程,以使所述第二业务进程将所述第一查询结果发送给所述缓存管理进程,所述缓存管理进程将所述第一查询结果存储到所述存储器,建立所述SQL查询命令与所述第一查询结果的对应关系。7.根据权利要求5或6所述的数据库查询方法,其特征在于,所述判断所述SQL查询命令对应的查询结果缓存是否有效,包括 若所述SQL查询命令所查询的数据库的数据库改变序列号的值没有发生变化,则所述SQL查询命令对应的查询结果缓存有效;或者, 若所述SQL查询命令所查询的数据库的数据库改变序列号的值发生变化,所述SQL查询命令所查询的表的表改变序列号的值没有发生变化,则所述SQL查询命令对应的查询结果缓存有效;或者, 若所述SQL查询命令所查询的数据库的数据库改变序列号和所述SQL查询命令所查询的表的表改变序列号的值发生变化,所述SQL查询命令所查询的列的列改变序列号的值没有变化,则所述SQL查询命令对应的查询结果缓存有效;或者, 若所述SQL查询命令所查询的列的列改变序列号的值发生变化,则所述SQL查询命令对应的查询结果缓存无效。8.根据权利要求7所述的数据库查询方法,其特征在于,所述方法还包括 接收数据修改指令,将所述数据修改指令对应的数据库的表的列的内容进行修改,将修改的数据库的数据库改变序列号、修改的表的表改变序列号和修改的列的列改变序列号的值分别加I。9.一种数据库客户端装置,其特征在于,包括第一业务进程单元和缓存管理进程单元; 所述第一业务进程单元,用于向数据库服务器发送携带有结构查询语言SQL查询命令的第一查询请求消息,接收所述数据库服务器返回的、用以指示所述SQL查询命令对应的查询结果缓存有效的指示消息,向缓存管理进程单元发送所述SQL查询命令; 所述缓存管理进程单元,用于根据所述SQL查询命令从存储器获取第一查询结果,将所述第一查询结果返回给所述第一业务进程单元。10.根据权利要求9所述的数据库客户端装置,其特征在于,还包括 第二业务进程单元,用于向所述数据库服务器发送所述携带有所述SQL查询命令的第二查询请求消息,接收所述数据库服务器返回的、根据所述SQL查询命令查询到的所述...

【专利技术属性】
技术研发人员:黄靖东张宇杨上德
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1