CN113434430A - 一种sql查询语句性能检测方法和装置 - Google Patents

一种sql查询语句性能检测方法和装置 Download PDF

Info

Publication number
CN113434430A
CN113434430A CN202110779895.3A CN202110779895A CN113434430A CN 113434430 A CN113434430 A CN 113434430A CN 202110779895 A CN202110779895 A CN 202110779895A CN 113434430 A CN113434430 A CN 113434430A
Authority
CN
China
Prior art keywords
sql
query statement
sql query
analysis
result
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
CN202110779895.3A
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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202110779895.3A priority Critical patent/CN113434430A/zh
Publication of CN113434430A publication Critical patent/CN113434430A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • 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
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种SQL查询语句性能检测方法和装置,属于人工智能,该方法包括:建立检测程序,进行初始化,确定初始化结果;将SQL查询语句输入初始化后的检测程序;通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;根据初始化结果和分析结果,确定SQL查询语句性能检测结果。本发明通过程序自动检测,得出性能分析结果和对应提示,降低学习成本,提高开发效率,降低人为因素引入。

Description

一种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语句,输出SQL语句性能分析结果,并给出相应的提示。开发人员可以根据分析结果辅助判断SQL语句是否符合性能要求,根据提示给出的可能存在的问题和修改建议进行进一步修改优化。从而降低大量学习和反复调优的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例一种SQL查询语句性能检测方法示意图。
图2为本发明实施例一种SQL查询语句性能检测方法的流程图。
图3为本发明实施例一种SQL查询语句性能检测方法的语法分析和语法树分析过程示意图。
图4为运行本发明实施的一种SQL查询语句性能检测方法的计算机装置示意图。
图5为本发明实施例一种SQL查询语句性能检测装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明属于人工智能。图1为本发明实施例一种SQL查询语句性能检测方法示意图,如图1所示,本发明实施例提供一种SQL查询语句性能检测方法,通过程序自动检测,得出性能分析结果和对应提示,降低学习成本,提高开发效率,降低人为因素引入,该方法包括:
步骤101:建立检测程序,进行初始化,确定初始化结果;
步骤102:将SQL查询语句输入初始化后的检测程序;
步骤103:通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;
步骤104:根据初始化结果和分析结果,确定SQL查询语句性能检测结果。
本发明实施例提供的一种SQL查询语句性能检测方法,包括:首先建立检测程序,进行初始化,确定初始化结果;然后将SQL查询语句输入初始化后的检测程序;下一步通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;最后根据初始化结果和分析结果,确定SQL查询语句性能检测结果。针对传统结构化查询语言开发需要开发人员掌握大量的知识和经验、学习成本高、开发过程需要反复调试、开发成本高、人为调优容易引入人为因素、不可控等问题,本发明提出一种自动化的SQL查询语句性能检测,在SQL开发人员完成查询语句的编写之后,将查询语句输入自动化检测程序,通过建立检测程序实现自动检测,得出性能分析结果和对应优化提示,降低学习成本,提高开发效率,降低人为因素引入。辅助开发人员在SQL开发过程中进行性能检测、优化,降低学习、编写成本,提高SQL语句及应用整体性能。本发明采用一种SQL查询语句性能检测方法,通过检测程序自动分析开发人员编写的SQL语句,输出SQL语句性能分析结果,并给出相应的提示。开发人员可以根据分析结果辅助判断SQL语句是否符合性能要求,根据提示给出的可能存在的问题和修改建议进行进一步修改优化。从而降低大量学习和反复调优的成本。
在本发明实施例中,结构化查询语言:Structured Query Language,简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言(SQL)是应用系统中大量使用的数据库查询语言,编写符合要求的SQL语句对于构建高性能的要求非常重要。但是编写符合性能要求的SQL语句需要大量的学习成本和反复调优的成本。
现有技术中没有广泛应用的已知程序自动分析结构化查询语言性能的方法。开发人员普遍通过学习并长期积累SQL知识、经验,并通过在开发过程中反复对SQL语句进行调试来最终获取符合性能要求的结果。即便如此,往往还会发生由于考虑不周导致的低性能表现的SQL语句。
目前,大部分衡量一个SQL语句是否具备高性能的标准在大量的实践中经过反复积累、精简已经形成了成形的知识,利用SQL性能调试历史记录数据,可以通过程序实现自动化检测SQL查询语句的性能。
图2为本发明实施例一种SQL查询语句性能检测方法的流程图,如图2所示,具体实施本发明实施例提供的一种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查询语句的来源不同,因而具有不同的读取方式,可以读取文本、文件、网络报文等多种形式。
图3为本发明实施例一种SQL查询语句性能检测方法的语法分析和语法树分析过程示意图,如图3所示,具体实施本发明实施例提供的一种SQL查询语句性能检测方法时,在一个实施例中,通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果,包括:
步骤301:根据SQL语法规范以及加载的数据库类型和版本信息,通过初始化后的检测程序,对SQL查询语句进行语法分析,判断SQL查询语句是否符合对应数据库的语法规则;
步骤302:当SQL查询语句不符合对应数据库的语法规则时,终止本次SQL查询语句性能检测,输出语法分析不通过的分析结果;
步骤303:当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语法树,语法树包括查询类型、查询对象、查询字段、查询条件等信息。
具体实施本发明实施例提供的一种SQL查询语句性能检测方法时,在一个实施例中,根据初始化结果和分析结果,确定SQL查询语句性能检测结果,包括:
对构建的SQL语法树进行扫描、统计;
将扫描、统计的结果与规则库中的规则进行逐条匹配分析检测,确定每条规则的匹配分析检测结果;其中,规则库中的规则,包括:规则ID、类型、级别、要素以及对应的优化提示;
汇总匹配分析检测结果,确定SQL查询语句性能检测结果及对应的优化提示信息。
实施例中,通过初始化结果和分析结果得到SQL查询语句性能检测结果的主要过程,包括:首先对构建的SQL语法树进行扫描、统计;然后将扫描、统计的结果与规则库中的规则进行逐条匹配分析检测,确定每条规则的匹配分析检测结果;其中,规则库中的规则,包括:规则ID、类型、级别、要素以及对应的优化提示;最后汇总匹配分析检测结果,确定SQL查询语句性能检测结果及对应的优化提示信息。
根据构建的SQL语法树和初始化阶段加载的规则库,对SQL语法树进行扫描、统计,将扫描、统计的结果与规则库中的规则进行对比。规则库中的规则包括规则ID、类型、级别、要素以及对应的优化提示等信息。最终,输出检测结果和优化提示。用户根据输出的检测结果进行针对调优修改。
下面结合具体场景,对本发明实施例提供的一种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语法树进行扫描、统计,将扫描、统计的结果与规则库中的规则进行对比。规则库中的规则包括规则ID、类型、级别、要素以及对应的优化提示等信息。
最终,输出检测结果和优化提示。用户根据输出的检测结果进行针对调优修改。
本发明主要涉及一种结构化查询语言性能自动化检测方法。使用与各种应用场景,具体系统模块由实际系统实现确定。
对于本发明阐明的自动化检测方法,主要涉及应用规则库以及数据库类型、版本等的加载和初始化。自动化检测时,通过以不同的方式读取用户编写的SQL查询语句,作为检测程序的输入。对于输入的SQL查询语句,进行语法分析和语法树分析。根据初始化结果和分析结果进行规则匹配和判定。最终向用户输出性能检测结果以及对应提示,输出形式根据系统实际的不同而不同。
本发明实施的一种SQL查询语句性能检测方法的主要流程,包括:
1.检测程序启动,完成初始资源加载。加载用户定义的数据库类型、版本以及规则库信息。
2.用户完成SQL查询语句的编写。由用户触发,检测程序读取用户输入的SQL查询语句。
3.根据用户指定的数据库类型、版本,对SQL查询语句进行语法分析。如果不符合语法规则,终止本次分析并输出结果。
4.对SQL查询语句进行语法树分析,根据SQL语法规范和用户指定的数据类型、版本等构建SQL语法树。
5.对构建的语法树进行扫描、统计,对扫描、统计的结果与规则库中的规则进行匹配检测。得出每条规则的匹配检测结果
6.汇总匹配检测结果,得出最终的性能检测结果和提示信息。
7.向用户输出最终的结果和提示信息。
传统结构化查询语言开发需要开发人员掌握大量的知识和经验,学习成本高;开发过程需要反复调试,开发成本高;人为调优容易引入人为因素,不可控。
本发明提出一种自动化的结构化查询语句性能检测方法。通过程序自动检测,得出性能分析结果和对应提示,降低学习成本,提高开发效率,降低人为因素引入。
从开发的角度,技术人员需要完成规则库的准备、实现SQL查询语句自动化性能检测程序逻辑以及配套输入输出程序。
从开发的角度,技术人员实现本发明实施例一种SQL查询语句性能检测方法,至少需要以下工作:
规则库的准备、实现SQL查询语句自动化性能检测程序逻辑;
提出自动化的结构化查询语句性能检测思路;
制定规则库,并编写自动化检测程序;
结构化查询语句性能自动化检测方法整体思路;
以规则库作为自动化检测方法的关键输入;
根据不同的数据库类型和版本进行分别检测;
通过进行分析语法和语法树,和规则库进行匹配分析,得出最终的性能分析结果。
图4为运行本发明实施的一种SQL查询语句性能检测方法的计算机装置示意图,如图4所示,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种SQL查询语句性能检测方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行实现上述一种SQL查询语句性能检测方法的计算机程序。
本发明实施例中还提供了一种SQL查询语句性能检测装置,如下面的实施例所述。由于该装置解决问题的原理与一种SQL查询语句性能检测方法相似,因此该装置的实施可以参见一种SQL查询语句性能检测方法的实施,重复之处不再赘述。
图5为本发明实施例一种SQL查询语句性能检测装置示意图,如图5所示,本发明实施例还提供一种SQL查询语句性能检测装置,具体实施时可以包括:
初始化模块501,用于建立检测程序,进行初始化,确定初始化结果;
SQL查询语句输入模块502,用于将SQL查询语句输入初始化后的检测程序;
语法分析和语法树分析模块503,用于通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;
SQL查询语句性能检测结果确定模块504,用于根据初始化结果和分析结果,确定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语法树进行扫描、统计;
将扫描、统计的结果与规则库中的规则进行逐条匹配分析检测,确定每条规则的匹配分析检测结果;其中,规则库中的规则,包括:规则ID、类型、级别、要素以及对应的优化提示;
汇总匹配分析检测结果,确定SQL查询语句性能检测结果及对应的优化提示信息。
综上,本发明实施例提供的一种SQL查询语句性能检测方法和装置,包括:首先建立检测程序,进行初始化,确定初始化结果;然后将SQL查询语句输入初始化后的检测程序;下一步通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;最后根据初始化结果和分析结果,确定SQL查询语句性能检测结果。针对传统结构化查询语言开发需要开发人员掌握大量的知识和经验、学习成本高、开发过程需要反复调试、开发成本高、人为调优容易引入人为因素、不可控等问题,本发明提出一种自动化的SQL查询语句性能检测,在SQL开发人员完成查询语句的编写之后,将查询语句输入自动化检测程序,通过建立检测程序实现自动检测,得出性能分析结果和对应优化提示,降低学习成本,提高开发效率,降低人为因素引入。辅助开发人员在SQL开发过程中进行性能检测、优化,降低学习、编写成本,提高SQL语句及应用整体性能。本发明采用一种SQL查询语句性能检测方法,通过检测程序自动分析开发人员编写的SQL语句,输出SQL语句性能分析结果,并给出相应的提示。开发人员可以根据分析结果辅助判断SQL语句是否符合性能要求,根据提示给出的可能存在的问题和修改建议进行进一步修改优化。从而降低大量学习和反复调优的成本。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种SQL查询语句性能检测方法,其特征在于,包括:
建立检测程序,进行初始化,确定初始化结果;
将SQL查询语句输入初始化后的检测程序;
通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;
根据初始化结果和分析结果,确定SQL查询语句性能检测结果。
2.如权利要求1所述的方法,其特征在于,建立检测程序,进行初始化,确定初始化结果,包括:
根据SQL性能调试历史记录数据,通过自动化编译,建立检测程序;
对检测程序进行初始化和资源加载,确定初始化结果。
3.如权利要求2所述的方法,其特征在于,对检测程序进行初始化和资源加载,确定初始化结果,包括:
启动检测程序,加载数据库类型和版本信息进行初始化,加载规则库信息进行初始化,将数据库对象进行初始化,生成初始化结果。
4.如权利要求1所述的方法,其特征在于,将SQL查询语句输入初始化后的检测程序,包括:
在SQL查询语句编写完成时,触发初始化后的检测程序,获取SQL查询语句;
利用包括手动输入、编辑器插件自动检测的输入方式,通过初始化后的检测程序读取SQL查询语句。
5.如权利要求3所述的方法,其特征在于,通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果,包括:
根据SQL语法规范以及加载的数据库类型和版本信息,通过初始化后的检测程序,对SQL查询语句进行语法分析,判断SQL查询语句是否符合对应数据库的语法规则;
当SQL查询语句不符合对应数据库的语法规则时,终止本次SQL查询语句性能检测,输出语法分析不通过的分析结果;
当SQL查询语句符合对应数据库的语法规则时,通过初始化后的检测程序,对SQL查询语句进行语法树分析,输出包含SQL语法树的分析结果。
6.如权利要求5所述的方法,其特征在于,通过初始化后的检测程序,对SQL查询语句进行语法树分析,输出包含语法树的分析结果,包括:
根据SQL语法规范以及加载的数据库类型和版本信息,通过初始化后的检测程序,对SQL查询语句进行语法树分析,构建SQL语法树,输出包含SQL语法树的分析结果;其中,SQL语法树,包括:查询类型,查询对象,查询字段,查询条件。
7.如权利要求5所述的方法,其特征在于,根据初始化结果和分析结果,确定SQL查询语句性能检测结果,包括:
对构建的SQL语法树进行扫描、统计;
将扫描、统计的结果与规则库中的规则进行逐条匹配分析检测,确定每条规则的匹配分析检测结果;其中,规则库中的规则,包括:规则ID、类型、级别、要素以及对应的优化提示;
汇总匹配分析检测结果,确定SQL查询语句性能检测结果及对应的优化提示信息。
8.一种SQL查询语句性能检测装置,其特征在于,包括:
初始化模块,用于建立检测程序,进行初始化,确定初始化结果;
SQL查询语句输入模块,用于将SQL查询语句输入初始化后的检测程序;
语法分析和语法树分析模块,用于通过初始化后的检测程序,对SQL查询语句进行语法分析和语法树分析,确定分析结果;
SQL查询语句性能检测结果确定模块,用于根据初始化结果和分析结果,确定SQL查询语句性能检测结果。
9.如权利要求8所述的装置,其特征在于,初始化模块,具体用于:
根据SQL性能调试历史记录数据,通过自动化编译,建立检测程序;
对检测程序进行初始化和资源加载,确定初始化结果。
10.如权利要求9所述的装置,其特征在于,初始化模块,还用于:
启动检测程序,加载数据库类型和版本信息进行初始化,加载规则库信息进行初始化,将数据库对象进行初始化,生成初始化结果。
11.如权利要求8所述的装置,其特征在于,SQL查询语句输入模块,具体用于:
在SQL查询语句编写完成时,触发初始化后的检测程序,获取SQL查询语句;
利用包括手动输入、编辑器插件自动检测的输入方式,通过初始化后的检测程序读取SQL查询语句。
12.如权利要求10所述的装置,其特征在于,语法分析和语法树分析模块,具体用于:
根据SQL语法规范以及加载的数据库类型和版本信息,通过初始化后的检测程序,对SQL查询语句进行语法分析,判断SQL查询语句是否符合对应数据库的语法规则;
当SQL查询语句不符合对应数据库的语法规则时,终止本次SQL查询语句性能检测,输出语法分析不通过的分析结果;
当SQL查询语句符合对应数据库的语法规则时,通过初始化后的检测程序,对SQL查询语句进行语法树分析,输出包含SQL语法树的分析结果。
13.如权利要求12所述的装置,其特征在于,语法分析和语法树分析模块,还用于:
根据SQL语法规范以及加载的数据库类型和版本信息,通过初始化后的检测程序,对SQL查询语句进行语法树分析,构建SQL语法树,输出包含SQL语法树的分析结果;其中,SQL语法树,包括:查询类型,查询对象,查询字段,查询条件。
14.如权利要求12所述的装置,其特征在于,SQL查询语句性能检测结果确定模块,具体用于:
对构建的SQL语法树进行扫描、统计;
将扫描、统计的结果与规则库中的规则进行逐条匹配分析检测,确定每条规则的匹配分析检测结果;其中,规则库中的规则,包括:规则ID、类型、级别、要素以及对应的优化提示;
汇总匹配分析检测结果,确定SQL查询语句性能检测结果及对应的优化提示信息。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行实现权利要求1至7任一项所述方法的计算机程序。
CN202110779895.3A 2021-07-09 2021-07-09 一种sql查询语句性能检测方法和装置 Pending CN113434430A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110779895.3A CN113434430A (zh) 2021-07-09 2021-07-09 一种sql查询语句性能检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110779895.3A CN113434430A (zh) 2021-07-09 2021-07-09 一种sql查询语句性能检测方法和装置

Publications (1)

Publication Number Publication Date
CN113434430A true CN113434430A (zh) 2021-09-24

Family

ID=77759937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110779895.3A Pending CN113434430A (zh) 2021-07-09 2021-07-09 一种sql查询语句性能检测方法和装置

Country Status (1)

Country Link
CN (1) CN113434430A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114896269A (zh) * 2022-05-31 2022-08-12 北京达佳互联信息技术有限公司 结构化查询语句检测方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114896269A (zh) * 2022-05-31 2022-08-12 北京达佳互联信息技术有限公司 结构化查询语句检测方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
Tufano et al. On learning meaningful code changes via neural machine translation
Van Oort et al. The prevalence of code smells in machine learning projects
US20070169023A1 (en) Restructuring computer programs
CN111597243A (zh) 基于数据仓库抽象数据加载的方法及系统
CN116400901A (zh) 一种Python代码自动生成方法及系统
CN113434430A (zh) 一种sql查询语句性能检测方法和装置
Kolahdouz-Rahimi et al. A comparison of quality flaws and technical debt in model transformation specifications
CN117009231B (zh) 基于对话式大语言模型的高可靠单元测试自动生成方法及装置
CN110580170B (zh) 软件性能风险的识别方法及装置
CN110633084B (zh) 基于单个样例的代码转换推导方法和装置
CN111966578A (zh) 一种安卓兼容性缺陷修复效果的自动化评估方法
CN110874213A (zh) 一静态强类型语言的运行时类型扩展与反射方法
CN112905232B (zh) 一种基于语法分析树的程序代码平行语料挖掘方法及系统
CN112100059B (zh) 一种c语言的指针类型分析方法
CN115438341A (zh) 提取代码循环计数器的方法、装置、存储介质和电子设备
CN110659200A (zh) 航空机载软件的源码和目标码对比分析方法及系统
CN115098355A (zh) 基于历史数据驱动的jvm测试程序生成方法
CN114968817A (zh) 代码改动影响范围的评估方法、装置、设备及存储介质
CN114153447A (zh) 一种自动化生成ai训练代码的方法
US20120330878A1 (en) Conventions for inferring data models
CN117390055B (zh) Jooq连表语句生成方法、设备以及介质
CN111737122B (zh) 一种大型机程序调用层级的检查方法及系统
CN110879704B (zh) 一种基于类继承关系分析的api推荐方法
CN115729623A (zh) 参数本地化方法及装置
Nusrat An Empirical Analysis of Unity Performance Bugs

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