CN108255477A - 一种通过sql编译器模拟优化数据库性能的方法及系统 - Google Patents

一种通过sql编译器模拟优化数据库性能的方法及系统 Download PDF

Info

Publication number
CN108255477A
CN108255477A CN201810036408.2A CN201810036408A CN108255477A CN 108255477 A CN108255477 A CN 108255477A CN 201810036408 A CN201810036408 A CN 201810036408A CN 108255477 A CN108255477 A CN 108255477A
Authority
CN
China
Prior art keywords
sql
database
information
compilers
simulated
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.)
Pending
Application number
CN201810036408.2A
Other languages
English (en)
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.)
Guizhou Jingjie Information Technology Co Ltd
Guizhou Esgyn Information Technology Co Ltd
Original Assignee
Guizhou Jingjie Information Technology 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 Guizhou Jingjie Information Technology Co Ltd filed Critical Guizhou Jingjie Information Technology Co Ltd
Priority to CN201810036408.2A priority Critical patent/CN108255477A/zh
Publication of CN108255477A publication Critical patent/CN108255477A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

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

Description

一种通过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解决方案,能够在Hadoop环境中处理运行时间较短的联机事务处理(online transaction processing,OLTP)和运行时间较长的运营型数据存储(operational data store,ODS)工作负载。如果EsgynDB要具备具有竞争性的性能,其SQL编译器就要始终为Hadoop生态系统各种存储引擎中的大数据生成优化的编译计划。但是由于这些存储引擎的复杂性,一些查询优化计划可能不会达到最优,这时就需要开发团队对编译器进行干预和调整。
实施例一:
实施例一提供了一种通过SQL编译器模拟优化数据库性能的方法,能够在开发端诊断用户数据库中出现的编译器问题,如图1所示,本方法包括以下步骤:
S1,用户端根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,并存储所述模拟信息,所述模拟信息用于提供给开发端进行加载模拟;
S2,开发端获取模拟信息,所述模拟信息为用户端提供的模拟信息;
本实施例中开发端可以通过多种方式获取模拟信息,例如开发端工作人员接收用户端发送的带有模拟信息文件的邮件,下载模拟信息文件;例如开发端工作人员将U盘中的模拟信息文件拷贝到开发端。
S3,开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;
S4,模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行解析、绑定和查询优化,并生成执行计划;
S5,开发端根据所述执行计划分析用户端SQL编译器存在的问题并进行调试。
本实施例中,在开发端通过开发端SQL编译器模拟用户端SQL编译器的查询优化,并在开发环境中方便进行调试。本实施例的的解决方案无需访问用户环境,即可在非用户的环境中模拟优化,并如实模拟访问大量表的复杂查询优化。该解决方案可以在用户环境识别并捕获模拟所需的所有模拟信息,在开发环境,由相同版本的编译器读取这些模拟信息,从而做出相同的优化决策并重现问题。本实施例中用户端可以通过各种方式将模拟信息提供给开发端,用户端的工作人员可以将模拟信息通过邮件发送给开发端,可通过U盘拷贝的方式拷贝到开发端。
其中,所述模拟信息包括表和视图的定义、表列直方图统计信息、表的元数据以及系统配置信息。
一,所述表和视图的定义,有助于在用户环境以为的系统中重新创建相同的SQL对象。
二,所述表列的直方图统计信息,从表中取出行的随机样本,对这些行的列值进行排序,构建与样本值相同数量的区间(等高直方图),然后计算出表列的直方图统计信息。直方图统计信息是估计各种关系运算符基数的基础,例如,扫描运算符的基数、输出行和扫描运算符的数量等。
三,所述表的元数据因存储引擎而不同,而被编译器用于不同用途(例如,计算成本和平衡并行数据访问)。对于所有基于Hadoop的存储引擎,HDFS文件系统特有的数据包括HDFS的文件数量、各HDFS文件的完整路径和大小、数据块的大小等。对于HBase,元数据包括额外的信息(例如每个数据文件的索引级)。对于ORC格式的Hive表,元数据还包括元素数组(每个元素记录相应stripe的开始和字节长度以及stripe中的行数)。
四,所述系统配置信息包括集群中的节点数量、各节点的CPU核数量、总物理内存量。
本实施例中,由于用户端SQL编译器都是在正常的编译模式下使用这些信息的,所以可以提前识别这些信息并且可以在编译器内部对特殊逻辑进行编码,以便在捕获模式下捕获这些模拟信息。这些模拟信息在本质上都是元数据,因此数据大小较小。进入捕获模式,需要给用户端SQL编译器输入SQL捕获指令,该指令指定了捕获这些模拟信息的存放位置,该指令为:
control osim capture LOCATION<location>;
在捕获模式下,所述用户端会得到若干数量的常规SQL查询,编译并收集模拟信息:
prepare xx from<query1>
prepare xx from<query2>
prepare xx from<queryn>
如图2所示,用户端捕获用户端SQL编译器在查询优化过程中生成的模拟信息具体为:
S11,解析器通过SQL语句进行解析生成语法树,在此过程中获取系统配置信息;此过程还可获取查询配置开关、查询文本信息等;
S12,绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性,在此过程中根据不同存储引擎获取不同表和视图的定义、表的元数据;
S13,验证所述表的有效性后,开始查询优化并生成执行计划,在此过程中获取表列直方图统计信息。
本实施例中,表的元数据包括但不限于HBase表的元数据或/和Hive表的元数据或/和ORC元数据。其中获取表和视图的定义、表的元数据具体为:访问表和视图的定义,获取表和视图的定义;判断是否为HBase表,若是则获取HBase表的元数据;否则,判断是否为Hive表,若是则获取Hive表的元数据;判断Hive表是否为ORC格式,若是则获取ORC元数据。
用户端根据SQL终止指令终止捕获模式,完成对所述模拟信息的捕获。
该指令为:
control osim capture stop;
通过以上命令,用户端捕获完成后,捕获完成后开发端根据捕获的模拟信息进行加载模拟。
开发端的模拟数据库安装在开发环境的数据库中,通常为硬件配置较低的工作站,开发端SQL编译器与用户端SQL编译器为相同版本的编译器,开发端根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境。
其中,将所述模拟信息加载到模拟数据库具体为:
将所述表和视图的定义加载到所述模拟数据库,并创建SQL对象;
将所述表列的直方图统计信息加载到所述模拟数据库,并创建相应的表列直方图统计信息;
将所述表的元数据和所述系统配置信息加载到所述模拟数据库。
开发端SQL编译器进入模拟模式后,开始收集加载模拟信息。通过以下的SQL开始指令,启动加载:
control osim load from<location>;
根据所述表和视图的定义查看所述模拟数据库中是否有同名的SQL对象,若有,删除同名的SQL对象,将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象,若无,直接将所述表和视图的定义加载到所述模拟数据库并创建新的SQL对象。
根据所述表列直方图统计信息查看所述模拟数据库中是否有同名的表列直方图统计数据,若有,删除同名的表列直方图统计数据,将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息,若无,直接将所述表列直方图统计信息加载到所述模拟数据库并创建新的表列直方图统计信息。
加载只执行一次,之后,这些输入将永久存储于模拟数据库中,可以在后面的模拟过程中快速使用。将所述表的元数据和所述系统配置信息加载到模拟数据库并启动模拟步骤,通过如下的SQL指令:
control osim simulate continue<location>;
该指令将剩余的模拟信息:表的元数据和系统配置信息加载到编译器内存。这次的加载非常重要,因为需要覆盖上述加载的新的SQL对象的表的元数据。同样,当前开发的机器配置也必须用用户端系统配置覆盖。由于这些模拟信息的大小较小,所以此次加载可以很快完成,模拟环境也可以快速建立。
模拟环境建立后,如图3所示,开发端SQL编译器开始模拟用户端SQL编译器进行查询优化并生成执行计划,具体为:
S41,解析器通过SQL语句进行解析生成语法树;
S42,绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性;
S43,验证所述表的有效性后,开始查询优化并生成执行计划。
本实施例中,表的元数据包括但不限于HBase表的元数据或/和Hive表的元数据或/和ORC元数据。其中解析表和视图的定义、表的元数据具体为:访问表和视图的定义,使用表和视图的定义;判断是否为HBase表,若是则使用HBase表的元数据;否则,判断是否为Hive表,若是则使用Hive表的元数据;判断Hive表是否为ORC格式,若是则使用ORC元数据。
因为开发端SQL编译器需要的所有模拟信息都与用户环境相同,所以每个PREPARE都是发生在用户环境的编译模拟。值得注意的是,如果查询优化计划在用户环境有问题,则模拟时会遇到与用户环境同样的问题,并且只要各个会话执行过模拟步骤,该过程就可以在不同的模拟会话中得到重现。开发端编译器可以通过在捕获期间使用的SQL PREPARE命令,随时在模拟环境中编译要调试的SQL查询。
prepare xx from<query1>
prepare xx from<query2>
prepare xx from<queryn>
模拟不仅可以重现问题,而且有助于编译器内修复的验证。这是因为模拟会遍历与用户环境相同的代码路径。在开发环境的验证可以确保该修复真正解决了缺陷。
当完成了一组特定输入集的模拟时,可以从模拟数据库完全删除与事实相悖的数据。这可以通过以下的SQL指令实现:
control osim unload<location>;
本实施例的优化模拟方法用到的优化模拟工具已经在企业级的运营型SQL-on-Hadoop MPP关系型数据库EsgynDB中实现。该工具能够精确模拟涉及HBase和Hive ORC表的复杂SQL查询的优化,并成为EsgynDB产品的重要部分,为用户解决SQL查询优化计划的问题。该工具可以在小型开发工作站上重现用户的问题,从而有助于解决缺陷并提高产品质量。该工具还可以用于验证修复的问题。
综上所述,本实施例中的方法,可以在不同系统的不同数据库上模拟Hadoop大数据的SQL优化;如果要实现SQL优化的精确模拟,用户端SQL编译器要以捕获模式运行,并从用户环境捕获以下数据:
表和视图的定义(SQL DDL);表列直方图统计信息(引用的SQL对象的列统计信息);表的元数据(引用的Hadoop存储引擎中的SQL对象的元数据)以及系统配置信息。
开发端SQL编译器以模拟模式运行,模拟模式下进行加载和模拟两步,将表和视图的定义、表列直方图统计信息加载到模拟数据库;将表的元数据、系统配置信息加载到编译器内存,加载完成后,模拟环境建立,开发端SQL编译器开始模拟用户端的查询优化,从而发现用户端存在的问题,并进行调试。
本发明实施例可以在开发环境的工作站上模拟复杂的SQL查询优化优化,从而便捷、真实地重现用户遇到的问题。本发明通过捕获模式,捕获关键的SQL编译器所需信息。在开发环境中通过加载和模拟,将相关的编译器状态恢复到与用户环境相同,从而使编译器以最小代价准确重现用户的问题。
实施例二:
实施例二提供了一种通过SQL编译器模拟优化数据库性能的系统,如图3所示,包括用户端和开发端,所述用户端和开发端共同执行实施例一所述的方法。
所述用户端包括:
信息捕获单元,用于根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,所述模拟信息用于提供给开发端进行加载模拟;
所述开发端包括:
信息加载单元,用于根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;所述模拟信息事先通过工作人员存储在开发端,所述模拟信息为用户端提供的在捕获模式下捕获的模拟信息;
模拟单元,用于模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行查询优化,并生成执行计划;
分析调试单元,用于根据所述执行计划分析开发端SQL编译器存在的问题并进行调试。
本实施例能够通过开发端SQL编译器模拟用户端SQL编译器的查询优化,从而便捷、真实地重现用户端SQL编译器存在的问题,并在开发端进行调试。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (10)

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编译器模拟优化数据库性能的方法,其特征在于,所述开发端SQL编译器开始模拟用户端SQL编译器进行查询优化,并生成执行计划具体为:
解析器通过SQL语句进行解析生成语法树;
绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性;
验证所述表的有效性后,开始查询优化并生成执行计划。
7.一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,包括以下步骤:
用户端根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,并存储所述模拟信息,所述模拟信息用于提供给开发端进行加载模拟。
8.根据权利要求7所述的一种通过SQL编译器模拟优化数据库性能的方法,其特征在于,所述模拟信息包括表和视图的定义、表列直方图统计信息、表的元数据以及系统配置信息;
所述捕获用户端SQL编译器在查询优化过程中生成的模拟信息具体为:
解析器通过SQL语句进行解析生成语法树,在此过程中获取系统配置信息;
绑定器根据所述语法树解析表和视图的定义、表的元数据以验证表的有效性,在此过程中根据不同存储引擎获取不同表和视图的定义、表的元数据;
验证所述表的有效性后,开始查询优化并生成执行计划,在此过程中获取表列直方图统计信息。
9.一种通过SQL编译器模拟优化数据库性能的系统,其特征在于,包括用户端和开发端,所述用户端用于执行如权利要求7、8任一项所述的方法,所述开发端用于执行如权利要求1-6任一项所述的方法。
10.根据权利要求9所述的一种通过SQL编译器模拟优化数据库性能的系统,其特征在于,所述用户端包括:
信息捕获单元,用于根据捕获指令进入捕获模式,捕获用户端SQL编译器在查询优化过程中生成的模拟信息,所述模拟信息用于提供给开发端进行加载模拟;
所述开发端包括:
信息加载单元,用于根据开始指令进入模拟模式,将所述模拟信息加载到模拟数据库,建立开发端SQL编译器的模拟环境;
模拟单元,用于模拟环境建立后,所述开发端SQL编译器开始模拟用户端SQL编译器进行查询优化,并生成执行计划;
分析调试单元,用于根据所述执行计划分析开发端SQL编译器存在的问题并进行调试。
CN201810036408.2A 2018-01-15 2018-01-15 一种通过sql编译器模拟优化数据库性能的方法及系统 Pending CN108255477A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810036408.2A CN108255477A (zh) 2018-01-15 2018-01-15 一种通过sql编译器模拟优化数据库性能的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810036408.2A CN108255477A (zh) 2018-01-15 2018-01-15 一种通过sql编译器模拟优化数据库性能的方法及系统

Publications (1)

Publication Number Publication Date
CN108255477A true CN108255477A (zh) 2018-07-06

Family

ID=62740645

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810036408.2A Pending CN108255477A (zh) 2018-01-15 2018-01-15 一种通过sql编译器模拟优化数据库性能的方法及系统

Country Status (1)

Country Link
CN (1) CN108255477A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895529A (zh) * 2018-08-23 2020-03-20 马上消费金融股份有限公司 结构化查询语言的处理方法及相关装置
CN111625550A (zh) * 2020-05-15 2020-09-04 贵州易鲸捷信息技术有限公司 基于EsgynDB数据库的预编译语句缓存系统及方法
CN111694846A (zh) * 2020-06-04 2020-09-22 贵州易鲸捷信息技术有限公司 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102687124A (zh) * 2009-12-23 2012-09-19 伊姆西公司 分析查询优化器性能的设备和方法
CN103176973A (zh) * 2011-12-20 2013-06-26 国际商业机器公司 用于生成数据库的测试工作负载的系统和方法
US20160335361A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Historical data replay utilizing a computer system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102687124A (zh) * 2009-12-23 2012-09-19 伊姆西公司 分析查询优化器性能的设备和方法
CN103176973A (zh) * 2011-12-20 2013-06-26 国际商业机器公司 用于生成数据库的测试工作负载的系统和方法
US20160335361A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Historical data replay utilizing a computer system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘维学: "SQL Server查询优化器原理与优化实例分析", 《计算机技术与发展》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895529A (zh) * 2018-08-23 2020-03-20 马上消费金融股份有限公司 结构化查询语言的处理方法及相关装置
CN110895529B (zh) * 2018-08-23 2021-03-30 马上消费金融股份有限公司 结构化查询语言的处理方法及相关装置
CN111625550A (zh) * 2020-05-15 2020-09-04 贵州易鲸捷信息技术有限公司 基于EsgynDB数据库的预编译语句缓存系统及方法
CN111694846A (zh) * 2020-06-04 2020-09-22 贵州易鲸捷信息技术有限公司 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法
CN111694846B (zh) * 2020-06-04 2023-08-29 贵州易鲸捷信息技术有限公司 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法

Similar Documents

Publication Publication Date Title
Holzschuher et al. Performance of graph query languages: comparison of cypher, gremlin and native access in Neo4j
US6941546B2 (en) Method and apparatus for testing a software component using an abstraction matrix
CN107665171A (zh) 自动回归测试方法及装置
US20120331353A1 (en) Testing a software application interfacing with multiple external software applications in a simulated test environment
Martin-Lopez et al. Test coverage criteria for RESTful web APIs
CN103761189B (zh) 一种测试用例管理方法及系统
US9098630B2 (en) Data selection
CN108255477A (zh) 一种通过sql编译器模拟优化数据库性能的方法及系统
Al Mahruqi et al. A semi-automated framework for migrating web applications from SQL to document oriented NoSQL database.
CN107480056A (zh) 一种软件测试方法和装置
Corley et al. Towards efficient and scalabale omniscient debugging for model transformations
US20200074040A1 (en) Hierarchical expression coverage clustering for design verification
US20130318499A1 (en) Test script generation
CN107943412A (zh) 一种分区分裂、删除分区中数据文件的方法、装置及系统
CN108334521B (zh) 一种数据库容量预测方法及装置
Qian et al. Use of the ADAMO data management system within ALEPH
US20060036422A1 (en) Methods and systems for electronic device modelling
Tadano et al. Automatic synthesis of SRN models from system operation templates for availability analysis
Petnga Graph‐based Assessment and Analysis of System Architecture Models
Rush Decentralized, Off-Chain, per-Block Accounting, Monitoring, and Reconciliation for Blockchains
Klein et al. Quality attribute-guided evaluation of NoSQL databases: an experience report
CN116991750B (zh) 利用多线程和分布式代理实现大并发模拟的压力测试方法
JP3547691B2 (ja) ジョブ検査装置、ジョブ検査方法、及びジョブ検査プログラムを記録した記録媒体
Azhan Automated Generation of Executable Cucumber Scenarios from a RDBMS Schema
Anagua A Decision Support System for Degree Coordination

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180706