CN115237947A - Sql数据库的优化处理方法、装置、智能终端及介质 - Google Patents
Sql数据库的优化处理方法、装置、智能终端及介质 Download PDFInfo
- Publication number
- CN115237947A CN115237947A CN202210790296.6A CN202210790296A CN115237947A CN 115237947 A CN115237947 A CN 115237947A CN 202210790296 A CN202210790296 A CN 202210790296A CN 115237947 A CN115237947 A CN 115237947A
- Authority
- CN
- China
- Prior art keywords
- query
- sql
- sql statement
- analyzing
- optimization
- 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
Links
Images
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
-
- 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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了SQL数据库的优化处理方法、装置、智能终端及介质,方法包括:获取要分析对应数据库的查询SQL语句;通过抽象语法树进行语法解析;对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;并进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;优化执行器分析SQL语句,根据预置语法规则进行转换,并将转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;输出优化结果。本发明可分析SQL的执行效率,当分析的SQL有优化的方案可给出明确的更高效的查询语句;为SQL开发人员提供了方便。
Description
技术领域
本发明涉及数据库处理技术领域,尤其涉及SQL数据库的优化处理方法、装置、智能终端及存储介质。
背景技术
随着互联网技术的不断发展,各种数据库的使用越来越普及。
现有技术中没有可以通过页面可以分析数据库SQL语句是否会引起性能问题的工具;同时由于编写SQL数据库人员的水平层次不一,SQL的执行效率也不一致;通过此工具可以获取性能更高的查询语句,避免因为低性能SQL导致数据库的慢查询;开发页面可视化的SQL优化工具可以校验自己编写的SQL是否高效,同时可以规避一些不必要的数据库慢查询问题。
因此,现有技术还有待改进和提高。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种SQL数据库的优化处理方法、装置、智能终端及存储介质,通过本发明可以分析SQL的执行效率,如果分析的SQL有优化的方案可以给出明确的更高效的查询语句;本发使用的mySQL数据库优化方法基本上覆盖了所有的数据库底层支持的方案,为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的explain解释语句分析查询SQL语句的使用索引情况,并根据explain解释返回的字段信息初步确认是否优化所述查询SQL语句。
所述的SQL数据库的优化处理方法,其中,所述基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能的步骤包括:
基于得到查询SQL语句的索引以及查询类型信息,进行资料收集并收集SQL在执行过程中资源消耗信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能,并给出提升查询性能建议。
所述的SQL数据库的优化处理方法,其中,所述基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句的步骤包括:
基于分析得到的查询SQL语句的资源消耗及查询性能,通过数据库的trace分析优化器,根据返回信息进行SQL优化,封装为优化执行器,查找出更高效的SQL;
通过所述封装的优化执行器分析所述查询SQL语句,所述查询SQL语句根据预置的语法规则进行转换,并将转换后的SQL语句再与原查询SQL语句对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;如果没有则提示已经是最优SQL。
所述的SQL数据库的优化处理方法,其中,所述预置语法规则包括:
A1是否使用主键索引;A2检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;A3分组分页排序是否可以用主键索引;A4条件和中间结果集下推;A5是否可以创建索引等情况,可根据不同查询场景进行规则扩展。
一种SQL数据库的优化处理装置,其中,所述装置包括:
获取模块,用于获取配置数据源,并获取要分析对应数据库的查询SQL语句;
判断模块,用于对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
第一分析模块,用于对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
第二分析模块,用于基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
优化模块,用于基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
结果输出模块,用于输出优化后的SQL结果,查询资源消耗和执行时间信息。
预先设置模块,用于预置语法规则:A1是否使用主键索引;A2检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;A3分组分页排序是否可以用主键索引;A4条件和中间结果集下推;A5是否可以创建索引等情况,可根据不同查询场景进行规则扩展。
一种智能终端,其中,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行任意一项所述的方法。
一种非临时性计算机可读存储介质,其中,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行中任意一项所述的方法。
有益效果:与现有技术相比,本发明提供了一种SQL数据库的优化处理方法、装置、智能终端及介质,本发明可以降低开发者掌握优化SQL技能的门槛,有利于提升开发者编写SQL水平,提升查询语句的执行效率;规避数据库的慢查询导致的性能问题;通过可视化页面进行分析,无需安装软件,可以省去对系统软件的依赖;系统根据规范的优化思路可以扩展其他数据库的优化功能,升级迭代用户无感知;本发明使用的技术方案覆盖了所有mySQL数据库支持的统计、优化以及执行方案,可以为用户提供更全面的SQL执行过程信息以及优化方案。
附图说明
图1为本发明实施例提供的SQL数据库的优化处理方法的流程图。
图2为本发明具体应用实施例提供的SQL数据库的优化处理方法的流程图。
图3是本发明实施例提供的SQL数据库的优化处理装置的原理框图。
图4是本发明实施例提供的智能终端的内部结构原理框图。
图5为本发明实施例提供的SQL数据库的优化处理方法的步骤S100的通过页面配置数据源示意图。
图6为本发明实施例提供的SQL数据库的优化处理方法的步骤S300的执行计划查询出来的信息举例示意图。
图7为本发明实施例提供的SQL数据库的优化处理方法的步骤S400的执行查询cup信息举例示意图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
随着互联网技术的不断发展,各种数据库的使用越来越普及。
现有技术中没有可以通过页面可以分析数据库SQL语句是否会引起性能问题的工具;同时由于编写SQL数据库人员的水平层次不一,SQL的执行效率也不一致;导致无法提升查询语句的执行效率。
为了解决现有技术的问题,本实施例提供一种SQL数据库的优化处理方法,通过本发明可以获取性能更高的查询语句,避免因为低性能SQL导致数据库的慢查询;并且本发明实现开发页面可视化的SQL优化工具可以校验自己编写的SQL是否高效,同时可以规避一些不必要的数据库慢查询问题。
本发明可以分析SQL的执行效率,如果分析的SQL有优化的方案可以给出明确的更高效的查询语句;本发使用的mySQL数据库优化方法基本上覆盖了所有的数据库底层支持的方案,为SQL开发者提供了方便,降低了开发成本。
SQL(Structured Query Language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。
SQL Server数据库包括Microsoft SQL Server以及Sybase SQL Server两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全。
示例性方法
如图1所示,本发明实施例提供的一种SQL数据库的优化处理方法,包括以下步骤:
步骤S100、获取配置数据源,并获取要分析对应数据库的查询SQL语句;
例如,用户首先通过页面配置数据源,连接上数据源后输入要分析对应数据库的查询SQL语句。
本发明实施例中,配置数据源举例为:通过页面获取与数据库的链接,可以使用JDBC进行链接,如图5所示,显示为配置数据源图示举例:配置的数据源名称:mysql;描述;IP主机名127.0.0.1;端口,3306;用户名,root等进行配置数据源。
步骤S200、对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
即对用户输入的查询SQL语句,进行语法检测并解析,是否有语法错误,如果有语法错误则提示SQL有误。当没有语法错误则进入步骤S300;
步骤S300、对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
本发明实施例中,对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息。例如:执行计划查询出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,对这些字段出现的可能进行解释如图6所示:在列名列出的字段例如id,select_type等,以及对应的描述见图5。
本发明实施例中,select_type表示查询类型包括如下:
1)SIMPLE,表示此查询不包含UNION查询或子查询
2)PRIMARY,表示此查询是最外层的查询
3)UNION,表示此查询是UNION的第二或随后的查询
4)DEPENDENT UNION,UNION中的第二个或后面的查询语句,取决于外面的查询UNION RESULT,UNION的结果
5)SUBQUERY,子查询中的第一个SELECT
6)DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询.即子查询依赖于外层查询的结果.
如果select_type中有SUBQUERY和DEPENDENT SUBQUERY判断是否可以将检索条数范围提前缩小,避免一些查询无关的数据导致的性能问题
type表示语句的访问类型可以鉴别出其中的索引信息:
它提供了判断查询是否高效的重要依据依据,通过type字段,我们判断此次查询是全表扫描还是索引扫描等
1)system表中只有一条数据
2)const针对主键或唯一索引的等值查询扫描,最多只返回一行数据
3)eq_ref此类型通常出现在多表的join查询,表示对于前表的每一个结果,都只能匹配到后表的一行结果.并且查询的比较操作通常是=,查询效率较高
4)ref此类型通常出现在多表的join查询,针对于非唯一或非主键索引,或者是使用了最左前缀规则索引的查询
5)range表示使用索引范围查询,通过索引字段范围获取表中部分数据记录.这个类型通常出现在=,<>,>,>=,<,<=,ISNULL,<=>,BETWEEN,IN()操作中
6)index表示全索引扫描(full indexscan),和ALL类型类似,只不过ALL类型是全表扫描而index类型则仅仅扫描所有的索引,而不扫描数据,所要查询的数据直接在索引树中就可以获取到(这种一般指的是innodb引擎),而不需要扫描数据.当是这种情况时,Extra字段会显示Using index,
查询效率也不高。
7)ALL表示全表扫描,这个类型的查询是性能最差的查询之一,查询数据量大的情况下,对数据库的性能压力很大.如一个查询是ALL类型查询,那么一般来说可以对相应的字段添加索引来避免
小结type查询效率:
ALL<index<range<index<ref<eq_ref<const<system,在后续的S500优化模块中会根据当前的select_type和索引type类型尝试提升为效率更高的类型,优化sql的查询性能。
步骤S400、基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
本步骤S400中主要是记录一些查询过程信息(时间和资源消耗);本发明实施例中关于进行查询效率分析,分析查询SQL语句的资源消耗及查询性能举例如下:
查询效率分析:
语法show profile
类型:
ALL:显示所有的开销信息
BLOCKIO:显示块IO相关开销
CONTEXT SWITCHES:上下文切换相关开销
CPU:显示CPU相关开销
IPC:显示发送和接受相关开销
MEMORY:显示内存相关开销
PAGE FAULTS:显示页面错误相关开销
SOURCE:显示和Source_function,Source_file,Source_line相关的相关开销
SWAPS:显示交换次数相关开销
例如图7中执行查询cup信息,可以获取到执行一条sql在不同状态(阶段)下所需要的时间(Duration)和资源消耗
将每次查询的Duration(耗时),cpu,memory,swaps,io的开销值按照不同比例求和并记录,用于在步骤S500中sql转换后进行对比,获取最高性能的sql语句。
t=0.5*sum(d)+0.2*sum(c)+0.1*sum(m)+0.1*sum(i)+0.1*sum(s)
t耗损总值,d表示Duration求和值占比50%;c表示cpu_user求和值占比20%;m(memory),s(swaps),i(io)求和后,各取10%,来表示综合消耗。根据不同得电脑配置可以进行调整百分值。当前计算为8g4核500g固定硬盘电脑计算规则。
步骤S500、基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
本发明实施例中,步骤S500主要是对步骤S400中记录一些查询过程信息(时间和资源消耗),在S500中会进行转换,和原始SQL的查询过程信息做对比,确保优化后sql是有性能提升的。
步骤S600、输出优化后的SQL结果,查询资源消耗和执行时间信息。
以下通过另一具体应用实施例对本发明做进一步详细说明:
如图2所示,本实施例的SQL数据库的优化处理方法,具体包括如下步骤:
步骤S10、获取配置数据源,并获取要分析对应数据库的查询SQL语句;
如上图2所示,用户首先通过页面配置数据源,连接上数据源后输入要分析对应数据库的查询SQL语句。
步骤S20、对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
SQL在程序后台会首先通过抽象语法树进行解析,分析是否有语法错误,如果有误直接返回结果“不合法”,并提示“SQL语法有误”;
步骤S30、对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
通过执行SQL的explain(解释)语句分析查询SQL语句的使用索引情况,根据explain(解释)返回的字段信息初步决定是否可以优化,如果返回的执行计划是常量级别而且是简单查询,直接返回给客户端“已是最优SQL”;否则分析是否用到主键索引,或者其他二级索引,查询类型是否有全表扫描的操作等,通过系统将信息翻译为用户简单易懂的提示信息。
步骤S40、基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
具体地,例如通过打开数据的Profiling(资料搜集)设置,通过show profiles(显示配置文件)收集SQL在执行过程中的cpu,io,memory(内存)消耗信息,在返回的结果中展示(显示)响应的资源和执行SQL在数据库各阶段时间的消耗,供开发人员参考,提升硬件,提升网络速度以及数据库配置是否还能更极致地提升查询性能;例如:在执行过程中内存消耗比较大例如内存消耗占比超60%,而且相应的SQL已经没有可优化的空间,提醒可以考虑增加服务器的内存;如果io消耗比较大,可以考虑使用固态硬盘提升速度;如果是cpu消耗比较大,表示当前的SQL计算比较多(例如单个查询SQL语句占用当前用户cpu 10%或,占用系统cpu 1%;因为按照数据库平均负载100个线程来说,户级别都不到1%的,超10%已经属于很大了),可以考虑能否减少计算,将计算放在应用程序,或者使用中间结果表来减少计算对数据库的压力,避免资源消耗大的SQL预警降低服务器检索性能。
其中,对于io消耗,分文件IO和网络IO。文件IO主要是输入输出流与内存的消耗。网络IO一般是网卡的吞吐量。
步骤S50、基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置的语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
通过打开数据库的trace分析优化器,根据返回信息进行SQL优化,封装为本系统的优化执行器,查找出更高效的SQL;优化执行器分析查询SQL语句,查询SQL语句根据预置语法规则,进行转换,并将转换后的SQL语句再与原查询SQL语句对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;如果没有则提示已经是最优SQL;
优化规则如下:
预置语法规则:1)是否使用主键索引;2)检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;3)分组分页排序是否可以用主键索引,例如可以通过主键索引将数据检索出,然后再执行整体SQL语句查询,可以避免回表二次检索;4)条件和中间结果集下推,例如在包括关联查询的语句中,可以将检索条件放在最先执行的语句中,然后再进行表关联,可以减少检索数据的条数,提升查询速度;5)是否可以创建索引等情况,可以根据不同查询场景进行规则扩展。
输出优化后和优化前的SQL、查询效率(资源消耗情况和各阶段在数据库执行消耗时间,即在步骤4中收集的信息),使用的索引信息,如果无需优化及提示无需优化。
步骤S60、输出优化后的SQL结果,查询资源消耗和执行时间信息;
如果SQL通过程序检测可以优化,返回具体的优化后的SQL语句以及其他查询过程中的参数信息。
输出优化后的SQL,如果无需优化及提示无需优化。
如图2所示,输出的优化分析结果包括:是否使用索引a,查询效率:b;优化前:c,优化后:d,结果SQL。
本发明实施例中,上述a:有两种结果,是或否;
b:表示查询效率的信息,通过设定一些值进行比较,例如设置查询耗时100ms以内,表示“高”,100ms-500ms表示“中”,如果是超过500ms表示“低”;
c:优化前的资源消耗以及总耗时;
d:优化后的资源消耗以及总耗时。
由上可见,本发明实施例中,通过获取用户在页面表单框处编写好查询SQL后,点击“执行分析”后,返回分析结果;如果有误直接返回“SQL有误”的提示;如果SQL通过程序检测可以优化,可以返回具体的优化后的SQL语句以及其他查询过程中的参数信息;如果无需优化,会提示查询效率为优。
本发明可以降低开发者掌握优化SQL技能的门槛,有利于提升开发者编写SQL水平,提升查询语句的执行效率;规避数据库的慢查询导致的性能问题;通过可视化页面进行分析,无需安装软件,可以省去对系统软件的依赖;本发明根据规范的优化思路可以扩展其他数据库的优化功能,升级迭代用户无感知;本发明使用的技术方案覆盖了所有mySQL数据库支持的统计、优化以及执行方案,可以为用户提供更全面的SQL执行过程信息以及优化方案。
示例性设备
如图3中所示,本发明实施例提供一种SQL数据库的优化处理装置,该装置包括:
获取模块310,用于获取配置数据源,并获取要分析对应数据库的查询SQL语句;
判断模块320,用于对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
第一分析模块330,用于对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
第二分析模块340,用于基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
优化模块350,用于基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
结果输出模块360,用于输出优化后的SQL结果,查询资源消耗和执行时间信息;
预先设置模块370,用于预置语法规则:A1是否使用主键索引;A2检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;A3分组分页排序是否可以用主键索引;A4条件和中间结果集下推;A5是否可以创建索引等情况,可根据不同查询场景进行规则扩展;具体如上所述。
基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图4所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏。其中,该智能终端的处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种SQL数据库的优化处理方法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
本领域技术人员可以理解,图4中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种智能终端,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取配置数据源,并获取要分析对应数据库的查询SQL语句;
对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
输出优化后的SQL结果,查询资源消耗和执行时间信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上,本发明公开了一种SQL数据库的优化处理方法、装置、智能终端及存储介质,本发明可以降低开发者掌握优化SQL技能的门槛,有利于提升开发者编写SQL水平,提升查询语句的执行效率;规避数据库的慢查询导致的性能问题;通过可视化页面进行分析,无需安装软件,可以省去对系统软件的依赖;系统根据规范的优化思路可以扩展其他数据库的优化功能,升级迭代用户无感知;本发明使用的技术方案覆盖了所有mySQL数据库支持的统计、优化以及执行方案,可以为用户提供更全面的SQL执行过程信息以及优化方案。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种SQL数据库的优化处理方法,其特征在于,所述方法包括:
获取配置数据源,并获取要分析对应数据库的查询SQL语句;
对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
输出优化后的SQL结果,查询资源消耗和执行时间信息。
2.根据权利要求1所述SQL数据库的优化处理方法,其特征在于,所述获取配置数据源,并获取要分析对应数据库的查询SQL语句的步骤包括:
接收操作指令通过页面配置数据源,并获取配置数据源;
并连接数据源,并获取输入的要分析对应数据库的查询SQL语句。
3.根据权利要求1所述的SQL数据库的优化处理方法,其特征在于,所述对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误的步骤包括:
对所述查询SQL语句,通过抽象语法树进行SQL的语法解析,分析判断所述查询SQL语句是否有语法错误;
当有语法错误则控制直接返回结果不合法,并提示SQL语法有误。
4.根据权利要求1所述的SQL数据库的优化处理方法,其特征在于,所述对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息的步骤包括:
获取解析后的合法的查询SQL语句;
对合法的查询SQL语句分析执行计划,得到查询SQL语句的索引以及查询类型信息;通过执行SQL的explain解释语句分析查询SQL语句的使用索引情况,并根据explain解释返回的字段信息初步确认是否优化所述查询SQL语句。
5.根据权利要求1所述的SQL数据库的优化处理方法,其特征在于,所述基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能的步骤包括:
基于得到查询SQL语句的索引以及查询类型信息,进行资料收集并收集SQL在执行过程中资源消耗信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能,并给出提升查询性能建议。
6.根据权利要求1所述的SQL数据库的优化处理方法,其特征在于,所述基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句的步骤包括:
基于分析得到的查询SQL语句的资源消耗及查询性能,通过数据库的trace分析优化器,根据返回信息进行SQL优化,封装为优化执行器,查找出更高效的SQL;
通过所述封装的优化执行器分析所述查询SQL语句,所述查询SQL语句根据预置的语法规则进行转换,并将转换后的SQL语句再与原查询SQL语句对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;如果没有则提示已经是最优SQL。
7.根据权利要求1所述的SQL数据库的优化处理方法,其特征在于,所述预置语法规则包括:
A1是否使用主键索引;A2检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;A3分组分页排序是否可以用主键索引;A4条件和中间结果集下推;A5是否可以创建索引等情况,可根据不同查询场景进行规则扩展。
8.一种SQL数据库的优化处理装置,其特征在于,所述装置包括:
获取模块,用于获取配置数据源,并获取要分析对应数据库的查询SQL语句;
判断模块,用于对所述查询SQL语句,通过抽象语法树进行语法解析判断是否有语法错误;
第一分析模块,用于对语法解析后合法的查询SQL语句,分析查询SQL语句的执行计划,得到查询SQL语句的索引以及查询类型信息;
第二分析模块,用于基于得到查询SQL语句的索引以及查询类型信息,进行查询效率分析,分析查询SQL语句的资源消耗及查询性能;
优化模块,用于基于分析得到的查询SQL语句的资源消耗及查询性能,优化执行器分析SQL语句,根据预置语法规则,进行转换,转换后的SQL再与原SQL对比数据的一致性以及查询性能;经过数次优化分析对比出更高效的语句;
结果输出模块,用于输出优化后的SQL结果,查询资源消耗和执行时间信息;
预先设置模块,用于预置语法规则:A1是否使用主键索引;A2检索条件中是否有数据格式隐式转换,如果有会导致相应的服务器资源消耗增加;A3分组分页排序是否可以用主键索引;A4条件和中间结果集下推;A5是否可以创建索引等情况,可根据不同查询场景进行规则扩展。
9.一种智能终端,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于执行如权利要求1-7中任意一项所述的方法。
10.一种非临时性计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1-7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210790296.6A CN115237947A (zh) | 2022-07-06 | 2022-07-06 | Sql数据库的优化处理方法、装置、智能终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210790296.6A CN115237947A (zh) | 2022-07-06 | 2022-07-06 | Sql数据库的优化处理方法、装置、智能终端及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237947A true CN115237947A (zh) | 2022-10-25 |
Family
ID=83672242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210790296.6A Pending CN115237947A (zh) | 2022-07-06 | 2022-07-06 | Sql数据库的优化处理方法、装置、智能终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237947A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117235118A (zh) * | 2023-10-19 | 2023-12-15 | 北京人大金仓信息技术股份有限公司 | 一种查询优化方法、存储介质与计算机设备 |
CN117271481A (zh) * | 2023-11-22 | 2023-12-22 | 深圳九有数据库有限公司 | 数据库自动优化方法及设备 |
-
2022
- 2022-07-06 CN CN202210790296.6A patent/CN115237947A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117235118A (zh) * | 2023-10-19 | 2023-12-15 | 北京人大金仓信息技术股份有限公司 | 一种查询优化方法、存储介质与计算机设备 |
CN117235118B (zh) * | 2023-10-19 | 2024-01-26 | 北京人大金仓信息技术股份有限公司 | 一种查询优化方法、存储介质与计算机设备 |
CN117271481A (zh) * | 2023-11-22 | 2023-12-22 | 深圳九有数据库有限公司 | 数据库自动优化方法及设备 |
CN117271481B (zh) * | 2023-11-22 | 2024-02-23 | 深圳九有数据库有限公司 | 数据库自动优化方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320679B (zh) | 一种数据表索引集合生成方法及装置 | |
CN115237947A (zh) | Sql数据库的优化处理方法、装置、智能终端及介质 | |
US8965918B2 (en) | Decomposed query conditions | |
EP1065606A2 (en) | Method and apparatus for identifying preferred indexes for databases | |
US20080140627A1 (en) | Method and apparatus for aggregating database runtime information and analyzing application performance | |
US9037552B2 (en) | Methods for analyzing a database and devices thereof | |
CN112162983A (zh) | 数据库索引建议处理方法、装置、介质和电子设备 | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
US8135702B2 (en) | Eliminating unnecessary statistics collections for query optimization | |
CN111914534A (zh) | 构建知识图谱语义映射方法及系统 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN112434003A (zh) | 一种sql优化方法、装置、计算机设备及存储介质 | |
CN111291074B (zh) | 一种数据库查询方法、系统、介质及设备 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN117076491A (zh) | 一种数据处理方法、存储介质与设备 | |
CN113836164A (zh) | 统一sql的方法、系统、设备及介质 | |
CN115757479A (zh) | 数据库的查询优化方法、机器可读存储介质与计算机设备 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
US20070208696A1 (en) | Evaluating materialized views in a database system | |
CN114328572A (zh) | 基于sql解析器的数据查询方法、装置、系统及介质 | |
JPH11203320A (ja) | データベース前処理方式 | |
CN114118055B (zh) | 复杂sql语句优化解析方法 | |
CN118296001B (zh) | 数据查询方法、装置、计算机设备、存储介质及程序产品 | |
CN111625553B (zh) | 一种统计信息收集优化方法及系统 |
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 |