CN107798017A - 分布式数据库中的执行计划信息生成方法和系统 - Google Patents

分布式数据库中的执行计划信息生成方法和系统 Download PDF

Info

Publication number
CN107798017A
CN107798017A CN201610805970.8A CN201610805970A CN107798017A CN 107798017 A CN107798017 A CN 107798017A CN 201610805970 A CN201610805970 A CN 201610805970A CN 107798017 A CN107798017 A CN 107798017A
Authority
CN
China
Prior art keywords
node
executive plan
information
database
plan information
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.)
Granted
Application number
CN201610805970.8A
Other languages
English (en)
Other versions
CN107798017B (zh
Inventor
赵永辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinzhuan Xinke Co Ltd
Original Assignee
Nanjing ZTE New Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing ZTE New Software Co Ltd filed Critical Nanjing ZTE New Software Co Ltd
Priority to CN201610805970.8A priority Critical patent/CN107798017B/zh
Publication of CN107798017A publication Critical patent/CN107798017A/zh
Application granted granted Critical
Publication of CN107798017B publication Critical patent/CN107798017B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式数据库中的执行计划信息生成方法和系统,所述方法应用于分布式数据库中的数据库中间件,包括:接收到客户端发送的查询语句,生成所述查询语句的执行计划树;按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述查询语句在数据库中间件的执行计划信息。本发明所述方案生成的执行计划信息能够帮助开发人员写出更优化的查询语句。

Description

分布式数据库中的执行计划信息生成方法和系统
技术领域
本发明涉及数据处理技术领域,尤其涉及一种分布式数据库中的执行计划信息生成方法和系统。
背景技术
分布式数据库系统是将数据按照一定的规则切分,分发到不同的数据库节点,最后在DBproxy(数据库中间件)层面做数据汇总。由于数据库上存储的数据量非常之大,要想快速的查询出符合条件的数据信息,写出执行效率高的查询语句显得很重要。目前,MySQL数据库的explain(执行计划信息)技术,用于获得查询语句的查询执行计划,为查询语句中的每个表返回一行信息,能够让开发人员了解MySQL数据库是如何处理查询语句以及表连接的,帮助做出调优决策,写出执行效率更高的查询语句。
然而,通过MySQL数据库的explain技术只能了解查询语句在MySQL数据库中的执行计划信息,但却不能了解在DBproxy层面的执行计划信息。所以,如何能够实现分布式数据库中DBproxy层的explain,进而能够得到分布式数据库的explain(查询语句在MySQL数据库和DBproxy层面上的执行计划信息),为写出更优化的查询语句提供信息支持,成为本发明所要解决的技术问题。
发明内容
鉴于上述问题提出了本发明以便提供一种解决上述问题的分布式数据库中的执行计划信息生成方法和系统。
依据本发明的一个方面,提供一种分布式数据库中的执行计划信息生成方法,应用于分布式数据库中的数据库中间件,所述方法包括:
接收到客户端发送的查询语句,生成所述查询语句的执行计划树;
按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述查询语句在数据库中间件的执行计划信息。
进一步地,本发明所述方法在生成所述查询语句在数据库中间件的执行计划信息后,还包括:
判断是否需要将所述查询语句下发到数据库节点,并在需要时,将所述查询语句下发到相应的数据库节点,并接收各所述数据库节点返回的所述查询语句在对应节点上的执行计划信息;
将数据库中间件的执行计划信息与各所述数据库节点返回的执行计划信息进行整合,得到分布式数据库的执行计划信息。
依据本发明的另一个方面,还提供一种分布式数据库中的执行计划信息生成系统,应用于分布式数据库中的数据库中间件,所述系统包括:
执行模块,用于接收客户端发送的查询语句;
语句处理模块,用于生成所述查询语句的执行计划树,按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述查询语句在数据库中间件的执行计划信息。
进一步地,本发明所述系统中,所述语句处理模块,还用于判断是否需要将所述查询语句下发到数据库节点,并在需要时,向所述执行模块返回需要处理所述查询语句的相应数据库节点信息;
所述执行模块,还用于在接收到所述数据库节点信息后,通过路由模块将所述查询语句下发到相应的数据库节点,并接收各所述数据库节点返回的所述查询语句在对应节点上的执行计划信息;以及将数据库中间件的执行计划信息与各所述数据库节点返回的执行计划信息进行整合,得到分布式数据库的执行计划信息。
本发明有益效果如下:
通过本发明提供的所述方法和系统,能够获得查询语句在分布式数据库中数据库中间件的执行计划信息,并将数据库中间件的执行计划信息与数据库节点的执行计划信息整合后,可得到分布式数据库的执行计划信息。通过分析查询语句的执行计划信息,可以更好的帮助开发人员写出更优化的查询语句,通过优化查询语句尽可能地将查询语句下发到数据库上执行,从而充分利用数据库提供的计算和存储能力,避免将数据通过网络传递到数据库中间件上做操作,从而使查询语句的执行效率更高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例提供的一种分布式数据库中的执行计划信息生成方法的流程图;
图2为本发明第一实施例提供的一种分布式数据库中的执行计划信息生成方法的又一流程图;
图3为本发明第二实施例提供的分布式数据库中的执行计划信息生成系统的结构框图;
图4为本发明第三实施例中分布式数据库的执行计划信息生成方法的功能结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供的分布式数据库中的执行计划信息生成方法和系统,具体的,所述方法和系统实现了生成查询语句(以下简称SQL语句)在分布式数据库中数据库中间件(以下简称“DBproxy层”)的执行计划信息(以下简称“explain”),并通过获得SQL语句在数据库节点上的explain和在DBproxy层上的explain,将二者整合在一起,从而实现分布式数据库的explain技术。
具体的,在本发明第一实施例中,提供一种分布式数据库中的执行计划信息生成方法,应用于分布式数据库中的DBproxy层,如图1所示,所述方法包括:
步骤S101,接收到客户端发送的SQL语句,生成所述SQL语句的执行计划树;
本实施例中,接收到SQL语句后,解析该SQL语句,得到SQL语句的语法树,并根据解析得到的语法树生成执行计划树。
步骤S102,按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述SQL语句在DBproxy层的explain。
在本发明的一个具体实施例中,所述执行计划树中的执行信息包括:执行计划树中各节点的节点信息;所述节点信息包括:本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述SQL语句。
在本发明的一个较佳的实施例中,设定的执行计划信息的输出格式为:MySQL数据库的explain的输出格式。也就是说,本实施例中,基于MySQL数据库的explain技术,实现分布式数据库中DBproxy的explain技术。
此时,按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,包括:
按照所述MySQL数据库的执行计划信息输出列的数量和位置,设计所述执行计划树中各节点的执行计划信息输出列,使得每个节点的执行计划信息输出列中至少包括本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
在本发明的一个具体实施例中,按照所述MySQL数据库的explain的输出列的数量和位置,设计出所述执行计划树中各节点的explain的输出列依次为:seq_id、node_type、node_id、type、sql_info、key、key_len、node_tree、rows和Extra;
定义输出列中seq_id为本节点的执行顺序、node_type为本节点的类型、node_id为本节点在执行计划树上的唯一编号、sql_info为待执行的SQL语句、node_tree为本节点在执行计划树上的位置、Extra为本节点的其他信息、type、key、key_len、rows为空。
在本发明的又一实施例中,在生成所述SQL语句在DBproxy层的explain后,如图2所示,还包括:
步骤S103,判断是否需要将所述SQL语句下发到数据库节点,并在需要时,将所述SQL语句下发到数据库节点,并接收各数据库节点返回的所述SQL语句在对应数据库节点上的explain;
在本发明的一个较佳的实施例中,可以根据所述SQL语句是否带有指定的explain命令选项,来判断是否需要将所述SQL语句下发到数据库节点。具体的,判断所述SQL语句是否带有指定的explain命令选项,若是,判定出需要将所述SQL语句下发到数据库节点;否则,不需要将所述SQL语句下发到数据库节点。当然,本领域技术人员容易想到的其他方式,只要能够辨别是否要将SQL语句下发到数据库层都在本发明的保护思想范围内。
步骤S104,将DBproxy层的explain与各数据库节点返回的explain进行整合,得到分布式数据库的explain。
在本发明的一个具体实施例中,explain的整合方式包括:模拟所述执行计划树的执行流程,按照所述执行计划树中各节点的执行顺序,将各数据库节点返回的explain放置在DBproxy层对应节点的explain下,实现将DBproxy层的explain与各数据库节点返回的explain按照执行顺序整合在一起。
在本发明的又一实施例中,得到分布式数据库的explain后,还包括:按需输出分布式数据库的explain、只输出DBproxy层的explain或者只输出各数据库节点的explain。
具体的,本实施例中,仍然可以通过SQL语句中是否带有指定的explain命令选项,来判断是输出分布式数据库的explain,还是只输出DBproxy层或各数据库节点的explain。
综上可知,本发明实施例所述方法实现分布式数据库的explain获得SQL语句的执行计划,包括SQL语句在DBproxy自身内部的执行计划和SQL语句下发到MySQL数据库的执行计划。既可以单独显示SQL语句在MySQL数据库上的执行计划,又可以单独显示SQL语句在DBproxy上的执行计划,也可以全部显示SQL语句在DBproxy和MySQL数据库上的执行计划信息。所述执行计划信息可以更好的帮助开发人员写出更优化的查询语句,通过优化SQL语句尽可能地将SQL语句下发到数据库上执行,从而充分利用数据库提供的计算和存储能力,避免将数据通过网络传递到DBProxy层上做操作,从而使查询语句的执行效率更高。
在本发明第二实施例中,提供一种分布式数据库中的执行计划信息生成系统,应用于分布式数据库中的DBproxy层,如图3所示,所述系统包括:
执行模块310,用于接收客户端发送的SQL语句;
语句处理模块320,用于生成所述SQL语句的执行计划树,按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述SQL语句在DBproxy层的explain。
基于上述结构框架及实施原理,下面给出在上述结构下的几个具体及优选实施方式,用以细化和优化本发明所述系统的功能,以使本发明方案的实施更方便,准确。具体涉及如下内容:
在本发明的一个具体实施例中,语句处理模块320具体包括:Select单元、update单元、delete单元和insert单元。
执行模块310接收到SQL语句后,首先分析应由语句处理模块320中的哪个单元处理该SQL语句,并调用处理该SQL语句单元的入口函数,以触发该单元获取SQL语句,并生成SQL语句在DBproxy层的explain。
在本发明的一个具体实施例中,语句处理模块320,具体用于解析所述SQL语句,得到SQL语句的语法树,并根据解析得到的语法树生成执行计划树。
在本发明的又一个具体实施例中,所述执行计划树中的执行信息包括:执行计划树中各节点的节点信息;所述节点信息包括:本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
在本发明的一个较佳实施例中,语句处理模块320,用于按照MySQL数据库的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装。
具体的,语句处理模块320,按照所述MySQL数据库的执行计划信息输出列的数量和位置,设计所述执行计划树中各节点的执行计划信息输出列,使得每个节点的执行计划信息输出列中至少包括本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述SQL语句。
在一个具体实施例中,语句处理模块320按照所述MySQL数据库的explain的输出列,设计出所述执行计划树中各节点的explain的输出列依次为:seq_id、node_type、node_id、type、sql_info、key、key_len、node_tree、rows和Extra;并定义输出列中seq_id为本节点的执行顺序、node_type为本节点的类型、node_id为本节点在执行计划树上的唯一编号、sql_info为待执行的SQL语句、node_tree为本节点在执行计划树上的位置、Extra为本节点的其他信息、type、key、key_len、rows为空。
进一步地,本发明实施例中:
语句处理模块320,还用于判断是否需要将所述SQL语句下发到数据库节点,并在需要时,向所述执行模块返回需要处理所述SQL语句的相应数据库节点信息;可选地,语句处理模块320,用于判断所述SQL语句是否带有指定的explain命令选项,若是,判定出需要将所述SQL语句下发到数据库节点;否则,不需要将所述SQL语句下发到数据库节点。
执行模块310,还用于在接收到所述数据库节点信息后,通过路由模块将所述SQL语句下发到相应的数据库节点,并接收各所述数据库节点返回的所述SQL语句在对应数据库节点上的explain;以及将DBproxy层的explain与各所述数据库节点返回的explain进行整合,得到分布式数据库的explain。
在一个具体实施例中,执行模块310,模拟所述执行计划树的执行流程,按照所述执行计划树中各节点的执行顺序,将各所述数据库节点返回的explain放置在DBproxy层对应节点的explain下,实现将DBproxy层的explain与各数据库节点返回的explain按照执行顺序整合在一起。
进一步地,本发明实施例中,执行模块310,还用于按需输出分布式数据库的explain、只输出DBproxy层的explain或者只输出各数据库节点的explain。具体的,本实施例中,仍然可以通过SQL语句中是否带有指定的explain命令选项,来判断是输出分布式数据库的explain,还是只输出DBproxy层或各数据库节点的explain。
综上可知,本发明实施例所述系统实现分布式数据库的explain获得SQL语句的执行计划,包括SQL语句在DBproxy自身内部的执行计划和SQL语句下发到数据库节点的执行计划。既可以单独显示SQL语句在MySQL数据库上的执行计划,又可以单独显示SQL语句在DBproxy上的执行计划,也可以全部显示SQL语句在DBproxy和数据库节点的执行计划信息。执行计划信息可以更好的帮助开发人员写出更优化的查询语句,通过优化SQL语句尽可能地将SQL语句下发到数据库上执行,从而充分利用数据库提供的计算和存储能力,避免将数据通过网络传递到DBProxy层上做操作,从而使查询语句的执行效率更高。
在本发明第三实施例中提供一种分布式数据库中的explain实现方法,其通过公开更多的技术细节对本发明的实施过程进行更详尽的说明。需要指出的如下公开的技术细节用于解释本发明,并不用于唯一限定本发明。需要指出的是,本实施例中出现的DB为“MySQL数据库”。
本发明实施例所述的分布式数据库explain技术包括SQL语句在MySQL数据库的explain和DBproxy层面的explain两方面。
为了实现DBproxy层面的explain,且便于将DBproxy层面的explain和MySQL数据库的explain二者整合在一起,需要设计出DBproxy层面的explain的输出列信息,确保与MySQL数据库的explain列信息相对应,因此要合理的设计显示的列信息内容,尽可能的复用MySQL数据库的explain输出列,使列的数量与位置和MySQL相同。
具体的,DBproxy层面的explain复用MySQL数据库的explain输出列,即列的数量与位置和MySQL数据库的explain相同,对应关系如下:
seq_id:表示节点的执行顺序,从10001开始编号,值越大表示越先被执行。根节点值最小,最后执行,最外层的子节点值最大。节点的seq_id有可能是相同的,表示这些节点是并行执行的。
node_id:节点在执行计划树上的唯一编号,从1开始,节点编号顺序递增。
node_tree:表示节点在执行计划树上的位置,内容包括父亲节点的node_id、子节点的node_id、兄弟节点的node_id。样式为Parent=XX,Child=XX,Next=XX。
node_type:表示本节点的类型,可以出现的类型如下表所述:
sql_info:表示待执行的SQL语句,不同的node_type,sql_info的输出是不一样的。
extra:表示本节点相关的其他信息,如读、写属性和分发属性等,形式为[ur|semi-cr|cr][sw|cw][gtid][select for update][lock in share mode][sort-merge|sort-merge-sort][Table Info][using group][using sort][using where],含义如下:
(1)读属性:ur、semi-cr、cr取其一,标识该语句对应的读事务属性;
(2)写属性:sw|cw取其一,标识该语句对应的写事务属性;
(3)gtid:标识本事务需要申请gitd;
(4)select for update:标识需要实施select for update;
(5)lock in share mode:标识需要实施lock in share mode;
(6)sort-merge|sort-merge-sort:标识DBproxy实施join的算法,sort-merge表示使用sort-merge算法,sort-merge-sort表示需要在DBproxy层排序后实施sort-merge算法;
(7)Table Info:标识本节点涉及的表的分布信息,形式为table_name=distribution Type[,table_name=distributionType],distributionType的取值有hash,list、range、rep,本信息仅针对本节点直接操作的表;其中,table_name为dbName.tableName;
(8)Using group:本节点,DBProxy实施了分组计算;
db_group:标识本节点上的SQL语句在哪个集群上的哪些安全组上执行,形式为ClusterN,gX[,gY],其中X、Y为对应的安全组编号,N为集群编号。UnionNode、JoinNode等类型的节点是在Proxy上实施的,不涉及具体的安全组,这时db_group列输出为空。
(9)Using sort:本节点,DBProxy实施了排序计算;
(10)Using where:本节点,DBProxy实施了条件过滤。
进一步地,本发明实施例中,还复用MySQL数据库的explain命令选项extended/partitions,具体的:
a.如果SQL语句带上extended选项则表示需要下发语句到DB进行explain,并且展示DBproxy和DB的explain结果。
b.如果SQL语句带上partitions选项也需要下发语句到DB进行explain,但是只展示MySQL数据库上的explain结果。
c.如果SQL语句不带任何选项的,则不下发语句到DB进行explain,只展示DBproxy的explain结果。
基于上述设计,本发明实施例提供的分布式数据库的explain实现方法,包括:分别获得SQL语句在DBproxy自身内部的执行计划和SQL语句下发到MySQL数据库的执行计划。下面结合所述方法的功能结构图,如图4所示,对本发明所述方法的实施过程进行详细阐述:
步骤1,执行模块从客户端接收到带有explain的SQL语句,分析SQL语句所属的模块(select/update/insert/delete模块),然后调用所属模块的入口函数生成执行计划树。各所属模块各自通过GetQuery函数获取SQL语句,完成DBproxy层执行计划树生成,并复用MySQL数据库的explain输出列,对所述执行计划树中的执行信息进行封装,得到SQL语句在DBproxy层的执行计划信息(即DBproxy层的explain);
步骤2、所属模块依据SQL语句是否有extended/partitions选项,判断是否需要下发DB执行该语句,若需要,则执行步骤3;若不需要,则执行步骤4;
步骤3,所属模块将需下发到DB执行的语句打标签,并向执行模块返回可执行节点,执行模块顺序调用每个可执行节点的GetQuery()函数,各可执行节点通过GetQuery()函数获取SQL语句,进行explain,并向执行模块返回SQL语句在MySQL数据库(即执行节点)上的执行计划信息。
步骤4、在DBproxy层面,执行模块调用SetSqlResult()函数和finish()函数接收并存储SQL语句在DB层的执行结果;等所有可执行节点都执行完后,执行模块调用根节点的SetexplainID()函数,驱动执行计划信息的汇总和处理,具体的,调用根节点的SetexplainID()函数模拟实现执行计划树的执行流程,将DBproxy的执行计划与MySQL数据库的执行计划按照一定的执行顺序整合到一起;
步骤5,执行模块调用GetExplainNode()获取所有的执行计划节点列表;
步骤6、执行模块依据SQL语句是否有extended/partitions选项字段,来判断是全部输出explain、只输出DBproxy的explain还是只输出DB层的explain。
在一个具体示例中,SQL语句全显示的执行计划如下表所示:
本示例中SQL语句为:Explain extended select id from tab1 join tab2 ontab1.id=tab2.id;
综上可知,本发明实施例所述方案既可以单独显示SQL语句在MySQL数据库上的执行计划,又可以单独显示SQL语句在DBproxy上的执行计划,也可以全部显示SQL语句在DBproxy和MySQL上的执行计划,能够一目了然的了解SQL语句的执行计划信息,为写出更优化的查询语句提供信息支持。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (18)

1.一种分布式数据库中的执行计划信息生成方法,其特征在于,应用于分布式数据库中的数据库中间件,所述方法包括:
接收到客户端发送的查询语句,生成所述查询语句的执行计划树;
按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述查询语句在数据库中间件的执行计划信息。
2.如权利要求1所述的方法,其特征在于,所述生成所述查询语句的执行计划树,包括:
解析所述查询语句,得到所述查询语句的语法树,并根据解析得到的所述语法树生成所述执行计划树。
3.如权利要求1或2所述的方法,其特征在于,所述执行计划树中的执行信息包括:执行计划树中各节点的节点信息;所述节点信息包括:本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
4.如权利要求3所述的方法,其特征在于,所述设定的执行计划信息的输出格式包括:MySQL数据库的执行计划信息的输出格式。
5.如权利要求4所述的方法,其特征在于,所述按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,包括:
按照所述MySQL数据库的执行计划信息输出列的数量和位置,设计所述执行计划树中各节点的执行计划信息输出列,使得每个节点的执行计划信息输出列中至少包括本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
6.如权利要求1或2或4或5所述的方法,其特征在于,生成所述查询语句在数据库中间件的执行计划信息后,还包括:
判断是否需要将所述查询语句下发到数据库节点,并在需要时,将所述查询语句下发到相应的数据库节点,并接收各所述数据库节点返回的所述查询语句在对应节点上的执行计划信息;
将数据库中间件的执行计划信息与各所述数据库节点返回的执行计划信息进行整合,得到分布式数据库的执行计划信息。
7.如权利要求6所述的方法,其特征在于,所述判断是否需要将所述查询语句下发到数据库节点,包括:判断所述查询语句是否带有指定的执行计划信息命令选项,若是,判定出需要将所述查询语句下发到数据库节点;否则,不需要将所述查询语句下发到数据库节点。
8.如权利要求6所述的方法,其特征在于,所述将数据库中间件的执行计划信息与各所述数据库节点返回的执行计划信息进行整合,包括:
模拟所述执行计划树的执行流程,按照所述执行计划树中各节点的执行顺序,将各所述数据库节点返回的执行计划信息放置在数据库中间件对应节点的执行计划信息下,实现将数据库中间件的执行计划信息与各数据库节点返回的执行计划信息按照执行顺序整合在一起。
9.如权利要求6所述的方法,其特征在于,得到分布式数据库的执行计划信息后,还包括:按需输出分布式数据库的执行计划信息、只输出数据库中间件的执行计划信息或者只输出各数据库节点的执行计划信息。
10.一种分布式数据库中的执行计划信息生成系统,其特征在于,应用于分布式数据库中的数据库中间件,所述系统包括:
执行模块,用于接收客户端发送的查询语句;
语句处理模块,用于生成所述查询语句的执行计划树,按照设定的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装,生成所述查询语句在数据库中间件的执行计划信息。
11.如权利要求10所述的系统,其特征在于,所述语句处理模块,用于解析所述查询语句,得到所述查询语句的语法树,并根据解析得到的所述语法树生成所述执行计划树。
12.如权利要求10或11所述的系统,其特征在于,所述执行计划树中的执行信息包括:执行计划树中各节点的节点信息;所述节点信息包括:本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
13.如权利要求12所述的系统,其特征在于,所述语句处理模块,用于按照MySQL数据库的执行计划信息的输出格式,对所述执行计划树中的执行信息进行封装。
14.如权利要求13所述的系统,其特征在于,所述语句处理模块,用于按照所述MySQL数据库的执行计划信息输出列的数量和位置,设计所述执行计划树中各节点的执行计划信息输出列,使得每个节点的执行计划信息输出列中至少包括本节点的执行顺序、本节点的类型、本节点在执行计划树上的唯一编号、本节点在执行计划树上的位置、本节点的属性信息和本节点待执行的所述查询语句。
15.如权利要求10或11或13或14所述的系统,其特征在于,
所述语句处理模块,还用于判断是否需要将所述查询语句下发到数据库节点,并在需要时,向所述执行模块返回需要处理所述查询语句的相应数据库节点信息;
所述执行模块,还用于在接收到所述数据库节点信息后,通过路由模块将所述查询语句下发到相应的数据库节点,并接收各所述数据库节点返回的所述查询语句在对应节点上的执行计划信息;以及将数据库中间件的执行计划信息与各所述数据库节点返回的执行计划信息进行整合,得到分布式数据库的执行计划信息。
16.如权利要求15所述的系统,其特征在于,所述语句处理模块,用于判断所述查询语句是否带有指定的执行计划信息命令选项,若是,判定出需要将所述查询语句下发到数据库节点;否则,不需要将所述查询语句下发到数据库节点。
17.如权利要求15所述的系统,其特征在于,所述执行模块,具体用于模拟所述执行计划树的执行流程,按照所述执行计划树中各节点的执行顺序,将各所述数据库节点返回的执行计划信息放置在数据库中间件对应节点的执行计划信息下,实现将数据库中间件的执行计划信息与各数据库节点返回的执行计划信息按照执行顺序整合在一起。
18.如权利要求15所述的系统,其特征在于,所述执行模块,还用于按需输出分布式数据库的执行计划信息、只输出数据库中间件的执行计划信息或者只输出各数据库节点的执行计划信息。
CN201610805970.8A 2016-09-07 2016-09-07 分布式数据库中的执行计划信息生成方法和系统 Active CN107798017B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610805970.8A CN107798017B (zh) 2016-09-07 2016-09-07 分布式数据库中的执行计划信息生成方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610805970.8A CN107798017B (zh) 2016-09-07 2016-09-07 分布式数据库中的执行计划信息生成方法和系统

Publications (2)

Publication Number Publication Date
CN107798017A true CN107798017A (zh) 2018-03-13
CN107798017B CN107798017B (zh) 2023-06-09

Family

ID=61529940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610805970.8A Active CN107798017B (zh) 2016-09-07 2016-09-07 分布式数据库中的执行计划信息生成方法和系统

Country Status (1)

Country Link
CN (1) CN107798017B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763536A (zh) * 2018-05-31 2018-11-06 阿里巴巴集团控股有限公司 数据库访问方法及装置
CN109240901A (zh) * 2018-08-28 2019-01-18 北京小度信息科技有限公司 性能分析方法、性能分析装置、存储介质和电子设备
CN109271409A (zh) * 2018-11-08 2019-01-25 成都索贝数码科技股份有限公司 一种基于容器资源分配的数据库分片执行方法
CN110413642A (zh) * 2019-08-02 2019-11-05 北京快立方科技有限公司 一种应用无感知的分片数据库解析及优化方法
WO2020015495A1 (zh) * 2018-07-16 2020-01-23 中兴通讯股份有限公司 访问异构数据库的方法、装置、设备、插件及存储介质
CN112860740A (zh) * 2019-11-27 2021-05-28 中兴通讯股份有限公司 一种触发器实现的方法和装置
CN113760960A (zh) * 2020-06-01 2021-12-07 北京搜狗科技发展有限公司 一种信息生成方法、装置和用于生成信息的装置
CN114443691A (zh) * 2022-01-18 2022-05-06 苏州浪潮智能科技有限公司 数据库查询调优方法、系统及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561817A (zh) * 2009-06-02 2009-10-21 天津大学 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法
CN102609445A (zh) * 2010-12-10 2012-07-25 微软公司 使用查询模板来将查询与数据操作相匹配
CN103064875A (zh) * 2012-10-30 2013-04-24 中国标准化研究院 一种服务化空间数据分布式查询方法
CN103064876A (zh) * 2012-10-30 2013-04-24 中国标准化研究院 面向地理信息应用的空间数据服务化获取方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561817A (zh) * 2009-06-02 2009-10-21 天津大学 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法
CN102609445A (zh) * 2010-12-10 2012-07-25 微软公司 使用查询模板来将查询与数据操作相匹配
CN103064875A (zh) * 2012-10-30 2013-04-24 中国标准化研究院 一种服务化空间数据分布式查询方法
CN103064876A (zh) * 2012-10-30 2013-04-24 中国标准化研究院 面向地理信息应用的空间数据服务化获取方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243950B2 (en) 2018-05-31 2022-02-08 Beijing Oceanbase Technology Co., Ltd. Database query plan selection
CN108763536A (zh) * 2018-05-31 2018-11-06 阿里巴巴集团控股有限公司 数据库访问方法及装置
US11080278B2 (en) 2018-05-31 2021-08-03 Ant Financial (Hang Zhou) Network Technology Co., Ltd. Database query plan selection
WO2020015495A1 (zh) * 2018-07-16 2020-01-23 中兴通讯股份有限公司 访问异构数据库的方法、装置、设备、插件及存储介质
CN109240901A (zh) * 2018-08-28 2019-01-18 北京小度信息科技有限公司 性能分析方法、性能分析装置、存储介质和电子设备
CN109240901B (zh) * 2018-08-28 2023-01-17 北京星选科技有限公司 性能分析方法、性能分析装置、存储介质和电子设备
CN109271409A (zh) * 2018-11-08 2019-01-25 成都索贝数码科技股份有限公司 一种基于容器资源分配的数据库分片执行方法
CN109271409B (zh) * 2018-11-08 2021-11-02 成都索贝数码科技股份有限公司 一种基于容器资源分配的数据库分片执行方法
CN110413642A (zh) * 2019-08-02 2019-11-05 北京快立方科技有限公司 一种应用无感知的分片数据库解析及优化方法
WO2021103969A1 (zh) * 2019-11-27 2021-06-03 中兴通讯股份有限公司 一种触发器实现的方法和装置
CN112860740B (zh) * 2019-11-27 2022-12-20 金篆信科有限责任公司 一种触发器实现的方法和装置
CN112860740A (zh) * 2019-11-27 2021-05-28 中兴通讯股份有限公司 一种触发器实现的方法和装置
CN113760960A (zh) * 2020-06-01 2021-12-07 北京搜狗科技发展有限公司 一种信息生成方法、装置和用于生成信息的装置
CN114443691A (zh) * 2022-01-18 2022-05-06 苏州浪潮智能科技有限公司 数据库查询调优方法、系统及计算机设备
CN114443691B (zh) * 2022-01-18 2024-01-23 苏州浪潮智能科技有限公司 数据库查询调优方法、系统及计算机设备

Also Published As

Publication number Publication date
CN107798017B (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
CN107798017A (zh) 分布式数据库中的执行计划信息生成方法和系统
CN104123374B (zh) 分布式数据库中聚合查询的方法及装置
CN102982075B (zh) 支持访问异构数据源的系统和方法
CN103514201B (zh) 一种非关系型数据库的数据查询方法和装置
US7680783B2 (en) Configurable search strategy
US20170147674A1 (en) Storing and retrieving data of a data cube
RU2004131666A (ru) Способ и устройство для обращения с запросом к реляционным базам данных
US20150278268A1 (en) Data encoding and corresponding data structure
CN109213854A (zh) 知识图谱信息管理方法、装置、计算机设备及存储介质
CN112559554A (zh) 一种查询语句优化方法及装置
WO2015056939A1 (ko) 데이터베이스에서 암호화된 필드에 대한 색인 생성 방법 및 장치
CA2484009A1 (en) Managing expressions in a database system
JP2004518226A (ja) データベースシステムおよびクエリオプティマイザ
CA2493269A1 (en) Method and system of unifying data
EP2901344A1 (en) System and method for flexible distributed massively parallel processing (mpp) database
CN106250519A (zh) 用于并行数据库的数据查询方法和装置
Horng et al. Applying evolutionary algorithms to materialized view selection in a data warehouse
EP3047399A1 (en) Densely grouping dimensional data
Sun et al. An air index for spatial query processing in road networks
CN107679049A (zh) 获取树形结构数据两节点间路径的方法、装置及系统
CN106209989A (zh) 基于spark平台的空间数据并行计算系统及其方法
CN105282123A (zh) 一种网络协议识别方法和装置
CN103324701A (zh) 数据搜索装置和数据搜索方法
CN105550332A (zh) 一种基于双层索引结构的起源图查询方法
CA2461871A1 (en) An efficient index structure to access hierarchical data in a relational database system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20180515

Address after: 518057 five floor, block A, ZTE communication tower, Nanshan District science and Technology Park, Shenzhen, Guangdong.

Applicant after: ZTE Corp.

Address before: 210000 68 Bauhinia Road, Yuhuatai District, Nanjing, Jiangsu

Applicant before: Nanjing Zhongxing New Software Co.,Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20211231

Address after: 100176 602, floor 6, building 6, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone)

Applicant after: Jinzhuan Xinke Co.,Ltd.

Address before: 518057 five floor, block A, ZTE communication tower, Nanshan District science and Technology Park, Shenzhen, Guangdong.

Applicant before: ZTE Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant