CN105512315B - 一种分布式数据库sql执行中inner join的智能评估方法 - Google Patents
一种分布式数据库sql执行中inner join的智能评估方法 Download PDFInfo
- Publication number
- CN105512315B CN105512315B CN201510932891.9A CN201510932891A CN105512315B CN 105512315 B CN105512315 B CN 105512315B CN 201510932891 A CN201510932891 A CN 201510932891A CN 105512315 B CN105512315 B CN 105512315B
- Authority
- CN
- China
- Prior art keywords
- inner join
- assessment
- sql
- user
- execution
- 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.)
- Active
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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及分布式数据库数据存储领域,尤其涉及一种分布式数据库SQL执行中INNER JOIN的智能评估方法。该方法采用贪心方法、动态规划方法和遗传算法3种评估方法相结合的方式选取INNER JOIN的较优执行顺序,尽可能减少INNER JOIN之后的数据量,保证INNER JOIN的高效率执行。本发明可以由用户指定任一种评估方法,提高系统的灵活性和可扩展性。
Description
技术领域
本发明涉及分布式数据库数据存储领域,尤其涉及一种分布式数据库SQL执行中INNER JOIN的智能评估方法。
背景技术
在当今社会,各个行业几乎都会利用数据库去存储数据,而随着大数据与云计算时代的到来,这些行业数据存储与计算的需求越发迫切,因此传统的单机数据库系统无法满足用户的需求,无法完成海量数据的计算与存储。因此,分布式数据库成为了业界的宠儿,随着分布式技术、高速网络传输技术以及并行计算技术的发展与成熟,分布式数据库更是成为了数据库行业的主流产品。
分布式数据库一般都是采用多台机器存储数据,即将用户数据根据某种数据散布算法分布到数据库的各个工作机器中,这样来减少单台数据库工作机器所存储的数据量,减少每一台机器的存储与计算压力。因此,许多业界知名的公司都采用这种方式应对海量数据,例如Amazon的分布式存储系统就是将数据分成许多数据块,将数据块分布到数据库集群中的各个节点去存储与计算。
分布式数据库在执行SQL时,需要指定出符合分布式架构的执行计划,将单机的执行计划扩展到分布式的执行计划,以充分利用各个机器的资源,使SQL执行的更加高效与快速。在指定分布式执行计划时,需要保证SQL的执行结果与在单机执行的结果一致,即保证SQL执行后数据结果集是正确的。
分布式数据库执行SQL时,对于INNER JOIN的计划需要仔细设计,类似于矩阵乘法,不同的执行顺序有不同的执行中间结果集,因此不同的执行顺序的执行性能也是不同的,最优执行计划与最差执行计划之间的执行效率差别非常的大,甚至执行时间有十倍以上的差距。因此,对于INNER JOIN的执行计划中需要较优的执行顺序,以保证执行的性能。业界数据库中有很多使用贪心策略或是使用动态规划策略的产品,但是这些产品无法灵活的应对多变的应用环境。
发明内容
为解决上述问题,本发明提供了一种分布式数据库SQL执行中INNER JOIN的智能评估方法,将人工指定评估方法与系统自动选取与调节方式相结合,以确保评估算法本身执行时间与INNER JOIN执行时间的平衡,使系统执行更灵活、更高效。
为实现上述目的,本发明采用的技术方案如下:
一种分布式数据库SQL执行中INNER JOIN的智能评估方法,包括以下步骤:
步骤1、数据库系统接收到用户下发的SQL,对SQL进行解析;
步骤2、判断解析的SQL中用户是否指定了评估INNER JOIN的方法,若已指定,则顺序执行步骤3,若没指定,则跳转到步骤4;其中,评估INNER JOIN的方法包括贪心方法、动态规划方法和遗传算法;
步骤3、按照用户指定的方法执行INNER JOIN的评估,评估完后跳转到步骤5;若用户指定采用遗传算法评估INNER JOIN,用户需指定遗传算法迭代的次数;
步骤4、按照系统默认的方法执行INNER JOIN的评估,具体步骤如下:
步骤4-1、按照动态规划的方法执行INNER JOIN的评估;
步骤4-2、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤5,否则顺序执行步骤4-3;
步骤4-3、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤4-4,否则跳转到步骤4-2;
步骤4-4、停止动态规划方法的执行,改为执行贪心方法进行INNER JOIN执行顺序的评估;
步骤5、完成处理。
本发明采用了多种INNER JOIN的评估方法,包括时间复杂度为O(n)的贪心方法、时间复杂度为O(m*n)的动态规划方法以及时间复杂度与迭代次数相关的遗传算法3种。这3种评估方法各有不同的特点,其中,贪心方法能够以较短的评估时间完成评估,但是贪心方法很难保证最优的评估结果;相反的,动态规划方法的评估时间可能会很长,但是其评估的结果可以保证是最优的;而对于遗传算法,其评估的时间和评估的结果是由迭代的次数决定的,迭代的次数越长,评估的时间就越久,而评估的结果越好。这3种评估方法都可以产生较优的INNER JOIN的执行顺序,可以适用各种数据库应用场景,满足用户的各种需求,即可以保证在评估算法本身与评估算法产生的评估结果之间达到一个平衡,不会产生很差的评估结果,也不会造成评估算法本身运行时间过长的问题。
本发明可以由用户根据所需执行SQL的特性人工指定或者交由数据库系统自适应评估两种方法去评估INNER JOIN的执行顺序。人工指定方式较为灵活,可以指定贪心方法、动态规划方法、遗传算法这三种方法中的一种去评估当前执行的SQL的INNER JOIN顺序。若需要做INNER JOIN的表的个数较少,则用动态规划的方法和遗传算法都可以得到很好的评估结果。若需要做INNER JOIN的表的个数较多,则可以采用贪心方法去执行,以免评估的时间过长,影响整体的系统效率。
若用户不指定执行SQL的INNER JOIN所采用的评估方法,系统会自动选取一种评估方法。一般是先按照动态规划方法评估INNER JOIN,因为动态规划方法能够保证评估的结果是最优解,但是动态规划方法解决本问题的时间复杂度为O(m*n),即面对着很多表做INNER JOIN的SQL,动态规划方法本身所运行的时间非常的长,甚至是不可以接受的。因此,当动态规划方法执行的时间超过了管理员预先设置的INNER JOIN评估的时间阈值时,系统会放弃动态规划方法,采用时间复杂度为O(n)的贪心方法去评估,可以在很短的时间内评估出结果,但是该结果不保证最优解。
由动态规划方法转换为贪心方法的时间阈值由管理员在启动数据库的时候进行配置,但是管理员可以动态地及时调整该阈值,以便适应不同的应用需求。
步骤3中用户以Hint的方式或者以用户会话参数的方式指定INNER JOIN的评估方法。这种方式适合于经验丰富的用户或对性能有特殊需求的用户,用户通过这种方式选取自己想要的评估方法。数据库系统充分相信用户的参数设置,不会对用户的选择做任何干预。
步骤3的具体步骤如下:
步骤3-1、数据库系统接收用户设定的执行方法和参数,准备对SQL进行INNERJOIN评估;
步骤3-2、判断用户是否指定了用遗传算法执行SQL的INNER JOIN评估,若指定了,则跳转到步骤3-4,否则顺序执行步骤3-3;
步骤3-3、按照用户指定的其他评估方法执行评估,评估完跳转到步骤3-7;
步骤3-4、判断用户是否指定了用遗传算法执行INNER JOIN评估时的迭代次数,若指定了,则跳转到步骤3-6,否则顺序执行步骤3-5;
步骤3-5、按照系统默认迭代次数,即数据库管理员预先配置的迭代次数,执行遗传算法,执行完跳转到步骤3-7;
步骤3-6、按照用户指定的迭代次数执行遗传算法;
步骤3-7、完成处理。
遗传算法的迭代次数对遗传算法的结果影响非常大,同样的,遗传算法迭代的次数越多,执行算法本身所耗费的时间就越长。用户指定采用遗传算法的方式评估INNERJOIN的执行顺序,需要指定下算法的迭代次数,由用户去掌控INNER JOIN的评估时间。若用户不指定迭代次数则系统会采用数据库管理员预先配置好的默认迭代次数去执行。
步骤4-3中,若管理员没有预先设置INNER JOIN评估的时间阈值,则采用系统默认的3秒的时间阈值。若动态规划方法评估的时间超过了3秒,系统会采用贪心方法去执行INNER JOIN评估,以保证评估算法本身不会耗费过多的时间。
本发明采用多种INNER JOIN评估方法相结合的方式,可以适应各种数据库应用场景。系统根据人工指定或系统自动选取的评估方法对SQL执行中的INNER JOIN进行智能评估,选择一种较优的执行顺序,尽可能减少INNER JOIN之后的数据量,保证INNER JOIN的高效率执行。
附图说明
图1是分布式数据库存储示意图;
图2是分布式数据库评估INNER JOIN的整体工作流程图;
图3是分布式数据库按照用户指定的方式评估INNER JOIN的工作流程图;
图4是分布式数据库按照系统默认的方式评估INNER JOIN的工作流程图。
具体实施方式
下面结合附图和实施方式对本发明做详细说明。
图1所示为本发明中一种分布式数据库INNER JOIN示例,该集群中共有6台机器,共6个数据分片,每个分片均有1个备份分片,这些主分片以及备份分片散布到数据库集群的各台机器中。
图2所示为本发明中分布式数据库评估INNER JOIN的整体工作流程,具体步骤如下所述:
步骤S201、数据库系统接收到用户下发的SQL,对SQL进行解析。
步骤S202、判断解析的SQL中用户是否以Hint的方式或者以用户会话参数的方式指定了评估INNER JOIN的方法,若指定了,则顺序执行步骤S203,若没指定,则跳转到步骤S204。
步骤S203、按照用户指定的方法执行INNER JOIN的评估,评估完后跳转到步骤S205。
步骤S204、按照系统默认的方法执行INNER JOIN的评估。
步骤S205、完成处理。
图3所示为本发明中分布式数据库按照用户指定的方式评估INNER JOIN的工作流程,具体步骤如下所述:
步骤S301、数据库系统接收用户设定的执行方法与参数,准备对SQL进行INNERJOIN评估。
步骤S302、判断用户是否指定了用遗传算法执行SQL的INNER JOIN评估,若指定了,则跳转到步骤S304,否则顺序执行步骤S303。
步骤S303、按照用户指定的其他评估方法执行评估,跳转到步骤S307。
步骤S304、判断用户是否指定了以遗传算法执行SQL的INNER JOIN评估时的迭代次数,若指定了,则跳转到步骤S306,否则顺序执行步骤S305。
步骤S305、按照系统默认迭代次数(即数据库管理员预先配置的迭代次数)执行遗传算法,跳转到步骤S307。
步骤S306、按照用户指定的迭代次数执行遗传算法。
步骤S307、完成此轮工作。
图4所示为本发明中分布式数据库按照系统默认的方式评估INNER JOIN的工作流程,具体步骤如下所述:
步骤S401、按照动态规划的方法执行INNER JOIN的评估。
步骤S402、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤S405,否则顺序执行步骤S403。
步骤S403、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤S404,否则跳转到步骤S402。
步骤S404、停止动态规划方法的执行,改为执行贪心算法进行INNER JOIN执行顺序的评估。
步骤S405、完成此轮工作。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (4)
1.一种分布式数据库SQL执行中INNER JOIN的智能评估方法,其特征在于包括以下步骤:
步骤1、数据库系统接收到用户下发的SQL,对SQL进行解析;
步骤2、判断解析的SQL中用户是否指定了评估INNER JOIN的方法,若已指定,则顺序执行步骤3,若没指定,则跳转到步骤4;其中,评估INNERJOIN的方法包括贪心方法、动态规划方法和遗传算法;
步骤3、按照用户指定的方法执行INNER JOIN的评估,评估完后跳转到步骤5;若用户指定采用遗传算法评估INNER JOIN,用户需指定遗传算法迭代的次数;或按照系统默认迭代次数,即数据库管理员预先配置的迭代次数;
步骤4、按照系统默认的方法执行INNER JOIN的评估,具体步骤如下:
步骤4-1、按照动态规划的方法执行INNER JOIN的评估;
步骤4-2、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤5,否则顺序执行步骤4-3;
步骤4-3、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤4-4,否则跳转到步骤4-2;
步骤4-4、停止动态规划方法的执行,改为执行贪心方法进行INNER JOIN执行顺序的评估;
步骤5、完成处理。
2.根据权利要求1所述的分布式数据库SQL执行中INNER JOIN的智能评估方法,其特征在于:步骤3中用户以Hint的方式或者以用户会话参数的方式指定INNER JOIN的评估方法。
3.根据权利要求1所述的分布式数据库SQL执行中INNER JOIN的智能评估方法,其特征在于:步骤3的具体步骤如下:
步骤3-1、数据库系统接收用户设定的执行方法和参数,准备对SQL进行INNER JOIN评估;
步骤3-2、判断用户是否指定了用遗传算法执行SQL的INNER JOIN评估,若指定了,则跳转到步骤3-4,否则顺序执行步骤3-3;
步骤3-3、按照用户指定的其他评估方法执行评估,评估完跳转到步骤3-7;
步骤3-4、判断用户是否指定了用遗传算法执行INNER JOIN评估时的迭代次数,若指定了,则跳转到步骤3-6,否则顺序执行步骤3-5;
步骤3-5、按照系统默认迭代次数,即数据库管理员预先配置的迭代次数,执行遗传算法,执行完跳转到步骤3-7;
步骤3-6、按照用户指定的迭代次数执行遗传算法;
步骤3-7、完成处理。
4.根据权利要求1所述的分布式数据库SQL执行中INNER JOIN的智能评估方法,其特征在于:步骤4-3中,若管理员没有预先设置INNER JOIN评估的时间阈值,则采用系统默认的3秒的时间阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510932891.9A CN105512315B (zh) | 2015-12-12 | 2015-12-12 | 一种分布式数据库sql执行中inner join的智能评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510932891.9A CN105512315B (zh) | 2015-12-12 | 2015-12-12 | 一种分布式数据库sql执行中inner join的智能评估方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512315A CN105512315A (zh) | 2016-04-20 |
CN105512315B true CN105512315B (zh) | 2019-04-30 |
Family
ID=55720295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510932891.9A Active CN105512315B (zh) | 2015-12-12 | 2015-12-12 | 一种分布式数据库sql执行中inner join的智能评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512315B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923551A (zh) * | 2009-06-12 | 2010-12-22 | Sap股份公司 | 信息值驱动的接近实时的决策支持 |
CN104298771A (zh) * | 2014-10-30 | 2015-01-21 | 南京信息工程大学 | 一种海量web日志数据查询与分析方法 |
CN104462095A (zh) * | 2013-09-13 | 2015-03-25 | 阿里巴巴集团控股有限公司 | 一种查询语句公共部分的提取方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101072691B1 (ko) * | 2009-07-23 | 2011-10-11 | 포항공과대학교 산학협력단 | 연관성 피드백을 이용한 데이터베이스 검색 방법 및 이를 수행하는 프로그램을 기록한 기록매체 |
-
2015
- 2015-12-12 CN CN201510932891.9A patent/CN105512315B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923551A (zh) * | 2009-06-12 | 2010-12-22 | Sap股份公司 | 信息值驱动的接近实时的决策支持 |
CN104462095A (zh) * | 2013-09-13 | 2015-03-25 | 阿里巴巴集团控股有限公司 | 一种查询语句公共部分的提取方法及装置 |
CN104298771A (zh) * | 2014-10-30 | 2015-01-21 | 南京信息工程大学 | 一种海量web日志数据查询与分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105512315A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613909B2 (en) | Method and apparatus for generating an optimized streaming graph using an adjacency operator combination on at least one streaming subgraph | |
WO2020211205A1 (zh) | 一种数据处理方法及相关产品 | |
CA3099664C (en) | Cloud-edge topologies | |
CN110134659B (zh) | 运行程序的日志监控系统、方法、介质及设备 | |
EP3432157B1 (en) | Data table joining mode processing method and apparatus | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
CN106547522B (zh) | 一种流应用优化的方法及装置 | |
CN103581336B (zh) | 基于云计算平台的业务流程调度方法及系统 | |
CN102279766A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
KR101242325B1 (ko) | 계층적 이산 사건 시스템 명세 모델의 이벤트 기반 시뮬레이션 방법, 시스템 및 이를 위한 기록 매체 | |
CN102662740A (zh) | 非对称多核系统及其实现方法 | |
CN105991478A (zh) | 服务器资源分配方法及其系统 | |
CN106339252B (zh) | 分布式dag系统的自适应优化方法和装置 | |
CN104424240A (zh) | 多表关联方法、主服务节点、计算节点及系统 | |
CN110618860A (zh) | 基于Spark的Kafka消费并发处理方法及装置 | |
CN109634714A (zh) | 一种智能调度的方法及装置 | |
CN101776995B (zh) | 自适应组合服务优化方法和装置 | |
CN103149840A (zh) | 一种基于动态规划的语义服务组合方法 | |
CN105468699A (zh) | 去重数据统计方法及设备 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN105512315B (zh) | 一种分布式数据库sql执行中inner join的智能评估方法 | |
CN116302580B (zh) | 纳米继电器算力资源调度方法及装置 | |
CN103810258A (zh) | 基于数据仓库的数据汇聚调度方法 | |
CN105068793A (zh) | 生成业务逻辑关系图以及实现业务应用的方法和装置 | |
CN106844605B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |