买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:天津南大通用数据技术股份有限公司
摘要:本发明涉及分布式数据库数据存储领域,尤其涉及一种分布式数据库SQL执行中INNER JOIN的智能评估方法。该方法采用贪心方法、动态规划方法和遗传算法3种评估方法相结合的方式选取INNER JOIN的较优执行顺序,尽可能减少INNER JOIN之后的数据量,保证INNER JOIN的高效率执行。本发明可以由用户指定任一种评估方法,提高系统的灵活性和可扩展性。
主权项: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、完成处理。
全文数据:一种分布式数据库SQL执行中INNERJOIN的智能评估方法技术领域本发明涉及分布式数据库数据存储领域,尤其涉及一种分布式数据库SQL执行中INNERJOIN的智能评估方法。背景技术在当今社会,各个行业几乎都会利用数据库去存储数据,而随着大数据与云计算时代的到来,这些行业数据存储与计算的需求越发迫切,因此传统的单机数据库系统无法满足用户的需求,无法完成海量数据的计算与存储。因此,分布式数据库成为了业界的宠儿,随着分布式技术、高速网络传输技术以及并行计算技术的发展与成熟,分布式数据库更是成为了数据库行业的主流产品。分布式数据库一般都是采用多台机器存储数据,即将用户数据根据某种数据散布算法分布到数据库的各个工作机器中,这样来减少单台数据库工作机器所存储的数据量,减少每一台机器的存储与计算压力。因此,许多业界知名的公司都采用这种方式应对海量数据,例如Amazon的分布式存储系统就是将数据分成许多数据块,将数据块分布到数据库集群中的各个节点去存储与计算。分布式数据库在执行SQL时,需要指定出符合分布式架构的执行计划,将单机的执行计划扩展到分布式的执行计划,以充分利用各个机器的资源,使SQL执行的更加高效与快速。在指定分布式执行计划时,需要保证SQL的执行结果与在单机执行的结果一致,即保证SQL执行后数据结果集是正确的。分布式数据库执行SQL时,对于INNERJOIN的计划需要仔细设计,类似于矩阵乘法,不同的执行顺序有不同的执行中间结果集,因此不同的执行顺序的执行性能也是不同的,最优执行计划与最差执行计划之间的执行效率差别非常的大,甚至执行时间有十倍以上的差距。因此,对于INNERJOIN的执行计划中需要较优的执行顺序,以保证执行的性能。业界数据库中有很多使用贪心策略或是使用动态规划策略的产品,但是这些产品无法灵活的应对多变的应用环境。发明内容为解决上述问题,本发明提供了一种分布式数据库SQL执行中INNERJOIN的智能评估方法,将人工指定评估方法与系统自动选取与调节方式相结合,以确保评估算法本身执行时间与INNERJOIN执行时间的平衡,使系统执行更灵活、更高效。为实现上述目的,本发明采用的技术方案如下:一种分布式数据库SQL执行中INNERJOIN的智能评估方法,包括以下步骤:步骤1、数据库系统接收到用户下发的SQL,对SQL进行解析;步骤2、判断解析的SQL中用户是否指定了评估INNERJOIN的方法,若已指定,则顺序执行步骤3,若没指定,则跳转到步骤4;其中,评估INNERJOIN的方法包括贪心方法、动态规划方法和遗传算法;步骤3、按照用户指定的方法执行INNERJOIN的评估,评估完后跳转到步骤5;若用户指定采用遗传算法评估INNERJOIN,用户需指定遗传算法迭代的次数;步骤4、按照系统默认的方法执行INNERJOIN的评估,具体步骤如下:步骤4-1、按照动态规划的方法执行INNERJOIN的评估;步骤4-2、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤5,否则顺序执行步骤4-3;步骤4-3、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤4-4,否则跳转到步骤4-2;步骤4-4、停止动态规划方法的执行,改为执行贪心方法进行INNERJOIN执行顺序的评估;步骤5、完成处理。本发明采用了多种INNERJOIN的评估方法,包括时间复杂度为On的贪心方法、时间复杂度为Om*n的动态规划方法以及时间复杂度与迭代次数相关的遗传算法3种。这3种评估方法各有不同的特点,其中,贪心方法能够以较短的评估时间完成评估,但是贪心方法很难保证最优的评估结果;相反的,动态规划方法的评估时间可能会很长,但是其评估的结果可以保证是最优的;而对于遗传算法,其评估的时间和评估的结果是由迭代的次数决定的,迭代的次数越长,评估的时间就越久,而评估的结果越好。这3种评估方法都可以产生较优的INNERJOIN的执行顺序,可以适用各种数据库应用场景,满足用户的各种需求,即可以保证在评估算法本身与评估算法产生的评估结果之间达到一个平衡,不会产生很差的评估结果,也不会造成评估算法本身运行时间过长的问题。本发明可以由用户根据所需执行SQL的特性人工指定或者交由数据库系统自适应评估两种方法去评估INNERJOIN的执行顺序。人工指定方式较为灵活,可以指定贪心方法、动态规划方法、遗传算法这三种方法中的一种去评估当前执行的SQL的INNERJOIN顺序。若需要做INNERJOIN的表的个数较少,则用动态规划的方法和遗传算法都可以得到很好的评估结果。若需要做INNERJOIN的表的个数较多,则可以采用贪心方法去执行,以免评估的时间过长,影响整体的系统效率。若用户不指定执行SQL的INNERJOIN所采用的评估方法,系统会自动选取一种评估方法。一般是先按照动态规划方法评估INNERJOIN,因为动态规划方法能够保证评估的结果是最优解,但是动态规划方法解决本问题的时间复杂度为Om*n,即面对着很多表做INNERJOIN的SQL,动态规划方法本身所运行的时间非常的长,甚至是不可以接受的。因此,当动态规划方法执行的时间超过了管理员预先设置的INNERJOIN评估的时间阈值时,系统会放弃动态规划方法,采用时间复杂度为On的贪心方法去评估,可以在很短的时间内评估出结果,但是该结果不保证最优解。由动态规划方法转换为贪心方法的时间阈值由管理员在启动数据库的时候进行配置,但是管理员可以动态地及时调整该阈值,以便适应不同的应用需求。步骤3中用户以Hint的方式或者以用户会话参数的方式指定INNERJOIN的评估方法。这种方式适合于经验丰富的用户或对性能有特殊需求的用户,用户通过这种方式选取自己想要的评估方法。数据库系统充分相信用户的参数设置,不会对用户的选择做任何干预。步骤3的具体步骤如下:步骤3-1、数据库系统接收用户设定的执行方法和参数,准备对SQL进行INNERJOIN评估;步骤3-2、判断用户是否指定了用遗传算法执行SQL的INNERJOIN评估,若指定了,则跳转到步骤3-4,否则顺序执行步骤3-3;步骤3-3、按照用户指定的其他评估方法执行评估,评估完跳转到步骤3-7;步骤3-4、判断用户是否指定了用遗传算法执行INNERJOIN评估时的迭代次数,若指定了,则跳转到步骤3-6,否则顺序执行步骤3-5;步骤3-5、按照系统默认迭代次数,即数据库管理员预先配置的迭代次数,执行遗传算法,执行完跳转到步骤3-7;步骤3-6、按照用户指定的迭代次数执行遗传算法;步骤3-7、完成处理。遗传算法的迭代次数对遗传算法的结果影响非常大,同样的,遗传算法迭代的次数越多,执行算法本身所耗费的时间就越长。用户指定采用遗传算法的方式评估INNERJOIN的执行顺序,需要指定下算法的迭代次数,由用户去掌控INNERJOIN的评估时间。若用户不指定迭代次数则系统会采用数据库管理员预先配置好的默认迭代次数去执行。步骤4-3中,若管理员没有预先设置INNERJOIN评估的时间阈值,则采用系统默认的3秒的时间阈值。若动态规划方法评估的时间超过了3秒,系统会采用贪心方法去执行INNERJOIN评估,以保证评估算法本身不会耗费过多的时间。本发明采用多种INNERJOIN评估方法相结合的方式,可以适应各种数据库应用场景。系统根据人工指定或系统自动选取的评估方法对SQL执行中的INNERJOIN进行智能评估,选择一种较优的执行顺序,尽可能减少INNERJOIN之后的数据量,保证INNERJOIN的高效率执行。附图说明图1是分布式数据库存储示意图;图2是分布式数据库评估INNERJOIN的整体工作流程图;图3是分布式数据库按照用户指定的方式评估INNERJOIN的工作流程图;图4是分布式数据库按照系统默认的方式评估INNERJOIN的工作流程图。具体实施方式下面结合附图和实施方式对本发明做详细说明。图1所示为本发明中一种分布式数据库INNERJOIN示例,该集群中共有6台机器,共6个数据分片,每个分片均有1个备份分片,这些主分片以及备份分片散布到数据库集群的各台机器中。图2所示为本发明中分布式数据库评估INNERJOIN的整体工作流程,具体步骤如下所述:步骤S201、数据库系统接收到用户下发的SQL,对SQL进行解析。步骤S202、判断解析的SQL中用户是否以Hint的方式或者以用户会话参数的方式指定了评估INNERJOIN的方法,若指定了,则顺序执行步骤S203,若没指定,则跳转到步骤S204。步骤S203、按照用户指定的方法执行INNERJOIN的评估,评估完后跳转到步骤S205。步骤S204、按照系统默认的方法执行INNERJOIN的评估。步骤S205、完成处理。图3所示为本发明中分布式数据库按照用户指定的方式评估INNERJOIN的工作流程,具体步骤如下所述:步骤S301、数据库系统接收用户设定的执行方法与参数,准备对SQL进行INNERJOIN评估。步骤S302、判断用户是否指定了用遗传算法执行SQL的INNERJOIN评估,若指定了,则跳转到步骤S304,否则顺序执行步骤S303。步骤S303、按照用户指定的其他评估方法执行评估,跳转到步骤S307。步骤S304、判断用户是否指定了以遗传算法执行SQL的INNERJOIN评估时的迭代次数,若指定了,则跳转到步骤S306,否则顺序执行步骤S305。步骤S305、按照系统默认迭代次数即数据库管理员预先配置的迭代次数执行遗传算法,跳转到步骤S307。步骤S306、按照用户指定的迭代次数执行遗传算法。步骤S307、完成此轮工作。图4所示为本发明中分布式数据库按照系统默认的方式评估INNERJOIN的工作流程,具体步骤如下所述:步骤S401、按照动态规划的方法执行INNERJOIN的评估。步骤S402、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤S405,否则顺序执行步骤S403。步骤S403、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤S404,否则跳转到步骤S402。步骤S404、停止动态规划方法的执行,改为执行贪心算法进行INNERJOIN执行顺序的评估。步骤S405、完成此轮工作。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求:1.一种分布式数据库SQL执行中INNERJOIN的智能评估方法,其特征在于包括以下步骤:步骤1、数据库系统接收到用户下发的SQL,对SQL进行解析;步骤2、判断解析的SQL中用户是否指定了评估INNERJOIN的方法,若已指定,则顺序执行步骤3,若没指定,则跳转到步骤4;其中,评估INNERJOIN的方法包括贪心方法、动态规划方法和遗传算法;步骤3、按照用户指定的方法执行INNERJOIN的评估,评估完后跳转到步骤5;若用户指定采用遗传算法评估INNERJOIN,用户需指定遗传算法迭代的次数;或按照系统默认迭代次数,即数据库管理员预先配置的迭代次数;步骤4、按照系统默认的方法执行INNERJOIN的评估,具体步骤如下:步骤4-1、按照动态规划的方法执行INNERJOIN的评估;步骤4-2、判断动态规划方法是否执行完毕,若已经执行完毕,则跳转到步骤5,否则顺序执行步骤4-3;步骤4-3、判断动态规划方法的执行时间是否超过了管理员预先设置的时间阈值,若超过了,则顺序执行步骤4-4,否则跳转到步骤4-2;步骤4-4、停止动态规划方法的执行,改为执行贪心方法进行INNERJOIN执行顺序的评估;步骤5、完成处理。2.根据权利要求1所述的分布式数据库SQL执行中INNERJOIN的智能评估方法,其特征在于:步骤3中用户以Hint的方式或者以用户会话参数的方式指定INNERJOIN的评估方法。3.根据权利要求1所述的分布式数据库SQL执行中INNERJOIN的智能评估方法,其特征在于:步骤3的具体步骤如下:步骤3-1、数据库系统接收用户设定的执行方法和参数,准备对SQL进行INNERJOIN评估;步骤3-2、判断用户是否指定了用遗传算法执行SQL的INNERJOIN评估,若指定了,则跳转到步骤3-4,否则顺序执行步骤3-3;步骤3-3、按照用户指定的其他评估方法执行评估,评估完跳转到步骤3-7;步骤3-4、判断用户是否指定了用遗传算法执行INNERJOIN评估时的迭代次数,若指定了,则跳转到步骤3-6,否则顺序执行步骤3-5;步骤3-5、按照系统默认迭代次数,即数据库管理员预先配置的迭代次数,执行遗传算法,执行完跳转到步骤3-7;步骤3-6、按照用户指定的迭代次数执行遗传算法;步骤3-7、完成处理。4.根据权利要求1所述的分布式数据库SQL执行中INNERJOIN的智能评估方法,其特征在于:步骤4-3中,若管理员没有预先设置INNERJOIN评估的时间阈值,则采用系统默认的3秒的时间阈值。
百度查询: 天津南大通用数据技术股份有限公司 一种分布式数据库SQL执行中INNER JOIN的智能评估方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。