CN108268561A - 查询数据库的方法和装置 - Google Patents
查询数据库的方法和装置 Download PDFInfo
- Publication number
- CN108268561A CN108268561A CN201710003645.4A CN201710003645A CN108268561A CN 108268561 A CN108268561 A CN 108268561A CN 201710003645 A CN201710003645 A CN 201710003645A CN 108268561 A CN108268561 A CN 108268561A
- Authority
- CN
- China
- Prior art keywords
- inquiry request
- machine code
- database server
- code
- client device
- 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/2452—Query translation
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
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)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种查询数据库的方法和装置,有利于降低数据库服务器的开销。所述方法包括:客户端设备向数据库服务器发送第一查询请求消息,所述第一查询请求消息携带查询请求和代码请求,所述代码请求用于请求将所述查询请求对应的机器代码返回所述客户端设备;所述客户端设备接收所述数据库服务器发送的所述查询请求对应的机器代码;所述客户端设备存储所述查询请求对应的机器代码。
Description
技术领域
本发明涉及数据库领域,并且更具体地,涉及查询数据库的方法和装置。
背景技术
在数据库系统中,对于输入的查询语句,首先会经过解析以生成执行计划。然后,该执行计划需要被转化为可以指导硬件运行的机器代码。通常,该转化过程为一个翻译过程,即将执行计划转化为一系列底层的、已编译为机器代码的通用函数的调用。然而,由于调用的是通用函数,因而无法确定实际查询执行中所使用的内存位置、变量类型、分支条件等情况,这导致大量的内存读取、虚函数调用和分支判断。
由于上述基于翻译过程的查询执行效率较低,近年来,具有即时编译功能的低级虚拟机(Low Level Virtual Machine,LLVM)技术在数据库领域中得到广泛应用。通过利用LLVM技术,可以为某个具体查询动态地生成定制化的机器代码,从而去除通用函数调用过程中不必要的分支判断,提高处理器缓存的命中率,减少虚函数的调用,这些都有助于提高代码的执行效率。然而,相比于翻译过程,采取即时编译的LLVM开销更大。因此,如何降低数据库服务器的开销是本领域亟待解决的技术问题。
发明内容
本发明实施例提供了一种查询数据库的方法和装置,能够降低数据库服务器的开销。
第一方面,提供了一种查询数据库的方法,包括:客户端设备向数据库服务器发送第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回该客户端设备;该客户端设备接收该数据库服务器发送的该查询请求对应的机器代码;该客户端设备存储该查询请求对应的机器代码。
可选地,该第一查询请求可以用于指定该查询请求对应的机器代码的存储方式,其中,该机器代码的存储方式可以具体为:仅存储于数据库服务器中、仅存储于该客户端设备中、或同时存储于数据库服务器和客户端设备中。
可选地,该第一查询请求可以用于指定该查询请求对应的机器代码的存储方式为仅存储在该客户端设备中;或者,该第一查询请求可以用于指定该查询请求对应的机器代码的存储方式为同时存储在该客户端设备和数据库服务器中,此时,该代码请求还用于请求将该查询请求对应的机器代码存储至该数据库服务器。
因此,本发明实施例提供的查询数据库的方法,客户端设备可以在查询请求消息中请求数据库服务器返回查询请求对应的机器代码,并且存储该数据库服务器返回的机器代码,与数据库服务器存储该机器代码相比,有利于节约该数据库服务器的存储空间资源,降低机器代码丢失的概率。
在第一方面的第一种可能的实现方式中,在该客户端设备向数据库服务器发送第一查询请求消息之前,该方法还包括:该客户端设备确定该客户端设备中是否存储有该查询请求对应的机器代码;该客户端设备向数据库服务器发送第一查询请求消息,包括:若该客户端设备中不存在该查询请求对应的机器代码,该客户端设备向该数据库服务器发送第一查询请求消息。
结合第一方面的上述可能的实现方式,在第一方面的第二种可能的实现方式中,该方法还包括:若该客户端设备中存储有该查询请求对应的机器代码,该客户端设备向该数据库服务器发送第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码。
在本发明实施例中,通过该客户端设备向数据库服务器发送第二查询请求消息,该第二查询请求消息携带机器代码,数据库服务器在接收到该第二查询请求消息时可以无需进行编译,而是直接执行该机器代码,从而提高数据库的查询效率。
结合第一方面的上述可能的实现方式,在第一方面的第三种可能的实现方式中,该客户端设备存储该查询请求对应的机器代码,包括:该客户端设备将该查询请求对应的机器代码存储至该客户端设备的缓存中;该方法还包括:该客户端设备将该客户端设备的缓存中存储的该机器代码复制到该客户端设备的存储介质。
第二方面,提供了另一种查询数据库的方法,包括:数据库服务器接收客户端设备发送的第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回该客户端设备;该数据库服务器确定该查询请求对应的机器代码;该数据库服务器根据该代码请求,向该客户端设备发送该查询请求对应的机器代码。
在第二方面的第一种可能的实现方式中,该数据库服务器确定该查询请求对应的机器代码,包括:该数据库服务器确定该数据库服务器的缓存中是否存在该查询请求对应的机器代码;若该数据库服务器的缓存中存在该查询请求对应的机器代码,获取该查询请求对应的机器代码。
结合第二方面的上述可能的实现方式,在第二方面的第二种可能的实现方式中,该方法还包括:若该数据库服务器的缓存中不存在该查询请求对应的机器代码,通过对该查询请求进行解析和编译处理,生成该查询请求对应的机器代码。
具体地,该数据库服务器可以对该查询请求进行解析处理,得到该查询请求对应的执行计划,然后对该执行计划进行编译处理,例如进行LLVM即时编译,得到该查询请求对应的机器代码。
结合第二方面的上述可能的实现方式,在第二方面的第三种可能的实现方式中,该代码请求还用于请求将该查询请求对应的机器代码存储至该数据库服务器;该方法还包括:根据该代码请求,将该机器代码存储至该数据库服务器的缓存中。
结合第二方面的上述可能的实现方式,在第二方面的第四种可能的实现方式中,该方法还包括:该数据库服务器接收该客户端设备发送的第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码;该数据库服务器执行该第二查询请求消息中携带的该机器代码,得到该查询请求对应的查询结果。
第三方面,提供了一种查询数据库的装置,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。
具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。
第四方面,提供了一种查询数据库的装置,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。
具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的单元。
第五方面,提供了一种查询数据库的装置,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
第六方面,提供了一种查询数据库的装置,包括:存储单元和处理器,该存储单元用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
第七方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的指令。
附图说明
图1是本发明实施例应用的数据库系统的架构示意图。
图2是本发明实施例提供的查询数据库的方法的示意性流程图。
图3是本发明另一实施例提供的查询数据库的方法的示意性流程图。
图4是本发明实施例提供的查询数据库的装置的示意性框图。
图5是本发明另一实施例提供的查询数据库的装置的示意性框图。
图6是本发明另一实施例提供的查询数据库的装置的示意性框图。
图7是本发明另一实施例提供的查询数据库的装置的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
图1是本发明实施例应用的数据库系统100的架构示意图。该数据库系统100可以包括:数据库服务器110和至少一个客户端设备120。其中,该数据库服务器110可以负责数据库数据的存储和管理,并且可以通过搜索、筛选、拼接等方式将所存储的数据组织成用于应答客户端设备查询请求的回复信息;客户端设备120可以负责建立和维护数据库用户与数据库服务器110之间的通信连接,并将用户的查询请求发送给数据库服务器110,以及接受数据库服务器110的回复信息,等等。
可选地,该数据库系统100可以利用LLVM技术或其它编译技术,本发明实施例对此不做限定。
可选地,在本发明实施例中,该数据库系统100可以具体为单机数据库系统或集群数据库系统,本发明实施例对应用的数据库系统不做限定。
可选地,集群数据库系统可以包括至少两个数据库服务器实例,其中,数据库服务器实例可以是数据库服务器在软件上的实现方式。可选地,该至少两个数据库服务器实例可以安装在同一台数据库服务器物理机上,或者也可以安装在至少两台不同的数据库服务器物理机上。可选地,该至少两台数据库服务器物理机可以通过交换机连接。该至少两个数据库服务器实例可以具有共享的存储设备,例如磁盘阵列柜或存储区域网(Storage AreaNetworking,SAN);或者,该至少两个数据库服务器实例也可以不具有共享的存储设备,此时,可以通过纯软件方式实现,但本发明实施例对此不做限定。可选地,在集群数据库系统中,同一时间可以只有一个数据库服务器实例运行,当其中运行着的数据库服务器实例出现故障时,其它的数据库服务器实例可以自动启动运行,从而保证应用在短时间内恢复正常使用;或者,同一时间可以有多个数据库服务器实例同时运行,当其中运行着的一个数据库服务器实例出现故障时,来自客户端的查询请求将被引导至其它正常运行的数据库服务器实例,而不再被引导至该故障实例。
图2示出了本发明实施例的查询数据库的方法200。该方法200可以应用于图1所示的数据库系统100,但本发明实施例不限于此。
S210,客户端设备向数据库服务器发送第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回该客户端设备。
可选地,该代码请求用于请求将该查询请求对应的机器代码仅存储在该客户端设备,或者可以用于请求将该查询请求对应的机器代码同时存储在该客户端设备和该数据库服务器,本发明实施例对此不做限定。
S220,数据库服务器在接收到客户端设备发送的第一查询请求消息之后,可以确定该查询请求对应的机器代码,并且还可以执行该机器代码,以确定该查询请求对应的查询结果。
在本发明实施例中,该数据库服务器可以通过多种方式确定该查询请求对应的机器代码。例如,该数据库服务器可以通过解析该查询请求,生成该查询请求对应的机器代码;或者,该数据库服务器可以从该数据库服务器的缓存中获取该查询请求对应的机器代码,但本发明实施例不限于此。
作为一个可选实施例,该数据库服务器可以首先查询该数据库服务器的缓存,以确定该缓存中是否存在该查询请求对应的机器代码。如果该数据库服务器的缓存中存在该查询请求对应的机器代码,则该数据库服务器可以获取缓存中存储的机器代码。可选地,如果该数据库服务器的缓存中不存在该查询请求对应的机器代码,则该数据库服务器可以通过解析用于表示该查询请求的查询语句并进行即时编译,生成该查询请求对应的机器代码,但本发明实施例不限于此。
S230,数据库服务器向客户端设备发送该查询请求对应的查询结果以及该查询请求对应的机器代码。
可选地,该数据库服务器可以利用同一个消息或不同的消息向客户端设备分别发送该查询结果和机器代码。例如,该数据库服务器可以向该客户端设备发送查询响应消息,该查询响应消息携带该查询结果和机器代码,但本发明实施例不限于此。
可选地,该数据库服务器可以不存储该机器代码而直接将其发送至客户端设备,也可以将该机器代码放入缓存中,但本发明实施例不限于此。
S240,客户端设备在接收该数据库服务器发送的机器代码之后,可以存储该机器代码。
作为一个可选实施例,该客户端设备可以将该机器代码存储至该客户端设备的缓存中。可选地,该客户端设备可以具有专门用于存储机器代码的缓存,即机器代码缓存。相应地,该客户端设备在接收到该数据库服务器发送的机器代码之后,可以将接收到的该机器代码存储至该机器代码缓存,但本发明实施例不限于此。
可选地,该客户端设备还可以在哈希Hash表中保存该机器代码在缓存中的位置信息。这样,该客户端设备需要查找该查询请求对应的机器代码时,可以在Hash表中查找该查询请求对应的机器代码在客户端设备的缓存中的位置信息,并利用该位置信息在该客户端设备的缓存中查找该查询请求对应的机器代码,但本发明实施例不限于此。
可选地,在本发明实施例中,该客户端设备还可以将缓存中存储的该机器代码复制到该客户端设备的存储介质中,从而实现对该机器代码的备份。可选地,该客户端设备还可以根据用户指令,将存储介质中存储的该机器代码复制到可移动设备,例如具有通用串行总线(Universal Serial Bus,USB)接口的可移动设备、手机等其他电子设备,该机器代码可以在其它客户端设备中恢复,从而实现该机器代码在不同客户端设备间的共享。
因此,本发明实施例提供的查询数据库的方法,客户端设备可以在查询请求消息中请求数据库服务器返回查询请求对应的机器代码,并且存储该数据库服务器返回的机器代码,与数据库服务器存储该机器代码相比,有利于节约该数据库服务器的存储空间资源,降低机器代码丢失的概率。
具体地,在数据库服务器重新启动时,其缓存中存储的所有数据会丢失;或者,由于数据库服务器的存储空间大小有限,并且数据库服务器需要存储接收到的所有客户端设备的查询请求对应的机器代码,在数据库服务器的存储空间的占用率超过一定阈值之后,需要清除旧数据,以存储新数据,从而可能导致该机器代码的丢失。而在本发明实施例中,通过在客户端设备存储机器代码,各个客户端设备可以只存储自身查询请求所对应的机器代码,使得机器代码存储空间占用率超过阈值的概率大大降低。另一方面,由于权限等原因,客户端设备通常无法指定数据库服务器对于机器代码的存储形式,数据库服务器普遍只会将机器代码存储在缓存中。而在本发明实施例中,客户端设备不仅可以将机器代码存储在缓存中,也可以将机器代码存储在长期的存储介质中,以供客户端设备重启以后再次将这些机器代码重新载入客户端设备的缓存中,从而避免了机器代码的丢失。
在本发明实施例中,可选地,数据库服务器可以只存储常用机器代码,从而提高缓冲的利用率和命中率。这里的常用机器代码可以是查询频次较高的查询请求所对应的机器代码,或者,也可以是被多个客户端设备所提出过的相同的查询请求所对应的机器代码。
此外,当该客户端设备需要再次就该查询请求查询数据库时,可以获取本地存储的该查询请求对应的机器代码,例如,从上述机器代码缓存中获取该机器代码,并向该数据库服务器发送该机器代码。相应地,该数据库服务器可以直接执行该机器代码,无需再次进行编译,从而减轻数据库服务器的负担和编译开销,提高查询效率。
下面将结合具体例子对本发明实施例提供的查询数据库的方法做更详细的说明。图3示出了本发明另一实施例提供的查询数据库的方法300。
S310,客户端设备在获取到查询请求时,可以确定该客户端设备是否存储有该查询请求对应的机器代码。
可选地,该客户端设备可以获取用户输入的查询语句,其中,该查询语句可以采用结构化查询语言(Structured Query Language,SQL),但本发明实施例不限于此。
可选地,该客户端设备可以利用该查询语句在该客户端设备的缓存中查找,以确定该客户端设备的缓存中是否存在该查询语句对应的机器代码。如果该客户端设备中不存在该查询请求对应的机器代码,则该方法300可以转到S320。
S320,客户端设备向数据库服务器发送第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码存储至该数据库服务器和/或客户端设备。
在本发明实施例中,该客户端设备可以指定查询请求对应的机器代码的存储方式,其中,该机器代码的存储方式可以有以下三种:
方式一:仅存储于数据库服务器中;
方式二:仅存储于该客户端设备中;
方式三:同时存储于数据库服务器和客户端设备中。
可选地,该客户端设备可以在该第一查询请求消息中利用Hints指定该查询请求对应的机器代码的储存方式,例如,当该Hints具体为MCServer时,可以用于指定将机器代码仅存储到数据库服务器;当该Hints具体为MCClinet时,可以用于指定将机器代码仅存储到客户端设备;当该Hints具体为MCAll时,可以用于指定将机器代码同时存储到数据库服务器和客户端设备,但本发明实施例不限于此。
可选地,该客户端设备可以根据用户输入指令,确定采取哪种Hints内容来指定该查询请求对应的机器代码的存储方式。例如,用户可以在输入客户端设备的查询语句中显示使用Hints指令语法来指定用于确定机器代码存储形式的Hints内容;或者,用户可以在客户端设备的配置文件中设置用于确定机器代码存储形式的Hints的默认内容;或者,用户可以在与客户端设备的交互过程中使用Set指令来动态调整用于确定机器代码保存形式的Hints的配置参数,本发明实施例对此不做限定。
数据库服务器在接收到客户端设备发送的第一查询请求消息时,可以对该查询请求进行解析和编译处理,以生成该查询请求对应的机器代码。数据库服务器可以执行该机器代码,得到该查询请求对应的查询结果。
具体地,该数据库服务器可以对该查询请求进行解析处理,以得到该查询请求对应的执行计划,然后可以对该执行计划进行编译处理,例如进行LLVM即时编译,得到该查询请求对应的机器代码,但本发明实施例不限于此。
数据库服务器可以向客户端设备发送该查询请求对应的查询结果。此外,如果该第一查询请求消息中的代码请求用于请求将该机器代码仅存储至该客户端设备或同时存储至该客户端设备和数据库服务器,即该代码请求用于请求将机器代码返回该客户端设备,则该数据库服务器还可以向该客户端设备发送该查询请求对应的机器代码。
客户端设备在接收该数据库服务器发送的机器代码时,可以存储该机器代码。
可选地,如果该客户端设备存储有该查询请求对应的机器代码,则该方法转到S330。
S330,客户端设备获取本地存储的该查询请求对应的机器代码,并向数据库服务器发送第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码。
数据库服务器在接收到客户端设备发送的第二查询请求时,可以直接执行该第二查询请求消息中携带的机器代码,得到该查询请求对应的查询结果,并向客户端设备发送该查询请求对应的查询结果。
因此,本发明实施例提供的查询数据库的方法,客户端设备可以在查询请求消息中指定查询请求对应的机器代码的存储方式。如果该机器代码以方式一或方式三进行存储,该数据库服务器在再次接收到该查询请求时,可以直接执行该机器代码而无需进行再次编译,从而降低该数据库服务器的开销,提高查询效率。如果该机器代码以方式二进行存储,由该客户端设备存储该机器代码,无需该数据库服务器进行存储,从而节约该数据库服务器的存储空间资源。
此外,与方式一相比,采用方式二或方式三存储机器代码能够降低机器代码丢失的概率。具体地,如果仅在数据库服务器中存储机器代码,则在数据库服务器重新启动的情况下,其缓存中存储的所有数据会丢失;或者,由于数据库服务器的存储空间大小有限,而其又需要存储所有客户端设备的机器代码,在数据库服务器的存储空间的占用率超过一定阈值之后,需要清除旧数据,以存储新数据,从而可能导致该机器代码的丢失。
此外,如果采用方式二存储该机器代码,当该客户端设备需要再次就该查询请求查询数据库时,可以从该机器代码缓存中获取该查询请求对应的机器代码,并向该数据库服务器发送该机器代码。相应地,该数据库服务器可以直接执行该机器代码,无需再次进行编译,从而减轻数据库服务器的负担,提高查询效率。
应注意,图3的这个例子是为了帮助本领域技术人员更好地理解本发明实施例,而非要限制本发明实施例的范围。本领域技术人员根据所给出的图3的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本发明实施例的范围内。
应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图4示出了本发明实施例提供的查询数据库的装置400。
发送单元410,用于向数据库服务器发送第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回客户端设备;
接收单元420,用于接收该数据库服务器根据该发送单元410发送的该第一查询请求消息发送的该查询请求对应的机器代码;
存储单元430,用于存储该接收单元420接收到的该查询请求对应的机器代码。
可选地,如图4所示,该装置400还可以包括:确定单元440,用于在该发送单元410向数据库服务器发送第一查询请求消息之前,确定该客户端设备中是否存储有该查询请求对应的机器代码。
相应地,该发送单元410具体用于在该确定单元440确定该客户端设备中不存在该查询请求对应的机器代码的情况下,向该数据库服务器发送第一查询请求消息。
可选地,该发送单元410还用于:在该确定单元440确定该客户端设备中存储有该查询请求对应的机器代码的情况下,向该数据库服务器发送第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码。
可选地,该代码请求还用于请求将该查询请求对应的机器代码存储至该数据库服务器。
可选地,该存储单元430具体用于将该查询请求对应的机器代码存储至该客户端设备的缓存中。
可选地,该装置400还可以包括:复制单元,用于将该客户端设备的缓存中存储的该机器代码复制到该客户端设备的存储介质。
应理解,这里的装置400以功能单元的形式体现。在一个可选例子中,本领域技术人员可以理解,装置400可以具体为上述实施例中的客户端设备,装置400可以用于执行上述方法实施例中与客户端设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
图5示出了本发明另一实施例提供的查询数据库的装置500。
接收单元510,用于接收客户端设备发送的第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回该客户端设备;
处理单元520,用于确定该接收单元510接收的该第一查询请求消息中携带的该查询请求对应的机器代码;
发送单元530,用于根据该接收单元510接收的该第一查询请求消息中携带的该代码请求,向该客户端设备发送该处理单元520确定的该查询请求对应的机器代码。
可选地,该处理单元520具体用于:
确定数据库服务器的缓存中是否存在该查询请求对应的机器代码;
若该数据库服务器的缓存中存在该查询请求对应的机器代码,获取该查询请求对应的机器代码;
若该数据库服务器的缓存中不存在该查询请求对应的机器代码,通过对该查询请求进行解析和编译处理,生成该查询请求对应的机器代码。
可选地,该代码请求还用于请求将该查询请求对应的机器代码存储至数据库服务器。此时,该装置500还可以包括:存储单元,用于根据该接收单元510接收的该第一查询请求消息中携带的该代码请求,将该处理单元520确定的该机器代码存储至该数据库服务器的缓存中。
可选地,该接收单元510还用于接收该客户端设备发送的第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码;
相应地,该处理单元520还用于执行该第二查询请求消息中携带的该机器代码,得到该查询请求对应的查询结果。
应理解,这里的装置500以功能单元的形式体现。在一个可选例子中,本领域技术人员可以理解,装置500可以具体为上述实施例中的数据库服务器,装置500可以用于执行上述方法实施例中与数据库服务器对应的各个流程和/或步骤,为避免重复,在此不再赘述。
还应理解,在本发明实施例中,术语“单元”可以指应用特有集成电路(Application Specific Integrated Circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
图6示出了本发明另一实施例提供的查询数据库的装置600。该装置600包括处理器610和存储器620。该存储器620用于存储指令,该处理器610用于执行该存储器620存储的指令,其中,对指令的执行使得该处理器610执行以下操作:
向数据库服务器发送第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回客户端设备;
接收该数据库服务器根据该第一查询请求消息发送的该查询请求对应的机器代码;
存储该查询请求对应的机器代码。
可选地,该处理器610还用于执行以下操作:
在向数据库服务器发送第一查询请求消息之前,确定该客户端设备中是否存储有该查询请求对应的机器代码;
在该客户端设备中不存在该查询请求对应的机器代码的情况下,向该数据库服务器发送第一查询请求消息。
可选地,该处理器610还用于执行以下操作:
在该客户端设备中存储有该查询请求对应的机器代码的情况下,向该数据库服务器发送第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码。
可选地,该代码请求还用于请求将该查询请求对应的机器代码存储至该数据库服务器。
可选地,该处理器610具体用于执行以下操作:将该查询请求对应的机器代码存储至该客户端设备的缓存中。
该处理器610还用于执行以下操作:将该客户端设备的缓存中存储的该机器代码复制到该客户端设备的存储介质。
应理解,装置600可以具体为上述实施例中的客户端设备,装置600可以用于执行上述方法实施例中与客户端设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
图7示出了本发明另一实施例提供的查询数据库的装置700。该装置700包括处理器710和存储器720。该存储器720用于存储指令,该处理器710用于执行该存储器720存储的指令,其中,对指令的执行使得该处理器710执行以下操作:
接收客户端设备发送的第一查询请求消息,该第一查询请求消息携带查询请求和代码请求,该代码请求用于请求将该查询请求对应的机器代码返回该客户端设备;
确定该第一查询请求消息中携带的该查询请求对应的机器代码;
根据该第一查询请求消息中携带的该代码请求,向该客户端设备发送该查询请求对应的机器代码。
可选地,该处理器720具体用于执行以下操作:
确定数据库服务器的缓存中是否存在该查询请求对应的机器代码;
若该数据库服务器的缓存中存在该查询请求对应的机器代码,获取该查询请求对应的机器代码;和/或若该数据库服务器的缓存中不存在该查询请求对应的机器代码,通过对该查询请求进行解析和编译处理,生成该查询请求对应的机器代码。
可选地,该代码请求还用于请求将该查询请求对应的机器代码存储至数据库服务器。此时,该处理器720具体用于执行以下操作:根据该第一查询请求消息中携带的该代码请求,将该机器代码存储至该数据库服务器的缓存中。
可选地,该处理器720还用于执行以下操作:
接收该客户端设备发送的第二查询请求消息,该第二查询请求消息携带该查询请求对应的机器代码;
执行该第二查询请求消息中携带的该机器代码,得到该查询请求对应的查询结果。
应理解,装置700可以具体为上述实施例中的数据库服务器,装置700可以用于执行上述方法实施例中与数据库服务器对应的各个流程和/或步骤,为避免重复,在此不再赘述。
应理解,在本发明实施例中,该处理器可以是中央处理单元(Central ProcessingUnit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本发明实施例可以应用于包括两个数据库服务器实例的数据库双机热备系统,其中,该两个数据库服务器实例通过交换机连接,并且具有不同的存储设备。在现有技术中,为了使得激活的数据库服务器实例出现故障时能够及时切换到另一个数据库服务器实例,处于激活状态的数据库服务器实例需要通过利用支持镜像的软件,将数据实时复制到另一台数据库服务器实例上,以使得两个数据库服务器实例具有相同的数据。而本发明实施例中,通过在客户端服务器存储查询请求对应的机器代码,主备数据库服务器实例可以无需进行机器代码的同步操作,从而降低数据库服务器实例的负担。
本发明实施例可以应用于包括多个数据库服务器实例的集群数据库系统,其中,该多个数据库服务器实例通过SAN交换机连接,并且共享同一个存储设备。在现有技术中,不同的数据库服务器实例在激活状态时可能会接收到不同的查询请求,因此存储的机器代码可能会不同。这样,某个查询请求对应的机器代码可能只存储在其中一个数据库服务器实例中。当当前激活的数据库服务器实例接收该查询请求时,需要在所有的数据库服务器实例中查询该查询请求对应的机器代码。而在本发明实施例中,客户端设备可以存储该查询请求对应的机器代码,因此在该客户端设备再次发送该查询请求时,可以直接向当前激活的数据库服务器实例发送该机器代码,当前激活的数据库服务器实例无需进行查找,从而节约数据库服务器实例的负担和开销,提高数据库的查询效率。
应理解,在本发明实施例中,术语和/或仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符/,一般表示前后关联对象是一种或的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种查询数据库的方法,其特征在于,包括:
客户端设备向数据库服务器发送第一查询请求消息,所述第一查询请求消息携带查询请求和代码请求,所述代码请求用于请求将所述查询请求对应的机器代码返回所述客户端设备;
所述客户端设备接收所述数据库服务器发送的所述查询请求对应的机器代码;
所述客户端设备存储所述查询请求对应的机器代码。
2.根据权利要求1所述的方法,其特征在于,在所述客户端设备向数据库服务器发送第一查询请求消息之前,所述方法还包括:
所述客户端设备确定所述客户端设备中是否存储有所述查询请求对应的机器代码;
所述客户端设备向数据库服务器发送第一查询请求消息,包括:
若所述客户端设备中不存在所述查询请求对应的机器代码,所述客户端设备向所述数据库服务器发送第一查询请求消息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述客户端设备中存储有所述查询请求对应的机器代码,所述客户端设备向所述数据库服务器发送第二查询请求消息,所述第二查询请求消息携带所述查询请求对应的机器代码。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述代码请求还用于请求将所述查询请求对应的机器代码存储至所述数据库服务器。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述客户端设备存储所述查询请求对应的机器代码,包括:
所述客户端设备将所述查询请求对应的机器代码存储至所述客户端设备的缓存中;
所述方法还包括:
所述客户端设备将所述客户端设备的缓存中存储的所述机器代码复制到所述客户端设备的存储介质。
6.一种查询数据库的方法,其特征在于,包括:
数据库服务器接收客户端设备发送的第一查询请求消息,所述第一查询请求消息携带查询请求和代码请求,所述代码请求用于请求将所述查询请求对应的机器代码返回所述客户端设备;
所述数据库服务器确定所述查询请求对应的机器代码;
所述数据库服务器根据所述代码请求,向所述客户端设备发送所述查询请求对应的机器代码。
7.根据权利要求6所述的方法,其特征在于,所述数据库服务器确定所述查询请求对应的机器代码,包括:
所述数据库服务器确定所述数据库服务器的缓存中是否存在所述查询请求对应的机器代码;
若所述数据库服务器的缓存中存在所述查询请求对应的机器代码,获取所述查询请求对应的机器代码;
若所述数据库服务器的缓存中不存在所述查询请求对应的机器代码,通过对所述查询请求进行解析和编译处理,生成所述查询请求对应的机器代码。
8.根据权利要求6或7所述的方法,其特征在于,所述代码请求还用于请求将所述查询请求对应的机器代码存储至所述数据库服务器;
所述方法还包括:根据所述代码请求,将所述机器代码存储至所述数据库服务器的缓存中。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述方法还包括:
所述数据库服务器接收所述客户端设备发送的第二查询请求消息,所述第二查询请求消息携带所述查询请求对应的机器代码;
所述数据库服务器执行所述第二查询请求消息中携带的所述机器代码,得到所述查询请求对应的查询结果。
10.一种查询数据库的装置,其特征在于,包括:
发送单元,用于向数据库服务器发送第一查询请求消息,所述第一查询请求消息携带查询请求和代码请求,所述代码请求用于请求将所述查询请求对应的机器代码返回客户端设备;
接收单元,用于接收所述数据库服务器根据所述发送单元发送的所述第一查询请求消息发送的所述查询请求对应的机器代码;
存储单元,用于存储所述接收单元接收到的所述查询请求对应的机器代码。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
确定单元,用于在所述发送单元向数据库服务器发送第一查询请求消息之前,确定所述客户端设备中是否存储有所述查询请求对应的机器代码;
所述发送单元具体用于在所述确定单元确定所述客户端设备中不存在所述查询请求对应的机器代码的情况下,向所述数据库服务器发送第一查询请求消息。
12.根据权利要求11所述的装置,其特征在于,所述发送单元还用于:
在所述确定单元确定所述客户端设备中存储有所述查询请求对应的机器代码的情况下,向所述数据库服务器发送第二查询请求消息,所述第二查询请求消息携带所述查询请求对应的机器代码。
13.根据权利要求10至12中任一项所述的装置,其特征在于,所述代码请求还用于请求将所述查询请求对应的机器代码存储至所述数据库服务器。
14.根据权利要求10至13中任一项所述的装置,其特征在于,所述存储单元具体用于将所述查询请求对应的机器代码存储至所述客户端设备的缓存中;
所述装置还包括:
复制单元,用于将所述客户端设备的缓存中存储的所述机器代码复制到所述客户端设备的存储介质。
15.一种查询数据库的装置,其特征在于,包括:
接收单元,用于接收客户端设备发送的第一查询请求消息,所述第一查询请求消息携带查询请求和代码请求,所述代码请求用于请求将所述查询请求对应的机器代码返回所述客户端设备;
处理单元,用于确定所述接收单元接收的所述第一查询请求消息中携带的所述查询请求对应的机器代码;
发送单元,用于根据所述接收单元接收的所述第一查询请求消息中携带的所述代码请求,向所述客户端设备发送所述处理单元确定的所述查询请求对应的机器代码。
16.根据权利要求15所述的装置,其特征在于,所述处理单元具体用于:
确定数据库服务器的缓存中是否存在所述查询请求对应的机器代码;
若所述数据库服务器的缓存中存在所述查询请求对应的机器代码,获取所述查询请求对应的机器代码;
若所述数据库服务器的缓存中不存在所述查询请求对应的机器代码,通过对所述查询请求进行解析和编译处理,生成所述查询请求对应的机器代码。
17.根据权利要求15或16所述的装置,其特征在于,所述代码请求还用于请求将所述查询请求对应的机器代码存储至数据库服务器;
所述装置还包括:存储单元,用于根据所述接收单元接收的所述第一查询请求消息中携带的所述代码请求,将所述处理单元确定的所述机器代码存储至所述数据库服务器的缓存中。
18.根据权利要求15至17中任一项所述的装置,其特征在于,所述接收单元还用于接收所述客户端设备发送的第二查询请求消息,所述第二查询请求消息携带所述查询请求对应的机器代码;
所述处理单元还用于执行所述第二查询请求消息中携带的所述机器代码,得到所述查询请求对应的查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710003645.4A CN108268561A (zh) | 2017-01-04 | 2017-01-04 | 查询数据库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710003645.4A CN108268561A (zh) | 2017-01-04 | 2017-01-04 | 查询数据库的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108268561A true CN108268561A (zh) | 2018-07-10 |
Family
ID=62770818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710003645.4A Pending CN108268561A (zh) | 2017-01-04 | 2017-01-04 | 查询数据库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108268561A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113168147A (zh) * | 2018-12-29 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 使用硬件加速高效地扫描数据库的系统和方法 |
-
2017
- 2017-01-04 CN CN201710003645.4A patent/CN108268561A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113168147A (zh) * | 2018-12-29 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 使用硬件加速高效地扫描数据库的系统和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8069224B2 (en) | Method, equipment and system for resource acquisition | |
CN110417879A (zh) | 一种消息处理方法、装置、设备及存储介质 | |
CN110489440B (zh) | 数据查询方法和装置 | |
CN111797091A (zh) | 数据库中数据查询的方法、装置、电子设备和存储介质 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
CN104205730B (zh) | 网元数据访问方法、虚拟网元、网络管理服务器及网络管理系统 | |
CN114780615A (zh) | 错误码管理方法及其装置 | |
CN113254819B (zh) | 一种页面渲染方法、系统、设备和存储介质 | |
CN113297516A (zh) | 客户交互界面生成方法、装置和电子设备 | |
CN114625566A (zh) | 数据容灾方法、装置、电子设备及存储介质 | |
KR20090025940A (ko) | 분산 파일 시스템 및 분산 파일 시스템의 캐쉬 데이터 대체방법 | |
CN110798222B (zh) | 一种数据压缩方法及装置 | |
CN108268561A (zh) | 查询数据库的方法和装置 | |
CN107357853B (zh) | 一种redis控制台的操作方法、装置及计算机系统 | |
CN105025042B (zh) | 一种确定数据信息的方法及系统、代理服务器 | |
CN111367921A (zh) | 数据对象的刷新方法及装置 | |
CN112231405B (zh) | 数据存储装置 | |
CN115168440A (zh) | 数据读写方法、分布式存储系统、装置、设备和存储介质 | |
CN114896223A (zh) | 数据库实现装置、方法、系统、介质以及计算机程序产品 | |
CN114791905A (zh) | 资源记录的存储方法、装置、存储介质及电子设备 | |
CN111078736A (zh) | 一种数据聚合处理方法、装置、终端及存储介质 | |
CN113645261A (zh) | 一种会话数据处理方法、装置、存储介质和计算机设备 | |
CN109639704A (zh) | 一种主从式服务器系统应用方法、系统、服务器及存储介质 | |
CN115361440B (zh) | 多Kubernetes集群的端点资源的更新方法、更新装置及电子设备 | |
CN113760868B (zh) | 数据处理方法、装置及存储服务系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180710 |
|
WD01 | Invention patent application deemed withdrawn after publication |