CN114116773A - 一种结构化查询语言sql文本审核方法及装置 - Google Patents
一种结构化查询语言sql文本审核方法及装置 Download PDFInfo
- Publication number
- CN114116773A CN114116773A CN202111457948.6A CN202111457948A CN114116773A CN 114116773 A CN114116773 A CN 114116773A CN 202111457948 A CN202111457948 A CN 202111457948A CN 114116773 A CN114116773 A CN 114116773A
- Authority
- CN
- China
- Prior art keywords
- text
- auditing
- information
- sql
- preset
- 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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种结构化查询语言SQL文本审核方法及装置,可以应用于数据库技术领域,用于提升SQL审核的准确性。所述方法包括:接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;若所述审核请求为在线审核请求,则按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;根据审核结果生成审核报告。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种结构化查询语言SQL文本审核方法及装置。
背景技术
随着互联网行业的发展,各系统的数据库越来越大,大表的体积往往达到TB级别,一条执行效率差的结构化查询语言(Structured Query Language,SQL)文本,有可能导致整个数据库故障,影响系统的稳定性,因此,经常需要对数据库执行的SQL文本进行审核,从而避免执行效率差的SQL进入生产系统,影响系统的稳定性。
目前,对SQL文本只能进行一些简单的审核工作,导致SQL审核的准确性较低。
发明内容
本申请实施例提供了一种结构化查询语言SQL文本审核方法及装置,用于提升SQL审核的准确性。
第一方面,提供一种结构化查询语言SQL文本审核方法,所述方法包括:
接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;
若所述审核请求为在线审核请求,则按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;
根据审核结果生成审核报告。
可选的,所述按照预设审核规则对所述SQL文本进行审核之前,还包括:
获取用户输入的文本和数据库地址;其中,所述文本包括sqlid文本或SQL文本。
可选的,所述按照预设审核规则对所述SQL文本进行审核,包括:
根据所述数据库地址连接对应的数据库;
确定所述用户输入的文本是否为所述SQL文本;
若所述用户输入的文本为所述SQL文本,在所述数据库中执行解释命令,得到预估执行计划;
获取所述SQL文本对应的第一表信息、第一索引信息和第一统计信息;
按照所述预设审核规则对应的审核项目对所述第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
可选的,所述方法还包括:
若所述用户输入的文本为所述sqlid文本,则确定所述数据库中是否存在对象;其中,所述对象为SQL文本;
若所述数据库中存在所述对象,则从所述数据库中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息;
按照所述预设审核规则对应的审核项目对所述第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核。
可选的,所述方法还包括:
若所述数据库中不存在所述对象,则从自动工作负载信息库AWR中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息。
可选的,所述方法还包括:
可选的,所述方法还包括:
确定是否存在所述对象对应的历史执行计划;
若存在,则根据预设规则对所述历史执行计划进行分析;其中,所述预设规则包括开销、平均单次执行时间、逻辑读和物理读中的至少一种;
根据分析结果确定最优执行计划;
将所述最优执行计划对应的信息添加到所述审核报告。
可选的,所述方法还包括:
若所述审核请求为离线审核请求,则获取用户输入的文本;
确定所述用户输入的文本是否为SQL文本;
若所述用户输入的文本为SQL文本,则根据预先设定的语法规则集对所述SQL文本进行审核。
第二方面,提供一种结构化查询语言SQL文本审核装置,所述装置包括:
通信模块,用于接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;
处理模块,用于在所述审核请求为在线审核请求时,按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;
所述处理模块,还用于根据审核结果生成审核报告。
可选的,所述处理模块,还用于:获取用户输入的文本和数据库地址;其中,所述文本包括sqlid文本或SQL文本。
可选的,所述处理模块,具体用于:
根据所述数据库地址连接对应的数据库;
确定所述用户输入的文本是否为所述SQL文本;
若所述用户输入的文本为所述SQL文本,在所述数据库中执行解释命令,得到预估执行计划;
获取所述SQL文本对应的第一表信息、第一索引信息和第一统计信息;
按照所述预设审核规则对应的审核项目对所述第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
可选的,所述处理模块,还用于:
在所述用户输入的文本为所述sqlid文本时,确定所述数据库中是否存在对象;其中,所述对象为SQL文本;
在所述数据库中存在所述对象时从所述数据库中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息;
按照所述预设审核规则对应的审核项目对所述第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核。
可选的,所述处理模块,还用于:
所述数据库中不存在所述对象时,从自动工作负载信息库AWR中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息。
可选的,所述处理模块,还用于:
确定是否存在所述对象对应的历史执行计划;
若存在,则根据预设规则对所述历史执行计划进行分析;其中,所述预设规则包括开销、平均单次执行时间、逻辑读和物理读中的至少一种;
根据分析结果确定最优执行计划;
将所述最优执行计划对应的信息添加到所述审核报告。
可选的,所述处理模块,还用于:
所述审核请求为离线审核请求时,获取用户输入的文本;
确定所述用户输入的文本是否为SQL文本;
所述用户输入的文本为SQL文本时,根据预先设定的语法规则集对所述SQL文本进行审核。
第三方面,提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面所述的方法包括的步骤。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如第一方面所述的方法被实现。
第五方面,提供一种包含指令的计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行第一方面所述的方法。
在本申请实施例中,接收SQL文本的在线审核请求或离线审核请求,在接收的审核请求为在线审核请求时,按照预设审核规则对SQL文本进行审核,其中,预设审核规则为预先配置的规则,预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划。其中,本申请实施例提供的预设审核规则包括表、表分区、索引、统计信息和执行计划,对数据库的数据字典进行了完善,从而可以有效提升SQL文本审核的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的一种信息推送方法的流程图;
图2为本申请实施例提供的一种显示界面;
图3为本申请实施例提供的一种审核报告;
图4为本申请实施例提供的一种信息推送装置的结构框图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
在介绍本申请实施例之前,首先对本申请中的部分技术特征进行介绍,以便于本领域技术人员理解。
(1)数据库,数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。本文档中,主要是指Oracle、MySQL两种DBMS软件。
(2)SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
(3)执行计划,数据库的执行计划,是指服务器在执行SQL文本的时候,优化器基于成本所生成的执行方案。
(4)质量审核,质量是指SQL文本是否合规、执行计划是否最优。本文档中,特指对SQL的质量审核过程。
下面结合说明书附图对本申请实施例提供的SQL文本审核方法进行详细介绍。请参见图1所示,本申请提供的SQL文本审核方法的流程图描述如下:
步骤101:接收SQL文本审核请求;
其中,审核请求包括在线审核请求和离线审核请求。在本申请实施例中,可以采用浏览器/服务器模式(Browser/Server,B/S),用户可以通过浏览器进行访问,例如,请参加图2所示,图2为本申请实施例提供的一种显示界面,在该显示界面上包括数据库的类型(例如是Oracle或MySQL)、文本输入框(例如,该文本输入框中可以包括用于提示用户输入的内容,如图2中的“请输入需要审核的SQL文本,仅支持DML语句,在线审核支持输入SQL文本或sqlid文本”)、审核形式(即在线审核,离线审核)和数据库地址输入框(数据库地址输入框与文本输入框类似,可以包括用于提示用户输入的内容,例如,请输入数据库连接串),用户在选择数据库之后,可以根据每个框中的提示进行输入,输入完成之后,根据需求点击在线审核或离线审核。
步骤102:若所述审核请求为在线审核请求,则按照预设审核规则对所述SQL文本进行审核;
其中,预设审核规则为预先配置的规则,该预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划,该预设审核规则是根据专家经验进行优化提炼的,可以根据实际案例逐步完善。具体的审核项目请参见表1所示:
表1
在本申请实施例中,在接收到用户提交的SQL文本审核请求之后,可以判断该请求为在线审核请求还是离线审核请求,若用户提交的SQL文本审核请求为在线审核请求,则还需要获取用户输入的文本和数据库地址(即用户通过文本输入框和数据库地址输入框输入的内容),其中用户输入的文本包括sqlid文本或SQL文本。
然后根据该数据库地址连接对应的数据库,以及判断用户输入的文本为SQL文本还是sqlid文本,如果用户输入的文本为SQL文本(可以认为该文本为未执行过的文本),此时为了避免低效SQL对数据库的干扰,因此不实际执行该SQL文本,在数据库中执行解释命令,得到针对该SQL文本的预估执行计划,并获取该SQL文本对应的第一表信息、第一索引信息和第一统计信息,并将第一表信息、第一索引信息、第一统计信息和预估执行计划与前述的审核项目进行比对,即按照表1中的审核项目对第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
如果用户输入的文本为sqlid文本,则确定该数据库中是否存在对象,即SQL文本,若该数据库中存在对象,则从数据库中获取该对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息,如果数据库中不存在对象,则从自动工作负载信息库(Automatic Workload Repository,AWR)中获取该对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息,按照表1中的审核项目对第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核,若AWR中没有对象,则结束对用户输入的文本进行审核。
在一种可能的实施方式中,还可以确定是否存在该对象对应的历史执行计划,如果存在,则根据预设规则对历史执行计划进行分析,并根据分析结果确定最优执行计划,将该最优执行计划对应的信息添加到审核报告。
在一些其他的实施例中,用户提交审核时选择的是离线审核,此时仅需要获取用户输入的文本内容,并判断用户输入的文本为SQL文本还是sqlid文本,若所述用户输入的文本为SQL文本,则根据预先设定的语法规则集对该SQL文本进行审核,其中,由于离线审核场景不依赖于数据库,对用户输入的SQL文本提供语法分析,根据预先设定的语法规则集识别SQL文本的写法是否合规,预先设定的语法规则集中收集了常见错误,并整合了开发规范中的要求与限制,该预先设定的语法规则集中的内容可以根据实际案例逐步完善,预先设定的语法规则集中的具体内容如表2所示:
表2
步骤104:根据审核结果生成审核报告。
其中,生成的审核报告可以以HTML格式进行输出。
在具体的实施过程中,本申请实施例可以通过离线审核、在线审核两种方式对SQL文本进行审核,针对离线审核,可以根据用户输入的SQL文本提供语法分析,根据预先设定的语法规则集识别写法是否合规;针对在线审核,可以连接数据库获取SQL对象信息、真实执行计划的历史执行计划等信息,根据预设审核规则对SQL文本进行审核,可以对SQL文本从规范与效率两大方向进行审核。
为了更好的理解本申请的技术方案,下面将结合具体的实施例对本申请提供的预失真扩展模型及其实现预失真的方法进行解释说明。
实施例1:在线审核
用户在显示界面的文本框输入的文本为sqlid文本,如:2gbuud4p9401f,在数据库地址输入框输入的内容例如为数据库连接串,且提交的审核请求是在线审核请求,此时,在接收到在线审核请求时,根据数据库连接串连接对应的数据库,然后判断该数据库中是否存在对象(SQL文本),如果存在,则获取该对象的表信息、表分区信息、索引信息、统计信息和执行计划信息,并按照如表1所示的审核项目依次对获取的表信息、表分区信息、索引信息、统计信息和执行计划信息进行审核,并根据审核结果生成审核报告,生成的审核报告可以参见图3所示,生成审核报告之后还可以将该审核报告发送给用户,以使用户根据审核报告中的优化建议对输入的文本进行修改。例如,优化建议为:在第n列上创建索引,以及将标量子查询建议改为left join。
实施例2离线审核
用户在显示界面的文本输入框输入的文本为SQL文本,且提交的审核请求是离线审核请求,其中,由于是离线审核,不需要获取数据库的内容,因此用户可以不针对数据库地址输入框输入相关内容,此时,在接收到离线审核请求时,按照表2的内容对SQL文本进行语法审核,并根据审核结果生成审核报告,审核报告的形式与图3相同,生成审核报告之后还可以将该审核报告发送给用户,以使用户根据审核报告中的优化建议对输入的文本进行修改,例如,优化建议为将wm_concat函数替换为其它函数。
基于同一发明构思,本申请实施例提供了一种SQL文本审核装置,该SQL文本审核装置能够实现前述的SQL文本审核方法对应的功能。该SQL文本审核装置可以是硬件结构、软件模块、或硬件结构加软件模块。该SQL文本审核装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图4所示,该SQL文本审核装置包括通信模块401和处理模块402。其中:
通信模块401,用于接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;
处理模块402,用于在所述审核请求为在线审核请求时,按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;
所述处理模块402,还用于根据审核结果生成审核报告
可选的,所述处理模块402,还用于:获取用户输入的文本和数据库地址;其中,所述文本包括sqlid文本或SQL文本。
可选的,所述处理模块402,具体用于:
根据所述数据库地址连接对应的数据库;
确定所述用户输入的文本是否为所述SQL文本;
若所述用户输入的文本为所述SQL文本,在所述数据库中执行解释命令,得到预估执行计划;
获取所述SQL文本对应的第一表信息、第一索引信息和第一统计信息;
按照所述预设审核规则对应的审核项目对所述第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
可选的,所述处理模块402,还用于:
在所述用户输入的文本为所述sqlid文本时,确定所述数据库中是否存在对象;其中,所述对象为SQL文本;
在所述数据库中存在所述对象时从所述数据库中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息;
按照所述预设审核规则对应的审核项目对所述第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核。
可选的,所述处理模块402,还用于:
所述数据库中不存在所述对象时,从自动工作负载信息库AWR中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息。
可选的,所述处理模块402,还用于:
确定是否存在所述对象对应的历史执行计划;
若存在,则根据预设规则对所述历史执行计划进行分析;其中,所述预设规则包括开销、平均单次执行时间、逻辑读和物理读中的至少一种;
根据分析结果确定最优执行计划;
将所述最优执行计划对应的信息添加到所述审核报告。
可选的,所述处理模块402,还用于:
所述审核请求为离线审核请求时,获取用户输入的文本;
确定所述用户输入的文本是否为SQL文本;
所述用户输入的文本为SQL文本时,根据预先设定的语法规则集对所述SQL文本进行审核。
可选的,所述处理模块402还用于:根据审核结果生成审核报告。
可选的,所述审核报告分析SQL历史执行计划,从cost、平均单次执行时间、逻辑读、物理读等多个维度综合判断,选定最优执行计划。
前述的SQL文本审核方法的实施例涉及的各步骤的所有相关内容均可援引到本申请施例中的SQL文本审核装置所对应的功能模块的功能描述,在此不再赘述。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本申请实施例提供一种电子设备。请参见图5所示,该电子设备包括至少一个处理器501,以及与至少一个处理器连接的存储器502,本申请实施例中不限定处理器501与存储器502之间的具体连接介质,图5中是以处理器501和存储器502之间通过总线500连接为例,总线500在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线500可以分为地址总线、数据总线、控制总线等,为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前述的SQL文本审核方法中所包括的步骤。
其中,处理器501是电子设备的控制中心,可以利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器501可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的SQL文本审核方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器501进行设计编程,可以将前述实施例中介绍的SQL文本审核方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的SQL文本审核方法的步骤,如何对处理器501进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种计算可读存储介质,该计算可读存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的SQL文本审核方法的步骤。
在一些可能的实施方式中,本申请提供的SQL文本审核方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使该检测设备执行本说明书上述描述的根据本申请各种示例性实施方式的SQL文本审核方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (17)
1.一种结构化查询语言SQL文本审核方法,其特征在于,所述方法包括:
接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;
若所述审核请求为在线审核请求,则按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;
根据审核结果生成审核报告。
2.如权利要求1所述的方法,其特征在于,所述按照预设审核规则对所述SQL文本进行审核之前,还包括:
获取用户输入的文本和数据库地址;其中,所述文本包括sqlid文本或SQL文本。
3.如权利要求2所述的方法,其特征在于,所述按照预设审核规则对所述SQL文本进行审核,包括:
根据所述数据库地址连接对应的数据库;
确定所述用户输入的文本是否为所述SQL文本;
若所述用户输入的文本为所述SQL文本,在所述数据库中执行解释命令,得到预估执行计划;
获取所述SQL文本对应的第一表信息、第一索引信息和第一统计信息;
按照所述预设审核规则对应的审核项目对所述第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
若所述用户输入的文本为所述sqlid文本,则确定所述数据库中是否存在对象;其中,所述对象为SQL文本;
若所述数据库中存在所述对象,则从所述数据库中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息;
按照所述预设审核规则对应的审核项目对所述第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
若所述数据库中不存在所述对象,则从自动工作负载信息库AWR中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息。
6.如权利要求4或5所述的方法,其特征在于,所述方法还包括:
确定是否存在所述对象对应的历史执行计划;
若存在,则根据预设规则对所述历史执行计划进行分析;其中,所述预设规则包括开销、平均单次执行时间、逻辑读和物理读中的至少一种;
根据分析结果确定最优执行计划;
将所述最优执行计划对应的信息添加到所述审核报告。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述审核请求为离线审核请求,则获取用户输入的文本;
确定所述用户输入的文本是否为SQL文本;
若所述用户输入的文本为SQL文本,则根据预先设定的语法规则集对所述SQL文本进行审核。
8.一种结构化查询语言SQL文本审核装置,其特征在于,所述装置包括:
通信模块,用于接收SQL文本审核请求:其中,所述审核请求包括在线审核请求或离线审核请求;
处理模块,用于在所述审核请求为在线审核请求时,按照预设审核规则对所述SQL文本进行审核;其中,所述预设审核规则为预先配置的规则,所述预设审核规则对应的审核项目包括表、表分区、索引、统计信息和执行计划;
所述处理模块,还用于根据审核结果生成审核报告。
9.如权利要求8所述的装置,其特征在于,所述处理模块,还用于:
获取用户输入的文本和数据库地址;其中,所述文本包括sqlid文本或SQL文本。
10.如权利要求9所述的装置,其特征在于,所述处理模块,具体用于:
根据所述数据库地址连接对应的数据库;
确定所述用户输入的文本是否为所述SQL文本;
若所述用户输入的文本为所述SQL文本,在所述数据库中执行解释命令,得到预估执行计划;
获取所述SQL文本对应的第一表信息、第一索引信息和第一统计信息;
按照所述预设审核规则对应的审核项目对所述第一表信息、第一索引信息、第一统计信息和预估执行计划进行审核。
11.如权利要求10所述的装置,其特征在于,所述处理模块,还用于:
在所述用户输入的文本为所述sqlid文本时,确定所述数据库中是否存在对象;其中,所述对象为SQL文本;
在所述数据库中存在所述对象时从所述数据库中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息;
按照所述预设审核规则对应的审核项目对所述第二表信息、第二索引信息、第二统计信息和执行计划信息进行审核。
12.如权利要求11所述的装置,其特征在于,所述处理模块,还用于:
所述数据库中不存在所述对象时,从自动工作负载信息库AWR中获取所述对象对应的第二表信息、第二索引信息、第二统计信息和执行计划信息。
13.如权利要求11或12任一项所述的装置,其特征在于,所述处理模块,还用于:
确定是否存在所述对象对应的历史执行计划;
若存在,则根据预设规则对所述历史执行计划进行分析;其中,所述预设规则包括开销、平均单次执行时间、逻辑读和物理读中的至少一种;
根据分析结果确定最优执行计划;
将所述最优执行计划对应的信息添加到所述审核报告。
14.如权利要求9所述的装置,其特征在于,所述处理模块还用于:
所述审核请求为离线审核请求时,获取用户输入的文本;
确定所述用户输入的文本是否为SQL文本;
所述用户输入的文本为SQL文本时,根据预先设定的语法规则集对所述SQL文本进行审核。
15.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-7任一项所述的方法包括的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如权利要求1-7中任一项所述的方法被实现。
17.一种包含指令的计算机程序产品,其特征在于,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111457948.6A CN114116773A (zh) | 2021-12-02 | 2021-12-02 | 一种结构化查询语言sql文本审核方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111457948.6A CN114116773A (zh) | 2021-12-02 | 2021-12-02 | 一种结构化查询语言sql文本审核方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114116773A true CN114116773A (zh) | 2022-03-01 |
Family
ID=80365283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111457948.6A Pending CN114116773A (zh) | 2021-12-02 | 2021-12-02 | 一种结构化查询语言sql文本审核方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116773A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129746A (zh) * | 2022-08-30 | 2022-09-30 | 平安银行股份有限公司 | Sql审核分析方法、服务器及sql审核分析系统 |
-
2021
- 2021-12-02 CN CN202111457948.6A patent/CN114116773A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129746A (zh) * | 2022-08-30 | 2022-09-30 | 平安银行股份有限公司 | Sql审核分析方法、服务器及sql审核分析系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018272840B2 (en) | Automated dependency analyzer for heterogeneously programmed data processing system | |
CN112199366B (zh) | 数据表处理方法、装置及设备 | |
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
WO2020233330A1 (zh) | 批量测试方法、装置及计算机可读存储介质 | |
US20170083573A1 (en) | Multi-query optimization | |
JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
US8682876B2 (en) | Techniques to perform in-database computational programming | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN105677812A (zh) | 一种数据查询方法及数据查询装置 | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
CN105550241A (zh) | 多维数据库查询方法及装置 | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
CN110597844B (zh) | 异构数据库数据统一访问方法及相关设备 | |
CN111597243A (zh) | 基于数据仓库抽象数据加载的方法及系统 | |
CN111159016A (zh) | 一种规范检测方法及装置 | |
CN117271481B (zh) | 数据库自动优化方法及设备 | |
US10782942B1 (en) | Rapid onboarding of data from diverse data sources into standardized objects with parser and unit test generation | |
CN108255852B (zh) | Sql执行方法及装置 | |
CN114116773A (zh) | 一种结构化查询语言sql文本审核方法及装置 | |
CN111159213A (zh) | 一种数据查询方法、装置、系统和存储介质 | |
CN117827923A (zh) | 一种查询需求的处理方法、装置、计算机设备及存储介质 | |
CN110580170A (zh) | 软件性能风险的识别方法及装置 | |
CN114896269A (zh) | 结构化查询语句检测方法、装置、电子设备及存储介质 | |
CN112307050B (zh) | 一种重复关联计算的识别方法、装置及计算机系统 | |
CN113722302B (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 |