CN112445817A - 查询指令的执行方法、装置、电子设备及计算机可读介质 - Google Patents
查询指令的执行方法、装置、电子设备及计算机可读介质 Download PDFInfo
- Publication number
- CN112445817A CN112445817A CN201910798315.8A CN201910798315A CN112445817A CN 112445817 A CN112445817 A CN 112445817A CN 201910798315 A CN201910798315 A CN 201910798315A CN 112445817 A CN112445817 A CN 112445817A
- Authority
- CN
- China
- Prior art keywords
- name
- library
- query
- execution plan
- names
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 238000002360 preparation method Methods 0.000 claims description 4
- 238000003860 storage Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 208000003028 Stuttering Diseases 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种查询指令的执行方法、装置、电子设备及计算机可读介质,涉及数据库领域。其中,所述方法包括:根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名;对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。通过本申请实施例,有效解决了缓存逻辑表的所有物理分表的执行计划带来的性能卡顿问题。
Description
技术领域
本申请实施例涉及数据库领域,尤其涉及一种查询指令的执行方法、装置、电子设备及计算机可读介质。
背景技术
MySQL数据库为开源的关系型数据库,目前属于最流行的数据库之一。在MySQL数据库的分片场景中,为了解决存储容量限制和提升单表查询性能,会为逻辑表创建大量相同结构的物理分表。由于MySQL数据库的Prepared Statement协议默认查询模版中只允许对常量使用占位符,缓存的执行计划中需要包含针对全部物理分表的查询指令的执行计划。随着物理分表的数量和查询指令的复杂度增加,将会占用大量的缓存,从而引发性能卡顿的问题。由此可见,如何有效解决缓存逻辑表的所有物理分表的执行计划所带来的性能卡顿的问题成为当前亟待解决的技术问题。
发明内容
本申请的目的在于提出一种查询指令的执行方法、装置、电子设备及计算机可读介质,用于解决现有技术中存在的如何有效解决缓存逻辑表的所有物理分表的执行计划所带来的性能卡顿的问题。
根据本申请实施例的第一方面,提供了一种查询指令的执行方法。所述方法包括:根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名,其中,所述执行计划为所述库名和/或所述表名经过参数化的执行计划;对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
根据本申请实施例的第二方面,提供了一种查询指令的执行装置。所述装置包括:第一确定模块,用于根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;合并模块,用于对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;填充模块,用于基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
根据本申请实施例的第三方面,提供了一种电子设备,包括:一个或多个处理器;计算机可读介质,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例的第一方面所述的查询指令的执行方法。
根据本申请实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的第一方面所述的查询指令的执行方法。
根据本申请实施例提供的技术方案,根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;并对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令,与现有的Prepared Statement机制的方案相比,通过查询模板的经过表名和/或库名参数化的执行计划,使得逻辑表的所有物理分表共享一份执行计划,从而有效解决了缓存逻辑表的所有物理分表的执行计划带来的性能卡顿问题。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1A为本申请实施例一中查询指令的执行方法的步骤流程图;
图1B为根据本申请实施例一提供的执行计划表名参数化过程的示意图;
图2为本申请实施例二中查询指令的执行方法的步骤流程图;
图3A为本申请实施例三中分布式数据库系统的结构示意图;
图3B为根据本申请实施例三提供的查询指令的执行过程的示意图;
图4为本申请实施例四中查询指令的执行装置的结构示意图;
图5为本申请实施例五中查询指令的执行装置的结构示意图;
图6为本申请实施例六中电子设备的结构示意图;
图7为本申请实施例七中电子设备的硬件结构。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
参照图1A,示出了本申请实施例一的查询指令的执行方法的步骤流程图。
具体地,本实施例的查询指令的执行方法包括以下步骤:
在步骤S101中,根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名。
在本申请实施例中,所述第一查询指令可为SQL指令。所述SQL指令可为用于指示在分布式数据库中存取数据的SQL指令、用于指示查询分布式关系型数据库的SQL指令、用于指示更新分布式关系型数据库的SQL指令,或者用于指示管理分布式关系型数据库的SQL指令等。所述SQL(Structured Query Language,结构化查询语言)是一种特殊目的的编程语言,是一种数据库查询的程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。所述业务参数可理解为所述第一查询指令中携带的业务常量,例如,员工标识字段中的具体员工标识、员工薪资字段中的员工薪资。所述执行计划可理解为所述表名和/或所述库名经过参数化的执行计划。在现有的Prepared Statement机制的方案中,所述第一查询指令对应的查询模板的执行计划为所述业务参数经过参数化的执行计划,而本实施例中,所述第一查询指令对应的查询模板的执行计划为在所述业务参数经过参数化的基础上,所述表名和/或所述库名再次经过参数化的执行计划。其中,所述表名可理解为逻辑表的物理分表的表名,所述库名可理解为所述逻辑表所在的数据库的库名。所述逻辑表可包括分表、单表,或者广播表等。所述分表可理解为通过拆分规则拆分后的数据表。所述单表可理解为没有通过拆分规则拆分的数据表,存储于分布式数据库主节点的存储磁盘中。所述广播表可理解为没有通过拆分规则拆分,并且分布存储于分布式数据库节点的存储磁盘的数据表。所述查询模板用于高效执行相同或相近的查询指令。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,在根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名时,基于所述业务参数、逻辑表拆分为物理分表的拆分条件,及预先配置的分库分表规则,确定所述表名和/或所述库名。籍此,通过所述业务参数、逻辑表拆分为物理分表的拆分条件,及预先配置的分库分表规则,能够准确地确定逻辑表的物理分表的表名和/或所述库名。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,在建立表名为t1的逻辑表时,在DRDS(分布式关系型数据库服务器)元数据中保存一个物理分表的表名模版t1_{00},其中{00}为占位符。当所述逻辑表拆分为所述物理分表的拆分条件为标识字段,并且预先配置的分库分表规则为:(#id#.longValue().abs()%24).intdiv(3),也即是8个分库,每个分库3张分表时,将接收到的第一查询指令中的业务参数1代入预先配置的分库分表规则(模24后除3取整),得到1,左侧补0后替换物理分表的表名模版中的占位符,得到物理分表的表名t1_01。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,在根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名之前,所述方法还包括:接收客户端通过预备语句预先定义的包含常量占位符的所述查询模板;对所述查询模板进行解析优化,以获得所述查询模板的基于逻辑表的执行计划;对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划。籍此,通过所述表名和/或所述库名经过参数化的执行计划,使得逻辑表的所有物理分表共享一份执行计划,从而有效解决了缓存逻辑表的所有物理分表的执行计划带来的性能卡顿问题。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,所述预备语句可理解为用于预先定义包含常量占位符的查询模板的语句,以支持高效执行相同或相近的查询指令。在对所述查询模板进行解析优化时,对所述查询模板进行解析,以获得与所述查询模板对应的多个基于所述逻辑表的等价执行计划;计算每个基于所述逻辑表的等价执行计划的执行成本;基于所述每个基于所述逻辑表的等价执行计划的执行成本,确定最终与所述查询模板对应的基于所述逻辑表的等价执行计划。其中,所述查询模板的基于逻辑表的执行计划为业务参数经过参数化的执行计划,而并非业务参数、表名和/或库名都经过参数化的执行计划。所述表名和/或所述库名经过参数化的执行计划为在业务参数经过参数化的基础上,所述表名和/或所述库名再次经过参数化的执行计划。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,在对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划时,遍历基于所述逻辑表的执行计划中的第一语法单元,如果确定所述第一语法单元中包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为特殊占位符;如果确定所述第一语法单元中不包含所述表名和/或所述库名,并且所述第一语法单元中包含子查询,则确定所述子查询中的第二语法单元是否包含所述表名和/或所述库名;如果确定所述子查询中的第二语法单元包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为所述特殊占位符。籍此,能够获得表名和/或库名经过参数化的执行计划。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,所述第一语法单元和所述第二语法单元可理解为基于所述逻辑表的执行计划中自然而然切分的语法单元,例如,SELECT/DELETE语句的WHERE部分,UPDATE语句的SET部分等均可以理解为语法单元。所述特殊占位符可为使用下标为-1的占位符,通过使用下标为-1的占位符,能够方便在实际执行用户输入的查询指令时对业务参数、表名和/或库名进行排序。所述子查询是一种常用计算机语言SELECT-查询语言中嵌套查询下层的程序模块。当一个查询A是另一个查询B的条件时,称之为子查询,如,查询A为子查询。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,所述将所述表名和/或所述库名替换为特殊占位符之前,所述方法还包括:如果确定所述表名和/或所述库名具有别名,则执行将所述表名和/或所述库名替换为特殊占位符的步骤;如果确定所述表名和/或所述库名不具有别名,则生成与所述表名和/或所述库名同名的别名,并执行将所述表名和/或所述库名替换为特殊占位符的步骤。籍此,在将表名和/或库名替换为特殊占位符之前,保留表名和/或库名的别名,能够保证表名和/或库名经过参数化的执行计划在语义上的正确性。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,用户通过客户端,向DRDS代理服务器发送查询模板。DRDS代理服务器接收到查询模板后,对查询模板进行解析优化,得到基于逻辑表的执行计划,该执行计划中包含一个或多个对逻辑表的引用。然后,DRDS代理服务器对基于逻辑表的执行计划进行表名和/或库名的参数化。具体地,如图1B所示,遍历基于所述逻辑表的执行计划中的语法单元,确定该语法单元是否包含表名和/或库名,如果该语法单元包含表名和/或库名,确定该语法单元包含表名和/或库名是否具有相应的别名。如果具有相应的别名,将表名和/或库名替换为特殊占位符。如果不具有相应的别名,生成与表名和/或库名同名的别名,并将表名和/或库名替换为特殊占位符。如果该语法单元不包含表名和/或库名,确定该语法单元是否包含子查询。如果该语法单元包含子查询,遍历子查询中的语法单元,确定子查询中的语法单元是否包含表名和/或库名,如果子查询中的语法单元包含表名和/或库名,确定子查询中的语法单元包含的表名和/或库名是否具有相应的别名。如果具有相应的别名,将表名和/或库名替换为特殊占位符。如果不具有相应的别名,生成与表名和/或库名同名的别名,并将表名和/或库名替换为特殊占位符。DRDS代理服务器缓存经过表名和/或库名参数化的执行计划,并向客户端返回生成的查询模板的ID,此时逻辑表的所有物理分表共享一份执行计划。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在步骤S102中,对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果。
在一些可选实施例中,在对所述业务参数、所述表名和/或所述库名进行合并时,按照所述业务参数在所述第一查询指令中出现的顺序,对所述业务参数进行排序,以获得所述业务参数的排序列表;按照所述执行计划中的语法单元中的特殊占位符的出现顺序,将所述表名和/或所述库名插入到所述业务参数的排序列表中,以获得所述业务参数、所述表名和/或所述库名的排序列表。籍此,能够准确地获得业务参数、表名和/或库名的排序结果。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,所述业务参数在所述第一查询指令中出现的顺序的信息可由客户端发送给DRDS代理服务器。所述执行计划中的语法单元中的特殊占位符的出现顺序的信息可由DRDS代理服务器根据计划缓存中的所述第一查询指令对应的查询模板的执行计划获得。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在步骤S103中,基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
在一些可选实施例中,在基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令时,遍历所述表名和/或所述库名经过参数化的执行计划中的语法单元,如果所述语法单元中包含普通占位符,则基于所述合并结果,将所述普通占位符替换为相应的业务参数,以生成发送至分布式数据库的节点执行的第二查询指令;如果所述语法单元中包含特殊占位符,则基于所述合并结果,将所述特殊占位符替换为相应的表名和/或库名,以生成发送至分布式数据库的节点执行的第二查询指令。籍此,通过所述业务参数、所述表名和/或所述库名的合并结果,能够准确地将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,按照语法单元出现的顺序遍历缓存的执行计划,遇到占位符时进行判断。如果为普通占位符,将业务参数加入到结果队列。如果为特殊占位符,将物理分表的表名和/或库名加入结果队列。最后,基于第一查询指令对应的查询模板的执行计划和结果队列中的业务参数、表名和/或库名,生成发送至分布式数据库的节点执行的第二查询指令。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
通过本申请实施例提供的查询指令的执行方法,根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;并对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令,与现有的Prepared Statement机制的方案相比,通过查询模板的经过表名和/或库名参数化的执行计划,使得逻辑表的所有物理分表共享一份执行计划,从而有效解决了缓存逻辑表的所有物理分表的执行计划带来的性能卡顿问题。
本实施例的查询指令的执行方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
参照图2,示出了本申请实施例二的查询指令的执行方法的步骤流程图。
具体地,本实施例的查询指令的执行方法包括以下步骤:
在步骤S201中,基于接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名。
由于该步骤S201与上述步骤S101类似,在此不再赘述。
在步骤S202中,对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果。
由于该步骤S202与上述步骤S102类似,在此不再赘述。
在步骤S203中,基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
由于该步骤S203与上述步骤S103类似,在此不再赘述。
在步骤S204中,接收所述分布式数据库的节点针对所述第二查询指令的执行结果,并基于所述节点针对所述第二查询指令的执行结果,向客户端返回针对所述第一查询指令的执行结果。
在本申请实施例中,所述DRDS代理服务器对接收到的所述分布式数据库的节点针对所述第二查询指令的执行结果进行合并处理或聚类处理,以获得针对所述第一查询指令的执行结果。在获得针对所述第一查询指令的执行结果之后,所述DRDS代理服务器向所述客户端返回针对所述第一查询指令的执行结果。可以理解的是,以上描述仅为示例性的,本申请实施例对此不作任何限定。
通过本申请实施例提供的查询指令的执行方法,根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或参数,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;并对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令,再接收所述分布式数据库的节点针对所述第二查询指令的执行结果,再基于所述节点针对所述第二查询指令的执行结果,向客户端返回针对所述第一查询指令的执行结果,与现有的Prepared Statement机制的方案相比,通过查询模板的经过表名和/或库名参数化的执行计划,使得逻辑表的所有物理分表共享一份执行计划,从而有效解决了缓存逻辑表的所有物理分表的执行计划带来的性能卡顿问题。
本实施例的查询指令的执行方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
参照图3A,示出了本申请实施例三中分布式数据库系统的结构示意图。
本实施例提供的分布式数据库系统包括:客户端、与所述客户端连接的服务器,及与所述服务器连接的分布式数据库节点;所述客户端,用于向所述服务器发送第一查询指令中的业务参数;所述服务器,用于根据接收到的所述业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;并对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
在一个具体的例子中,所述分布式数据库节点的数量为多个,所述服务器与多个分布式数据库节点连接。此外,每个分布式数据库节点具有相应的存储磁盘。所述存储磁盘可存储数据库的逻辑表,例如,分表、单表,或者广播表等。其中,所述分表可理解为通过拆分规则拆分后的数据表。所述单表可理解为没有通过拆分规则拆分的数据表,存储于分布式数据库主节点的存储磁盘中。所述广播表可理解为没有通过拆分规则拆分,并且分布存储于分布式数据库节点的存储磁盘的数据表。所述服务器可为DRDS代理服务器。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,如图3B所示,分布式数据库系统包括客户端、与客户端连接的DRDS代理服务器,及与DRDS代理服务器连接的各个分布式数据库节点,例如,节点MySQLA、MySQL B等。所述DRDS代理服务器为在客户端和分布式数据库节点之间加入的一个服务器,主要为客户端提供MySQL分片路由的能力,用户输入的SQL指令会根据DRDS代理服务器的分片算法路由到其中的一个分布式数据库节点上,通过DRDS代理服务器,用户可以很方便的管理和操作多个分布式数据库节点。SQL指令的执行过程如下:客户端向DRDS代理服务器发送SQL模板,DRDS代理服务器对接收到的SQL模板进行解析优化,以生成基于逻辑表的执行计划,并对生成的基于逻辑表的执行计划中的表名和/或库名进行参数化,以获得表名和/或库名经过参数化的执行计划。然后,缓存表名和/或库名经过参数化的执行计划,并向客户端返回生成的SQL模板ID。在实际执行用户输入的SQL指令时,客户端向DRDS代理服务器发送用户输入的SQL指令中携带的业务参数,DRDS代理服务器根据接收到的用户输入SQL指令中的业务参数,确定待填充到用户输入SQL指令对应的SQL模板的执行计划中的表名和/或库名,并对所述业务参数、所述表名和/或所述库名进行合并,以获得所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的SQL指令。分布式数据库的节点执行DRDS代理服务器发送的SQL指令,并向DRDS代理服务器返回SQL指令的执行结果。DRDS代理服务器对分布式数据库节点返回的SQL指令的执行结果进行合并处理或聚合处理,以获得针对所述用户输入SQL指令的执行结果。在获得针对用户输入SQL指令的执行结果之后,DRDS代理服务器向客户端返回针对用户输入SQL指令的执行结果。可以理解的是,以上描述仅为示例性的,本申请实施例对此不作任何限定。
本实施例的分布式数据库系统用于实现前述多个方法实施例中相应的查询指令的执行方法,并具有相应的方法实施例的有益效果,在此不再赘述。
参照图4,示出了本申请实施例四中查询指令的执行装置的结构示意图。
本实施例的查询指令的执行装置包括:第一确定模块301,用于根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;合并模块302,用于对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;填充模块303,用于基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
本实施例的查询指令的执行装置用于实现前述多个方法实施例中相应的查询指令的执行方法,并具有相应的方法实施例的有益效果,在此不再赘述。
参照图5,示出了本申请实施例五中查询指令的执行装置的结构示意图。
本实施例的查询指令的执行装置包括:第一确定模块404,用于根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;合并模块405,用于对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;填充模块406,用于基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
可选地,所述第一确定模块404之前,所述装置还包括:接收模块401,用于接收客户端通过预备语句预先定义的包含常量占位符的所述查询模板;解析优化模块402,用于对所述查询模板进行解析优化,以获得所述查询模板的基于逻辑表的执行计划;参数化模块403,用于对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划。
可选地,所述参数化模块403,包括:第一替换模块4033,用于遍历基于所述逻辑表的执行计划中的第一语法单元,如果确定所述第一语法单元中包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为特殊占位符;第二确定模块4034,用于如果确定所述第一语法单元中不包含所述表名和/或所述库名,并且所述第一语法单元中包含子查询,则确定所述子查询中的第二语法单元是否包含所述表名和/或所述库名;第二替换模块4035,用于如果确定所述子查询中的第二语法单元包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为所述特殊占位符。
可选地,所述第一替换模块4033之前,所述参数化模块403还包括:第一执行模块4031,用于如果确定所述表名和/或所述库名具有别名,则执行将所述表名和/或所述库名替换为特殊占位符的步骤;第二执行模块4032,用于如果确定所述表名和/或所述库名不具有别名,则生成与所述表名和/或所述库名同名的别名,并执行将所述表名和/或所述库名替换为特殊占位符的步骤。
可选地,所述第一确定模块404,具体用于:基于所述业务参数、逻辑表拆分为物理分表的拆分条件,及预先配置的分库分表规则,确定所述表名和/或所述库名。
可选地,所述合并模块405,具体用于:按照所述业务参数在所述第一查询指令中出现的顺序,对所述业务参数进行排序,以获得所述业务参数的排序列表;按照所述执行计划中的语法单元中的特殊占位符的出现顺序,将所述表名和/或所述库名插入到所述业务参数的排序列表中,以获得所述业务参数、所述表名和/或所述库名的排序列表。
可选地,所述填充模块406,具体用于:遍历所述表名和/或所述库名经过参数化的执行计划中的语法单元,如果所述语法单元中包含普通占位符,则基于所述合并结果,将所述普通占位符替换为相应的业务参数,以生成发送至分布式数据库的节点执行的第二查询指令;如果所述语法单元中包含特殊占位符,则基于所述合并结果,将所述特殊占位符替换为相应的表名和/或库名,以生成发送至分布式数据库的节点执行的第二查询指令。
本实施例的查询指令的执行装置用于实现前述多个方法实施例中相应的查询指令的执行方法,并具有相应的方法实施例的有益效果,在此不再赘述。
图6为本申请实施例六中电子设备的结构示意图;该电子设备可以包括:
一个或多个处理器601;
计算机可读介质602,可以配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例一或实施例二所述的查询指令的执行方法。
图7为本申请实施例七中电子设备的硬件结构;如图7所示,该电子设备的硬件结构可以包括:处理器701,通信接口702,计算机可读介质703和通信总线704;
其中处理器701、通信接口702、计算机可读介质703通过通信总线704完成相互间的通信;
可选地,通信接口702可以为通信模块的接口,如GSM模块的接口;
其中,处理器701具体可以配置为:根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名,其中,所述执行计划为所述库名和/或所述表名经过参数化的执行计划;对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
处理器701可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
计算机可读介质703可以是,但不限于,随机存取存储介质(Random AccessMemory,RAM),只读存储介质(Read Only Memory,ROM),可编程只读存储介质(Programmable Read-Only Memory,PROM),可擦除只读存储介质(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储介质(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含配置为执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写配置为执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络:包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个配置为实现规定的逻辑功能的可执行指令。上述具体实施例中有特定先后关系,但这些先后关系只是示例性的,在具体实现的时候,这些步骤可能会更少、更多或执行顺序有调整。即在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一确定模块、合并模块和填充模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一确定模块还可以被描述为“基于接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一或实施例二所描述的查询指令的执行方法。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名,其中,所述执行计划为所述库名和/或所述表名经过参数化的执行计划;对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
在本公开的各种实施方式中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。例如,第一用户设备和第二用户设备表示不同的用户设备,虽然两者均是用户设备。例如,在不背离本公开的范围的前提下,第一元件可称作第二元件,类似地,第二元件可称作第一元件。
当一个元件(例如,第一元件)称为与另一元件(例如,第二元件)“(可操作地或可通信地)联接”或“(可操作地或可通信地)联接至”另一元件(例如,第二元件)或“连接至”另一元件(例如,第二元件)时,应理解为该一个元件直接连接至该另一元件或者该一个元件经由又一个元件(例如,第三元件)间接连接至该另一个元件。相反,可理解,当元件(例如,第一元件)称为“直接连接”或“直接联接”至另一元件(第二元件)时,则没有元件(例如,第三元件)插入在这两者之间。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (17)
1.一种查询指令的执行方法,其特征在于,所述方法包括:
根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名,其中,所述执行计划为所述库名和/或所述表名经过参数化的执行计划;
对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;
基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
2.根据权利要求1所述的方法,其特征在于,所述根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名之前,所述方法还包括:
接收客户端通过预备语句预先定义的包含常量占位符的所述查询模板;
对所述查询模板进行解析优化,以获得所述查询模板的基于逻辑表的执行计划;
对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划。
3.根据权利要求2所述的方法,其特征在于,所述对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划,包括:
遍历基于所述逻辑表的执行计划中的第一语法单元,如果确定所述第一语法单元中包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为特殊占位符;
如果确定所述第一语法单元中不包含所述表名和/或所述库名,并且所述第一语法单元中包含子查询,则确定所述子查询中的第二语法单元是否包含所述表名和/或所述库名;
如果确定所述子查询中的第二语法单元包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为所述特殊占位符。
4.根据权利要求3所述的方法,其特征在于,所述将所述表名和/或所述库名替换为特殊占位符之前,所述方法还包括:
如果确定所述表名和/或所述库名具有别名,则执行将所述表名和/或所述库名替换为特殊占位符的步骤;
如果确定所述表名和/或所述库名不具有别名,则生成与所述表名和/或所述库名同名的别名,并执行将所述表名和/或所述库名替换为特殊占位符的步骤。
5.根据权利要求1所述的方法,其特征在于,所述根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的库名和/或表名,包括:
基于所述业务参数、逻辑表拆分为物理分表的拆分条件,及预先配置的分库分表规则,确定所述表名和/或所述库名。
6.根据权利要求1所述的方法,其特征在于,所述对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果,包括:
按照所述业务参数在所述第一查询指令中出现的顺序,对所述业务参数进行排序,以获得所述业务参数的排序列表;
按照所述执行计划中的语法单元中的特殊占位符的出现顺序,将所述表名和/或所述库名插入到所述业务参数的排序列表中,以获得所述业务参数、所述表名和/或所述库名的排序列表。
7.根据权利要求1所述的方法,其特征在于,所述基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令,包括:
遍历所述表名和/或所述库名经过参数化的执行计划中的语法单元,如果所述语法单元中包含普通占位符,则基于所述合并结果,将所述普通占位符替换为相应的业务参数,以生成发送至分布式数据库的节点执行的第二查询指令;
如果所述语法单元中包含特殊占位符,则基于所述合并结果,将所述特殊占位符替换为相应的表名和/或库名,以生成发送至分布式数据库的节点执行的第二查询指令。
8.一种查询指令的执行装置,其特征在于,所述装置包括:
第一确定模块,用于根据接收到的第一查询指令中的业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;
合并模块,用于对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;
填充模块,用于基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至分布式数据库的节点执行的第二查询指令。
9.根据权利要求8所述的装置,其特征在于,所述第一确定模块之前,所述装置还包括:
接收模块,用于接收客户端通过预备语句预先定义的包含常量占位符的所述查询模板;
解析优化模块,用于对所述查询模板进行解析优化,以获得所述查询模板的基于逻辑表的执行计划;
参数化模块,用于对基于所述逻辑表的执行计划中的所述表名和/或所述库名进行参数化,以获得所述表名和/或所述库名经过参数化的执行计划。
10.根据权利要求9所述的装置,其特征在于,所述参数化模块,包括:
第一替换模块,用于遍历基于所述逻辑表的执行计划中的第一语法单元,如果确定所述第一语法单元中包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为特殊占位符;
第二确定模块,用于如果确定所述第一语法单元中不包含所述表名和/或所述库名,并且所述第一语法单元中包含子查询,则确定所述子查询中的第二语法单元是否包含所述表名和/或所述库名;
第二替换模块,用于如果确定所述子查询中的第二语法单元包含所述表名和/或所述库名,则将所述表名和/或所述库名替换为所述特殊占位符。
11.根据权利要求10所述的装置,其特征在于,所述第一替换模块之前,所述参数化模块还包括:
第一执行模块,用于如果确定所述表名和/或所述库名具有别名,则执行将所述表名和/或所述库名替换为特殊占位符的步骤;
第二执行模块,用于如果确定所述表名和/或所述库名不具有别名,则生成与所述表名和/或所述库名同名的别名,并执行将所述表名和/或所述库名替换为特殊占位符的步骤。
12.根据权利要求8所述的装置,其特征在于,所述第一确定模块,具体用于:
基于所述业务参数、逻辑表拆分为物理分表的拆分条件,及预先配置的分库分表规则,确定所述表名和/或所述库名。
13.根据权利要求8所述的装置,其特征在于,所述合并模块,具体用于:
按照所述业务参数在所述第一查询指令中出现的顺序,对所述业务参数进行排序,以获得所述业务参数的排序列表;
按照所述执行计划中的语法单元中的特殊占位符的出现顺序,将所述表名和/或所述库名插入到所述业务参数的排序列表中,以获得所述业务参数、所述表名和/或所述库名的排序列表。
14.根据权利要求8所述的装置,其特征在于,所述填充模块,具体用于:
遍历所述表名和/或所述库名经过参数化的执行计划中的语法单元,如果所述语法单元中包含普通占位符,则基于所述合并结果,将所述普通占位符替换为相应的业务参数,以生成发送至分布式数据库的节点执行的第二查询指令;
如果所述语法单元中包含特殊占位符,则基于所述合并结果,将所述特殊占位符替换为相应的表名和/或库名,以生成发送至分布式数据库的节点执行的第二查询指令。
15.一种分布式数据库系统,其特征在于,所述系统包括:
客户端、与所述客户端连接的服务器,及与所述服务器连接的分布式数据库节点;
所述客户端,用于向所述服务器发送第一查询指令中的业务参数;
所述服务器,用于根据接收到的所述业务参数,确定待填充到所述第一查询指令对应的查询模板的执行计划中的表名和/或库名,其中,所述执行计划为所述表名和/或所述库名经过参数化的执行计划;并对所述业务参数、所述表名和/或所述库名进行合并,以获得待填充到所述第一查询指令对应的查询模板的执行计划中的所述业务参数、所述表名和/或所述库名的合并结果;再基于所述合并结果,将所述业务参数、所述表名和/或所述库名分别填充到所述执行计划中,以生成发送至所述分布式数据库的节点执行的第二查询指令。
16.一种电子设备,包括:
一个或多个处理器;
计算机可读介质,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任意一项权利要求所述的查询指令的执行方法。
17.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任意一项权利要求所述的查询指令的执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910798315.8A CN112445817A (zh) | 2019-08-27 | 2019-08-27 | 查询指令的执行方法、装置、电子设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910798315.8A CN112445817A (zh) | 2019-08-27 | 2019-08-27 | 查询指令的执行方法、装置、电子设备及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445817A true CN112445817A (zh) | 2021-03-05 |
Family
ID=74741685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910798315.8A Pending CN112445817A (zh) | 2019-08-27 | 2019-08-27 | 查询指令的执行方法、装置、电子设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445817A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528319A (zh) * | 2022-02-22 | 2022-05-24 | 厦门四信通信科技有限公司 | 对多个plc数据的采集方法、装置、设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013424A (zh) * | 2005-12-27 | 2007-08-08 | 国际商业机器公司 | 执行关系数据库搜索的系统和方法 |
US20080065589A1 (en) * | 2006-08-28 | 2008-03-13 | Microsoft Corporation | Server side bucketization of parameterized queries |
CN105138676A (zh) * | 2015-09-08 | 2015-12-09 | 浙江维融电子科技股份有限公司 | 基于高级语言并发聚合计算的分库分表merge查询方法 |
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN110019350A (zh) * | 2017-07-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 基于配置信息的数据查询方法和装置 |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
-
2019
- 2019-08-27 CN CN201910798315.8A patent/CN112445817A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013424A (zh) * | 2005-12-27 | 2007-08-08 | 国际商业机器公司 | 执行关系数据库搜索的系统和方法 |
US20080065589A1 (en) * | 2006-08-28 | 2008-03-13 | Microsoft Corporation | Server side bucketization of parameterized queries |
CN105138676A (zh) * | 2015-09-08 | 2015-12-09 | 浙江维融电子科技股份有限公司 | 基于高级语言并发聚合计算的分库分表merge查询方法 |
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN110019350A (zh) * | 2017-07-28 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 基于配置信息的数据查询方法和装置 |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
Non-Patent Citations (3)
Title |
---|
XUHUI LI等: "Query XML Documents Using XTQ Language", 《 IEEE INTERNATIONAL WORKSHOP ON SEMANTIC COMPUTING AND SYSTEMS》, 20 July 2008 (2008-07-20) * |
刘维学;: "SQL Server查询优化器原理与优化实例分析", 计算机技术与发展, no. 11, 27 August 2013 (2013-08-27) * |
漆绍洋: "基于mysql的分布式访问中间件中sql处理模块的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 October 2016 (2016-10-15) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528319A (zh) * | 2022-02-22 | 2022-05-24 | 厦门四信通信科技有限公司 | 对多个plc数据的采集方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210248143A1 (en) | Automatically executing graphql queries on databases | |
CN107229718B (zh) | 处理报表数据的方法和装置 | |
US10915532B2 (en) | Supporting a join operation against multiple NoSQL databases | |
US9229961B2 (en) | Database management delete efficiency | |
US9514184B2 (en) | Systems and methods for a high speed query infrastructure | |
CN113760948A (zh) | 一种数据查询的方法及装置 | |
CN115311399A (zh) | 图像渲染方法、装置、电子设备以及存储介质 | |
US12117999B2 (en) | Masking shard operations in distributed database systems | |
US11704327B2 (en) | Querying distributed databases | |
CN112395302A (zh) | Sql指令的执行方法、装置、电子设备及计算机可读介质 | |
CN112307061A (zh) | 用于查询数据的方法和装置 | |
CN118312565A (zh) | 一种基于独立数据源的多租户数据隔离方法及系统 | |
CN112445817A (zh) | 查询指令的执行方法、装置、电子设备及计算机可读介质 | |
CN113377808A (zh) | Sql优化方法和装置 | |
US11636111B1 (en) | Extraction of relationship graphs from relational databases | |
CN115292313A (zh) | 一种伪列实现方法、装置、电子设备及存储介质 | |
CN113268483B (zh) | 请求处理方法和装置、电子设备和存储介质 | |
US10628416B2 (en) | Enhanced database query processing | |
US20210311942A1 (en) | Dynamically altering a query access plan | |
CN115794876A (zh) | 针对业务数据包的分片处理方法、装置、设备及存储介质 | |
CN113312331A (zh) | 数据迁移方法、装置、系统、电子设备及计算机可读介质 | |
US10671587B2 (en) | Reduced fixed length sort of variable length columns | |
CN115994151B (zh) | 数据请求变更方法、装置、电子设备和计算机可读介质 | |
CN113448957A (zh) | 一种数据查询方法和装置 | |
US11573960B2 (en) | Application-based query transformations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |