一种通过SQL编译器模拟优化数据库性能的方法及系统技术方案

技术编号:18397983 阅读:20 留言:0更新日期:2018-07-08 19:06
本发明专利技术属于数据库技术领域,具体涉及一种通过SQL编译器模拟优化数据库性能的方法及系统,包括以下步骤:开发端获取模拟信息,所述模拟信息为用户端提供的模拟信息;开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行解析、绑定和查询优化,并生成执行计划;开发端根据所述执行计划分析用户端SQL编译器存在的问题并进行调试。本发明专利技术能够通过开发端SQL编译器模拟用户端SQL编译器的查询优化,从而便捷、真实地重现用户端SQL编译器存在的问题,并在开发端进行调试。

【技术实现步骤摘要】
一种通过SQL编译器模拟优化数据库性能的方法及系统
本专利技术属于数据库
,具体涉及一种通过SQL编译器模拟优化数据库性能的方法及系统。
技术介绍
关系型数据库系统的SQL编译器通常根据表定义、表中总行数的基数估计、统计信息以及查询执行环境的配置,从而生成最优的查询计划。如果数据库系统能够在ApacheHadoop环境中处理大数据,SQL编译器要了解托管大数据的存储引擎的详细情况,才能准确地构建用于不同目的的系统行为模型。例如,如果表以ORC格式存储在HIVE存储引擎中,编译器会读取列统计信息并将一些HDFS数据文件的stripe元数据作为取样。编译器基于stripe元数据,以正确计算顺序I/O的扫描成本。在用于OLTP、报表或分析型应用程序的MPP数据库系统的部署期间以及部署之后,用户可能会发现不良的查询,并向DBMS供应商报告查询计划的质量问题。通常,理想的诊断环境就是数据库系统自身,因为SQL编译器的所有优化决策都来自于表数据、元数据和系统属性。但是,通过用户的环境来调试SQL编译器往往并不具有可行性,因为:第一,用户可能会严格限制对敏感数据的访问,开发人员无权访问系统。第二,如果远程进行调试,可能会使系统数据暴露于外部,产生安全隐患。第三,由于在编译期间进行了大量优化,部署在用户站点的编译器代码格式可能不适合进行调试。第四,将用户数据库复制到另一个系统会产生重复的硬件配置成本。
技术实现思路
针对现有技术中的缺陷,本专利技术提供了一种通过SQL编译器模拟优化数据库性能的方法及系统,本专利技术能够通过开发端SQL编译器模拟用户端SQL编译器的查询优化,从而便捷、真实地重现用户端SQL编译器存在的问题,并在开发端进行调试。第一方面,本专利技术提供了一种通过SQL编译器模拟优化数据库性能的方法,包括以下步骤:开发端获取模拟信息,所述模拟信息为用户端提供的模拟信息;开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行解析、绑定和查询优化,并生成执行计划;开发端根据所述执行计划分析用户端SQL编译器存在的问题并进行调试。优选地,所述模拟信息包括表和视图的定义、表列直方图统计信息、表的元数据以及系统配置信息。优选地,所述将所述模拟信息加载到模拟数据库具体为:将所述表和视图的定义加载到所述模拟数据库,并创建SQL对象;将所述表列的直方图统计信息加载到所述模拟数据库,并创建相应的表列直方图统计信息;将所述表的元数据和所述系统配置信息加载到所述模拟数据库。优选地,所述将所述表和视图的定义加载到所述模拟数据库,并创建SQL对象具体为:根据所述表和视图的定义查看所述模拟数据库中是否有同名的SQL对象,若有,删除同名的SQL对象,将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象,若无,直接将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象。优选地,所述将所述表列直方图统计信息加载到所述模拟数据库,并创建相应的表列直方图统计信息具体为:根据所述表列直方图统计信息查看所述模拟数据库中是否有同名的表列直方图统计数据,若有,删除同名的表列直方图统计数据,将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息,若无,直接将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息。优选地,所述开发端SQL编译器开始模拟用户端SQL编译器进行查询优化,并生成执行计划具体为:解析器通过SQL语句进行解析生成语法树;绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性;验证所述表的有效性后,开始查询优化并生成执行计划。第二方面,本专利技术提供了一种通过SQL编译器模拟优化数据库性能的方法,包括以下步骤:用户端根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,并存储所述模拟信息,所述模拟信息用于提供给开发端进行加载模拟。优选地,所述模拟信息包括表和视图的定义、表列直方图统计信息、表的元数据以及系统配置信息;所述捕获用户端SQL编译器在查询优化过程中生成的模拟信息具体为:解析器通过SQL语句应用信息进行解析生成语法树,在此过程中获取系统配置信息;绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性,在此过程中根据不同存储引擎获取不同表和视图的定义、表的元数据;验证所述表的有效性后,开始查询优化并生成执行计划,在此过程中获取表列直方图统计信息。第三方面,本专利技术提供了一种通过SQL编译器模拟优化数据库性能的系统,包括用户端和开发端,所述用户端用于执行第一方面所述的方法,所述开发端用于执行第二方面所述的方法。优选地,所述用户端包括:信息捕获单元,用于根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,所述模拟信息用于提供给开发端进行加载模拟;所述开发端包括:信息加载单元,用于根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;模拟单元,用于模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行查询优化,并生成执行计划;分析调试单元,用于根据所述执行计划分析开发端SQL编译器存在的问题并进行调试。本专利技术的有益效果为:本专利技术能够通过开发端SQL编译器模拟用户端SQL编译器的查询优化,从而便捷、真实地重现用户端SQL编译器存在的问题,并在开发端进行调试。附图说明为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。图1为本实施例中针对大数据的SQL编译器的模拟方法的流程图;图2为本实施例中用户端捕获用户端SQL编译器在查询优化过程中生成的模拟信息的方法流程图;图3为本实施例中开发端SQL编译器开始模拟用户端SQL编译器进行查询优化并生成执行计划的方法流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本专利技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。现有技术中,EsgynDB是企业级的SQL-on-Hadoop解决方案,能够在Hadoo本文档来自技高网...

【技术保护点】
1.一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,包括以下步骤:开发端获取模拟信息,所述模拟信息为用户端提供的模拟信息;开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行解析、绑定和查询优化,并生成执行计划;开发端根据所述执行计划分析用户端SQL编译器存在的问题并进行调试。

【技术特征摘要】
1.一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,包括以下步骤:开发端获取模拟信息,所述模拟信息为用户端提供的模拟信息;开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行解析、绑定和查询优化,并生成执行计划;开发端根据所述执行计划分析用户端SQL编译器存在的问题并进行调试。2.根据权利要求1所述的一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,所述模拟信息包括表和视图的定义、表列直方图统计信息、表的元数据以及系统配置信息。3.根权利要求2所述的一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,所述将所述模拟信息加载到模拟数据库具体为:将所述表和视图的定义加载到所述模拟数据库,并创建SQL对象;将所述表列的直方图统计信息加载到所述模拟数据库,并创建相应的表列直方图统计信息;将所述表的元数据和所述系统配置信息加载到所述模拟数据库。4.根据权利要求3所述的一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,所述将所述表和视图的定义加载到所述模拟数据库,并创建SQL对象具体为:根据所述表和视图的定义查看所述模拟数据库中是否有同名的SQL对象,若有,删除同名的SQL对象,将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象,若无,直接将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象。5.根据权利要求4所述的一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,所述将所述表列直方图统计信息加载到所述模拟数据库,并创建相应的表列直方图统计信息具体为:根据所述表列直方图统计信息查看所述模拟数据库中是否有同名的表列直方图统计数据,若有,删除同名的表列直方图统计数据,将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息,若无,直接将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息。6.根据权利要求5所述的一种通过SQL编译器...

【专利技术属性】
技术研发人员:陈启帆刘明
申请(专利权)人:贵州易鲸捷信息技术有限公司
类型:发明
国别省市:贵州,52

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1