CN102081678A - 一种数据库查询中最优执行计划的搜索方法 - Google Patents
一种数据库查询中最优执行计划的搜索方法 Download PDFInfo
- Publication number
- CN102081678A CN102081678A CN 201110060504 CN201110060504A CN102081678A CN 102081678 A CN102081678 A CN 102081678A CN 201110060504 CN201110060504 CN 201110060504 CN 201110060504 A CN201110060504 A CN 201110060504A CN 102081678 A CN102081678 A CN 102081678A
- Authority
- CN
- China
- Prior art keywords
- connecting path
- thread
- executive plan
- execution
- point
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据库查询中最优执行计划的搜索方法,包括在执行计划的搜索过程中不予考虑含有笛卡尔积连接操作的执行计划(除非用户提交的查询语句中含有笛卡尔积连接操作),同时将语句中的关系表的连接关系以一个图的形式表示,最后在图中搜索最优执行计划;所述以图的形式表示语句的连接关系如下:图中的点表示查询语句中的关系,如果图中某两个点所对应的关系有连接操作(包括内连接和外连接),则连接这两点,边的权值为两关系连接操作的执行代价。本发明由于采用了上述结构,可以在并行执行环境下得出最优执行计划。
Description
技术领域
本发明涉及本发明涉及到数据库领域,尤其涉及到数据库在sql语句查询过程中执行计划在并发执行环境下最优执行方案的搜索方法。
背景技术
数据库在查询优化过程中,对于一个给定的sql语句,尤其是复杂的sql语句,通常有许多种可能的策略。一般而言,如果一个查询语句中含有n个关系,有(2(n-1))!/(n-1)!个不同的连接顺序,当n=7时,此数为665280,当n=10时,此数为176亿。查询优化就是能从许多的策略中找出代价较小的执行计划的一个处理过程,但是当sql语句中涉及到的关系数较大(n>6)时,优化引擎如果一一遍历所有的执行计划,将消耗大量的优化时间,最终导致语句查询效率低下。另外,随着多核服务器的大量出现,为提高语句的执行效率,并发对语句进行执行成为今后语句执行的趋势,以前查询优化引擎在挑选最优执行计划时,没有兼顾到语句并发执行的前提,其所提交的最优执行计划无法充分利用多核的优势。
发明内容
本发明所要解决的技术问题是提供一种为查询语句从大量的执行计划中快速找出适合于并发执行的执行计划。
为解决上述技术问题,本发明所述方法包括在执行计划的搜索过程中不予考虑含有笛卡尔积连接操作的执行计划(除非用户提交的查询语句中含有笛卡尔积连接操作),同时将语句中的关系表的连接关系以一个图的形式表示,最后在图中搜索最优执行计划;所述以图的形式表示语句的连接关系如下:图中的点表示查询语句中的关系,如果图中某两个点所对应的关系有连接操作(包括内连接和外连接),则连接这两点,边的权值为两关系连接操作的执行代价;
所述在图中搜索最优执行计划的方案包含如下一些步骤:
步骤一:从图中任一点出发,在图中找出一条以该点为起始点的连接通路,该连接通路对应原查询语句的一个执行计划,同时使得该执行计划为从该点出发所对应的代价最小的执行计划;
步骤二:依次从图中其它各点出发,同样得出以这些点为起始点的连接通路,使得该连接通路所对应的执行计划的代价最小;
步骤三:比较前两步得出的所有连接通路所对应的执行计划的代价,得出代价最小的连接通路;
步骤四:得出代价最小的连接通路后,采用本发明自定义的动态分配方案将该通路中各个操作分配到各线程执行。
上述方案中,所述步骤一从图中某一点为起始点搜索代价最小的连接通路包括以下一些步骤:
a、计算图中与该点相关的所有边的权值;
b、设定连接通路的第一条边;
c、用新的点替换第一条边,重新计算与该点相关的边的权值;
d、设定连接通路的第二条边;
e、依次下去直到遍历完图中所有的点。
优选的,所述计算边的权值即计算边所对应的连接操作的执行时间,具体方案如下:
若通过关系表的索引信息访问该关系表中一条记录的平均时间为通过嵌套循环访问关系表中一条记录的平均时间为对关系表建立临时索引时每个元组消耗的平均时间为对于某一连接操作关系R1和R2的元组个数分别为N1,N2;
如果R1和R2上都没有相关索引,在对R1和R2都没有进行预处理的情况下执行时间为现在通过建立临时索引的方式执行上述操作,若对R1建立临时索引,则执行时间为若对R2建立临时索引,则执行时间为故在关系表R1和R2都没有索引的情况下的执行时间代价为
更为优选的,所述步骤四将通路中各个操作动态分配到线程中并发执行的步骤如下:
假设最优执行计划所对应的连接通路中有n个操作,有m个线程并行执行;
a)将连接通路中前m个操作分别在m个线程中执行,并记录m个线程中执行时间最短的线程;
b)将连接通路中下一个操作直接投放到执行时间最短的线程,并重新更新线程池中执行时间最短的线程;
c)如果连接通路中还有操作未执行则执行步骤二。
本发明由于采用了上述结构,可以在并行执行环境下得出最优执行计划。
附图说明
下面结合附图和具体实施方式对本发明的技术方案作进一步具体说明。
图1是以图表示查询语句中关系表的连接状态;
图2是搜索最优执行计划的流程图;
图3是计算计划执行代价的流程图。
具体实施方式
图1是本发明中如何以图的形式表示查询语句中关系表的连接状态的示意图。在该例中包含有A,B,C,D,E,F六个关系,故在图中相应有A,B,C,D,E,F六个节点,图中节点分别对应查询语句中的关系。因为查询语句中A,B两关系有连接操作,故在图中相应连接A,B两节点,同样因A,C两关系亦有连接操作,在图中也相应连接A,C两节点,依次类推,将查询语句中所有的相关操作在图中都用相应的边予以连接。
图2是本发明在图中搜索最优执行计划的流程图。系统初始化时设定当前最优执行计划Lold的执行时间Cost(Lold)为无穷大。从图中任一点出发可以搜索得到一个连接通路,该连接通路即对应从该点出发得到的最优执行计划。同样,从图中其它点出发也可得到其它的执行计划,这样如果图中含有n个点则可得到n个执行计划,比较n个计划的执行时间,选取执行时间最短的执行计划作为最终的最优执行计划。该流程包含如下一些步骤:
步骤201:判断图中是否存在未作为起始点进行搜索的点,如果有则执行步骤202,如果没有则直接提交系统当前最优执行计划并退出;
步骤202:判断是否有与该点相连的边,如果没有则说明从步骤201中的起始点出发的连接通路已经通过了图中所有的点,故无需继续搜索下去,然后执行步骤206;如果有与该点相连的边,则执行步骤203;
步骤203:计算与步骤202中的点相连的边的权值,该权值即为查询语句中所有与该点有连接(包括内连接和外连接)操作的执行时间;
步骤204:将步骤203中计算得到的权值最小的边作为连接通路的下一条边;
步骤205:在图中将204中所确定的边以一个新的点予以代替,并再次执行步骤202;
步骤206:连接通路中包含有原图中所有的点后即可结束该搜索过程,并得出从步骤201的起始点出发所得出的最佳连接通路Lnew;
步骤207:比较步骤206得到的连接通路与系统当前最佳连接通路的执行时间,如果步骤206得到的连接通路的执行时间较小,则执行步骤208,否则保留当前系统最佳连接通路并执行步骤201;
步骤208:将步骤206中得到的连接通路替换掉系统当前最佳连接通路并执行步骤201。
图3是本发明中计算连接通路所对应的执行计划在并发执行环境下执行时间的流程图。本发明搜索最优连接通路时,由于从任一点出发均可得到一个连接通路,在比较连接通路的执行代价时,即借助该流程计算出连接通路的执行时间,再进行比较。该流程包含如下一些步骤:
步骤301:判断连接通路中的操作数和并发执行线程个数的大小。如果操作数较多则执行步骤304,如果线程数目较多则执行步骤302;
步骤302:将连接通路中的操作依次投放到线程中执行;
步骤303:确定该连接通路的执行时间为该通路中所有操作的执行时间的最大者;
步骤304:如果步骤301中连接通路中的操作数较多,则首先将连接通路中前m个操作投放到m个线程中依次执行;
步骤305:更新并记录下当前线程中执行时间最短的线程的序列i和最短的执行时间;
步骤306:判断连接通路中是否有未被执行的操作,如果有则执行步骤307,如果没有则执行步骤308;
步骤307:将连接通路中下一个操作投放到由步骤305确定的执行时间最短的线程执行,并执行步骤305;
步骤308:连接通路中所有操作都投放到线程中执行后,计算该连接通路所对应的执行计划的总的执行时间为所有线程中总的最长执行时间。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (5)
1.一种数据库查询中最优执行计划的搜索方法,其特征在于,所述方法包括在执行计划的搜索过程中不予考虑含有笛卡尔积连接操作的执行计划,除非用户提交的查询语句中含有笛卡尔积连接操作,同时将语句中的关系表的连接关系以一个图的形式表示,最后在图中搜索最优执行计划;所述以图的形式表示语句的连接关系如下:图中的点表示查询语句中的关系,如果图中某两个点所对应的关系有连接操作,该连接操作包括内连接和外连接,则连接这两点,边的权值为两关系连接操作的执行代价;
所述在图中搜索最优执行计划的方案包含如下一些步骤:
步骤一:从图中任一点出发,在图中找出一条以该点为起始点的连接通路,该连接通路对应原查询语句的一个执行计划,同时使得该执行计划为从该点出发所对应的代价最小的执行计划;
步骤二:依次从图中其它各点出发,同样得出以这些点为起始点的连接通路,使得该连接通路所对应的执行计划的代价最小;
步骤三:比较前两步得出的所有连接通路所对应的执行计划的代价,得出代价最小的连接通路;
步骤四:得出代价最小的连接通路后,采用本发明自定义的动态分配方案将该通路中各个操作分配到各线程执行。
2.根据权利要求1所述的一种数据库查询中最优执行计划的搜索方法,其特征在于,所述步骤一从图中某一点为起始点搜索代价最小的连接通路包括以下一些步骤:
a、计算图中与该点相关的所有边的权值;
b、设定连接通路的第一条边;
c、用新的点替换第一条边,重新计算与该点相关的边的权值;
d、设定连接通路的第二条边;
e、依次下去直到遍历完图中所有的点。
3.根据权利要求2所述的一种数据库查询中最优执行计划的搜索方法,其特征在于,所述计算边的权值即计算边所对应的连接操作的执行时间,具体方案如下:
若通过关系表的索引信息访问该关系表中一条记录的平均时间为通过嵌套循环访问关系表中一条记录的平均时间为对关系表建立临时索引时每个元组消耗的平均时间为对于某一连接操作关系R1和R2的元组个数分别为N1,N2;
4.根据权利要求1或2所述的一种数据库查询中最优执行计划的搜索方法,其特征在于,所述步骤四将通路中各个操作动态分配到线程中并发执行的步骤如下:
假设最优执行计划所对应的连接通路中有n个操作,有m个线程并行执行;
a)将连接通路中前m个操作分别在m个线程中执行,并记录m个线程中执行时间最短的线程;
b)将连接通路中下一个操作直接投放到执行时间最短的线程,并重新更新线程池中执行时间最短的线程;
c)如果连接通路中还有操作未执行则执行步骤二。
5.根据权利要求3所述的一种数据库查询中最优执行计划的搜索方法,其特征在于,所述步骤四将通路中各个操作动态分配到线程中并发执行的步骤如下:
假设最优执行计划所对应的连接通路中有n个操作,有m个线程并行执行;
a)将连接通路中前m个操作分别在m个线程中执行,并记录m个线程中执行时间最短的线程;
b)将连接通路中下一个操作直接投放到执行时间最短的线程,并重新更新线程池中执行时间最短的线程;
c)如果连接通路中还有操作未执行则执行步骤二。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110060504 CN102081678B (zh) | 2011-03-14 | 2011-03-14 | 一种数据库查询中最优执行计划的搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110060504 CN102081678B (zh) | 2011-03-14 | 2011-03-14 | 一种数据库查询中最优执行计划的搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081678A true CN102081678A (zh) | 2011-06-01 |
CN102081678B CN102081678B (zh) | 2013-07-03 |
Family
ID=44087639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110060504 Expired - Fee Related CN102081678B (zh) | 2011-03-14 | 2011-03-14 | 一种数据库查询中最优执行计划的搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081678B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968420A (zh) * | 2011-08-31 | 2013-03-13 | 国际商业机器公司 | 数据库查询的方法和系统 |
CN104899209A (zh) * | 2014-03-05 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 针对开放式数据处理服务的优化方法和装置 |
CN103793467B (zh) * | 2013-09-10 | 2017-01-25 | 浙江鸿程计算机系统有限公司 | 一种基于超图和动态规划的大数据实时查询优化方法 |
CN108829735A (zh) * | 2018-05-21 | 2018-11-16 | 上海达梦数据库有限公司 | 并行执行计划的同步方法、装置、服务器及存储介质 |
CN109791543A (zh) * | 2016-09-30 | 2019-05-21 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851696A (zh) * | 2005-10-26 | 2006-10-25 | 华为技术有限公司 | 一种关联查询的系统及其方法 |
CN101295315A (zh) * | 2007-04-27 | 2008-10-29 | 软件股份公司 | 用于执行xml数据库查询的方法和数据库系统 |
-
2011
- 2011-03-14 CN CN 201110060504 patent/CN102081678B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851696A (zh) * | 2005-10-26 | 2006-10-25 | 华为技术有限公司 | 一种关联查询的系统及其方法 |
CN101295315A (zh) * | 2007-04-27 | 2008-10-29 | 软件股份公司 | 用于执行xml数据库查询的方法和数据库系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968420A (zh) * | 2011-08-31 | 2013-03-13 | 国际商业机器公司 | 数据库查询的方法和系统 |
CN103793467B (zh) * | 2013-09-10 | 2017-01-25 | 浙江鸿程计算机系统有限公司 | 一种基于超图和动态规划的大数据实时查询优化方法 |
CN104899209A (zh) * | 2014-03-05 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 针对开放式数据处理服务的优化方法和装置 |
CN104899209B (zh) * | 2014-03-05 | 2018-05-18 | 阿里巴巴集团控股有限公司 | 针对开放式数据处理服务的优化方法和装置 |
CN109791543A (zh) * | 2016-09-30 | 2019-05-21 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
CN109791543B (zh) * | 2016-09-30 | 2021-02-12 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
US11301470B2 (en) | 2016-09-30 | 2022-04-12 | Huawei Technologies Co., Ltd. | Control method for performing multi-table join operation and corresponding apparatus |
CN108829735A (zh) * | 2018-05-21 | 2018-11-16 | 上海达梦数据库有限公司 | 并行执行计划的同步方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102081678B (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8326825B2 (en) | Automated partitioning in parallel database systems | |
Naumann | Quality-driven query answering for integrated information systems | |
US7966315B2 (en) | Multi-query optimization | |
US9223828B2 (en) | Data flow graph optimization using adaptive rule chaining | |
US8799271B2 (en) | Range predicate canonization for translating a query | |
US7562090B2 (en) | System and method for automating data partitioning in a parallel database | |
CN102081678B (zh) | 一种数据库查询中最优执行计划的搜索方法 | |
CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
RU2004131666A (ru) | Способ и устройство для обращения с запросом к реляционным базам данных | |
AU2005239366A1 (en) | Partial query caching | |
CN107111653A (zh) | 适于并行数据库系统的系统内存负载的查询优化 | |
CN103123652A (zh) | 数据查询方法和集群数据库系统 | |
CN101739398A (zh) | 分布式数据库多连接查询优化算法 | |
CN104778277A (zh) | 一种基于Redis的RDF数据分布式存储和查询方法 | |
CN100399324C (zh) | 嵌入式数据库查询的处理方法 | |
CN107251013A (zh) | 数据查询的方法、装置和数据库系统 | |
CN105550332A (zh) | 一种基于双层索引结构的起源图查询方法 | |
CN110032676A (zh) | 一种基于谓词关联的sparql查询优化方法及系统 | |
Jacob et al. | Sharing work in keyword search over databases | |
Lekshmi et al. | COPRAO: A Capability Aware Query Optimizer for Reconfigurable Near Data Processors | |
CN108804580B (zh) | 一种在联邦型rdf数据库中查询关键字的方法 | |
KR20180077830A (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN110297836A (zh) | 基于压缩位图方式的用户标签存储方法和检索方法 | |
CN108197186B (zh) | 一种应用于社交网络中的动态图匹配查询方法 | |
CN106339432A (zh) | 一种按查询内容进行负载均衡的系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130703 Termination date: 20140314 |