CN109299132B - Sql数据处理方法、系统以及电子设备 - Google Patents
Sql数据处理方法、系统以及电子设备 Download PDFInfo
- Publication number
- CN109299132B CN109299132B CN201811448519.0A CN201811448519A CN109299132B CN 109299132 B CN109299132 B CN 109299132B CN 201811448519 A CN201811448519 A CN 201811448519A CN 109299132 B CN109299132 B CN 109299132B
- Authority
- CN
- China
- Prior art keywords
- sql
- selection data
- primary selection
- data
- module
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种SQL数据处理方法、系统以及电子设备,涉及数据库技术领域,代理模块从数据库的内存中读取SQL消息,并对所述SQL消息进行初次筛选,得到SQL初选数据;分析模块接收所述SQL初选数据,并基于分析模块空闲的时间通过延迟处理的方式对所述SQL初选数据进行分析,得到分析结果,其中,所述分析模块对所述SQL初选数据进行分析的内容包括:对所述SQL初选数据进行二次筛选,解决了现有技术中存在的对数据库中SQL语句等数据的采集分析过程会导致资源被过多占用的技术问题。
Description
技术领域
本发明涉及数据库技术领域,尤其是涉及一种SQL数据处理方法、系统以及电子设备。
背景技术
在数据库应用系统中,结构化查询语言(Structured Query Language,简称SQL)语句的性能好坏非常重要。低效的SQL语句会导致整个数据库应用系统的性能下降。在实际应用中,需要监控数据库系统的SQL语句运行过程中对系统资源的使用情况。
目前,对数据库中的SQL语句等数据的采集分析过程会导致资源被过多占用。
发明内容
有鉴于此,本发明的目的在于提供一种SQL数据处理方法、系统以及电子设备,以解决现有技术中存在的对数据库中SQL语句等数据的采集分析过程会导致资源被过多占用的技术问题。
第一方面,本发明实施例提供了一种SQL数据处理方法,包括:
代理模块从数据库的内存中读取SQL消息,并对所述SQL消息进行初次筛选,得到SQL初选数据;
分析模块接收所述SQL初选数据,并基于分析模块空闲的时间通过延迟处理的方式对所述SQL初选数据进行分析,得到分析结果,其中,所述分析模块对所述SQL初选数据进行分析的内容包括:对所述SQL初选数据进行二次筛选。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述代理模块从数据库的内存中读取SQL消息,并对所述SQL消息进行初次筛选,得到SQL初选数据,包括:
代理模块通过ONSTAT命令从数据库的内存中读取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示出了本发明实施例四所提供的一种电子设备的结构示意图。
图标:3-SQL数据处理系统;31-代理模块;32-分析模块;4-电子设备;41-存储器;42-处理器;43-总线;44-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在数据库应用系统中,结构化查询语言(Structured Query Language,简称SQL)语句的性能好坏至关重要。INFORMIX提供了SQL-Tracing工具,可用来捕获数据库一段时间内执行的SQL语句,并记录下SQL语句执行的详细信息-执行计划、执行开销等,但是在实际使用过程中仍存在很大的局限性:
SQL-TRACING开启之前需配置三项参数:库名、欲捕捉的SQL语句个数、每条SQL语句占用的预估内存大小。但是这些参数往往并不容易设置的非常准确,从而给使用者带来很大的不便,比如当捕捉的SQL语句超过设置的个数,刚开始跟踪到的SQL就会丢失;再比如内存需按最大SQL所占用的来预估设置,而不能根据SQL的大小动态调整,造成内存的浪费。
工具的运行会对应用系统的性能造成额外2%-5%的消耗。因收集到的统计信息需保存到内存的缓冲区,收集的语句数量越多,收集信息越详细,占用的内存资源也就越多。如果需要保存会话的历史轨迹,必须充分考虑它对系统内存消耗的大小,且使用的缓冲区是一个循环缓冲区,内存采用不断循环覆盖使用。当缓冲区大小不够时,便会将旧的信息覆盖掉,为了得到完整信息,需在捕捉期间不断把捕捉的信息从系统表转存到自定义表,才能保留现场供后续进一步分析使用。但实际上,SQL运行的效率高低,与它的长度、大小无关,因此上述设置非常不合理,会导致资源被过多占用。因此,目前对数据库中的SQL语句等数据的采集分析过程会导致资源被过多占用。
基于此,本发明实施例提供的一种SQL数据处理方法、系统以及电子设备,可以解决现有技术中存在的对数据库中SQL语句等数据的采集分析过程会导致资源被过多占用的技术问题。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种SQL数据处理方法、系统以及电子设备进行详细介绍。
实施例一:
本发明实施例提供的一种SQL数据处理方法,如图1所示,包括:
S11:代理模块从数据库的内存中读取SQL消息,并对SQL消息进行初次筛选,得到SQL初选数据。
具体的,设置在数据库中的代理模块(agent)从数据库的内存上读取SQL消息,代理模块在读取到SQL消息后,可以只将时间长度大于预设时间段(例如2秒)的SQL消息向分析服务器(即分析模块)发送,即代理模块可以完成初步筛选。
S12:分析模块接收SQL初选数据,并基于分析模块空闲的时间通过延迟处理的方式对SQL初选数据进行分析,得到分析结果,其中,分析模块对SQL初选数据进行分析的内容包括:对SQL初选数据进行二次筛选。
优选的,在分析模块空闲的时间通过延迟处理的方式,对接收到的SQL初选数据进行筛选与分析,得到分析结果。具体的,分析服务器(即分析模块)在得到代理模块发送的SQL初选数据后并不是立即处理,而是在空闲的时候再进行处理,即分析服务器对SQL初选数据的处理采用延迟处理方式。
因此,分析服务器分析和筛选SQL初选数据的时机,以及分析服务器与数据库进行交互的时机,是在分析服务器和数据库较为空闲的时候,即采用不同于现有技术中实时处理的延迟处理方式。
本实施例中,代理模块的监控采集是实时同步的,而分析端的分析服务器可以根据实际需要同步、异步,。
作为本实施例的优选实施方式,代理模块先对读取到的SQL消息进行初选,之后分析服务器在对初选后的数据进行二次筛选,以提高筛选结果的准确性。
本发明实施例提供的SQL数据处理方法可以作为一种基于抓取SQL和分析SQL的方法,能够解决使用INFORMIX自身工具消耗资源大的问题。本实施例中的代理模块、分析模块与现有技术中数据库自带的技术架构不同,采集对象也不同,即本实施例中的工具与INFORMIX自带的SQL-TRACING不同。本实施例中,采集端代理模块(agent)与分析端(即分析模块)二者的脚本分开部署。
实施例二:
本发明实施例提供的一种SQL数据处理方法,如图2所示,包括:
S21:代理模块通过ONSTAT命令从数据库的内存中读取SQL消息,并基于转存时间长度大于预设时间阈值的SQL消息对SQL消息进行初次筛选,得到SQL初选数据。
需要说明的是,本实施例提供的方法与现有技术中的SQL-Tracing通过读取系统表获得系统数据不同,本实施例通过运行ONSTAT命令,直接从内存中获取相应SQL会话数据,比读取系统表的消耗少,尤其是业务高峰时间,数据库对系统表的读写是很频繁的,如再对系统表进行读写,对数据库性能会造成不利影响。
本实施例中,代理模块可以设置于数据库中。每个实例中仅需布置一个AGENT(即代理模块),便可对整个实例运行的会话进行捕捉,而非针对某个库,也无需指定抓取的SQL条数和单条SQL大小,因此面向的监控对象更广。
在数据库实例上部署1个AGENT,执行权限方面只需设置/INFORMIX/ETC下的PROFILE参数,使其拥有ONSTAT的相关命令执行权限,而不需要DBA权限,从而保证了应用系统的安全性。
本步骤中,代理模块还可以从SQL消息中,筛选出转存时间长度大于预设时间阈值的SQL消息,从而实现对SQL消息的初次筛选,得到SQL初选数据。
S22:代理模块将SQL初选数据与SQL初选数据的内存信息转存至目标文件中。
其中,代理模块每次捕捉的颗粒度为单条SQL,捕捉到的SQL初选数据与SQL初选数据的内存信息会及时转存到文件中,以此可使内存及时回收,不会造成内存泄露。
因此,通过将捕捉超过运行时间阈值的SQL语句及该SQL语句涉及的库、用户、表、会话的运行状态等内存信息,从内存中转存到文件中,以方便及时分析与后续用分析工具分析,因此可以在数据库出现故障或潜在性能问题时,快速解决数据库性能问题,及时发现性能和瓶颈,避免经济损失。
S23:代理模块将SQL初选数据传输至分析模块。
S24:分析模块接收SQL初选数据。
如图3所示,对于网络架构方面,在服务端,分析模块可以为分析服务器,接收各个数据库中的AGENT收集并传输的SQL信息。
S25:对接收到的SQL初选数据进行划分,得到多份SQL数据。
作为本实施例的优选实施方式,分析服务器将接收到的SQL初选数据分成多份。
S26:分别通过不同的线程并行分析及二次筛选每份SQL数据,得到数据处理结果。
在实际应用中,分析服务器分多个线程并行处理全部的SQL数据,具体的,分析服务器分别使用不同的线程并行分析和筛选每份SQL数据。
S27:基于SQL类型对所有的数据处理结果进行分类统计,得到统计结果。
具体的,分析服务器将每份SQL数据的分析和筛选的结果进行整合,以将相同类型的SQL消息进行分类统计。因此,分析服务器会将相同类型的SQL消息进行分类整理,以提高用户阅读的效率和减小与数据库进行交互的开销。
S28:根据统计结果通过与数据库进行交互,生成SQL执行计划,并将执行计划作为分析结果。
本步骤中,分析服务器根据统计结果将与数据库进行交互,以生成执行计划。如图3所示,对于网络架构方面,在客户端,终端可以通过登录获取并执行分析服务器传输的执行计划。
对于编写语言与环境方面,本实施例提供的SQL数据处理方法使用SHELL和INFORMIX命令进行编码。因此,无需更多的环境配置,在裸系统和裸数据库上即可运行。而且,在文本处理方面,具有AWK、SED这两各方面的优势,能够方便快捷的处理较为复杂的问题,使原始SQL语句的清洗步骤效率得到提高。其中,SHELL是解释型语言,运行之前不需要编译且对平台没有依赖性,因此可以很灵活的运行在任意机器上,方便部署。
实施例三:
本发明实施例提供的一种SQL数据处理系统,如图4所示,SQL数据处理系统3包括:代理模块31及分析模块32。
作为一个优选方案,代理模块用于从数据库的内存中读取SQL消息,并对SQL消息进行初次筛选,得到SQL初选数据。
进一步,分析模块用于接收SQL初选数据,并基于分析模块空闲的时间通过延迟处理的方式对SQL初选数据进行分析,得到分析结果,其中,分析模块对SQL初选数据进行分析的内容包括:对SQL初选数据进行二次筛选。
因此,SQL数据处理系统可以由SQL抓取模块和SQL分析模块组成。其中,SQL抓取模块由SQL抓取-配置模块和SQL抓取-执行模块组成两个子模块组成,SQL分析模块由数据清洗模块、数据绑定变量带入模块、SQL提取模块,SQL并发时间计算,SQL执行计划模块五个子模块组成。
SQL抓取-配置模块用于依次录入各监控指标的参数值,包含监控持续时间、监控场景名称、监控时间步长(step)以及时间阈值,这些参数传递给执行模块运行。
配置模块需配置与监控相关的指标信息,在脚本运行后按照操作提示依次录入各指标的参数值,包含监控持续时间、监控场景名称、监控时间步长(step)以及时间阈值,然后将这些参数传递给下一个模块SQL抓取执行。
SQL抓取-执行模块用于通过INFORMIX的ONSTAT命令输出所有会话当前运行信息,按步长循环依次过滤,捕捉转存大于时间阈值的SQL会话。
SQL抓取-执行模块用于通过INFORMIX的ONSTAT命令输出所有会话当前运行信息,按照时间步长循环,每次都过滤保存running的SQL会话,排斥掉INFORMIX后台线程以及其他条件等待线程后,再按照各会话的时间进行排序,将超过阈值的会话输出到文件中,直到循环执行完毕,达到场景时间,这样所有异常的会话SQL都汇总到一个文件中。
SQL的执行效率在单次执行和在并发执行是截然不同的,可以将捕捉时SQL已运行的时间转存到文件中,例如拼装到文件S0,以便更好的反应出并发时的状况判断SQL效率的好坏。S0可以在任意时间,通过FTP或其他方式传给分析服务器。
数据清洗模块用于将原始抓取文件中不关注的内容清洗掉,而保留SQL语句及其会话状态、线程状态、执行数据库、执行用户等SQL性能统计需要的信息。
原始数据清洗模块用于将原始抓取文件S0中不关注的内容清洗掉,而保留SQL语句及其会话状态、线程状态、执行数据库、执行用户等SQL性能统计需要的信息。本实施例中,可以将每一条SQL及其相关信息称为一个段落块,而符合采集标准的段落块可以为有效段落块。
本实施过程采用文本单次遍历的方法,不包含循环和多次遍历,使处理效率达到最大化,输出目标文本为S1具体实施方法如下:
首先进行预处理,即将原始文件进行dos2unix的格式变换,避免由于码制问题导致的处理问题。清除掉原文件中的空行及干扰行,提高文本遍历效率。
然后,单次遍历具有无法回溯性,因此本实施过程使用几个标志位作为游标用来控制文本的处理过程。在实际应用中,可以利用标志位FLAG记录当前对于文本的获取状态,当FLAG为1时,表示为一个段落块的开始,需要向S1输出;当FLAG为0时,表示当前段落块已经输出完毕。可以利用rownum记录当前段落块已输出的行数,用于无效信息回退使用。C用于控制避免无效信息的继续输出。由于当前SQL语句中的绑定变量值无效而已经在目标文件中发生了回退删除时,当前段落块中的剩余内容则不需要再继续向S1输出。
之后,将标志位FLAG初始值设置为0,rownum设置为-1,C设置为1。开始文本遍历,依次从S0中读取一条文本R进行分析,按以下几种情况分别进行处理:
R中含有“SQLexec”等SQL执行信息关键字时,按不同的类别分别提取目标列输出到会话状态文件、会话类别文件、数据库文本、执行用户文本、会话号文本以及会话运行时间文本。
FLAG为0并且R中含有关键字“Current SQL statement:”,标志着新的段落块的开始,将FLAG置为1;FLAG为0并且R中含有关键字“Last parSED”,说明当前段落块。
对于没有遇到开始标示符就已结束的情况,是由于抓取进行时当前SQL已执行完毕,因此获取到的信息都是无效状态,此时就要进行回退删除。由于当前时刻还未向S1输出任何当前段落块,因此只需要在会话状态文件等SQL相关文件中分别回退一行即可。
FLAG为0并且R中含有关键字“Last parSED“,说明当前段落块已正常结束,将FLAG置为0并将RowN置为-1;FLAG为1且R为变量文本行,则要判断当前SQL的绑定变量是否有效。如果为无效绑定变量,则后续就不能对当前SQL做正确的分析,此时就要做删除回退。回退内容除了和C中相同的回退各个状态文件,还需要对目标文本进行删除回退,回退的行数为RowN,回退后将C置为0,说明当前段落块的后续文本行已无需向S1输出。
根据FLAG和C判断在有效段落块的之间且非e中情况,则向S1中进行有效输出。当R中含有变量标志关键字时,输出到变量临时文本,此文本将在下一模块中使用;当S0按行遍历完成后,即可得到初步清洗后的结果集S1,及其相关的执行过程文本,并且S1中的有效段落块和各个执行过程文本中的数目是完全匹配的。
绑定变量代入模块用于将原始SQL语句中出现过的绑定变量依次替换回去,从而可获得可执行SQL。此模块用于将原始SQL语句中出现过的绑定变量依次替换回去,从而可以获得去重后的可执行SQL。初次清洗后得到的文件中含有“?”(即原语句中替代绑定变量的部分)的行数和每行出现的数目都不确定,鉴于SHELL语言在单字符处理方面的劣势,计算“?”出现的全部次数将会使得算法效率非常低下。因此本发明巧妙的利用了原始文本中“?”出现的次数和变量临时文本行数一样的特性进行替换,具体实施方法如下:
从S1中获取当前行R,并计算当前行中“?”出现的次数NR。对于R中的每一个“?”,依次从变量临时文本中读取一行,获得变量类型COL1和变量值COL2。根据COL1分别按照SQL语言的语法规则进行如下不同的替换处理,而NR的值标志着对于当前行进行替换的次数。
当COL1的值为CHAR时,依据字符串的变量替换法则,将当前的“?”替换为‘COL2’(左右两边需要添加单引号);当COL1的值为INT、DECIMAL和INT8时,根据数字型变量替换法则,将当前的“?”直接替换为COL2;当COL1的值为DTIME时,由于原始抓取文本中时间变量的表示法中到毫秒级,替换时需要将毫秒部分去掉,因此以“.”为分割符获取第一部分字段表示为‘COL2’,再将当前的“?”直接替换为‘COL2’。
变量临时文本游标标记为FLAG,每从中读取1条后FLAG值加1。此游标的设定目的是为了确保从变量临时文本中获取到变量的正确性。由于待替换文本即初次筛选过的SQL文件是按照行处理的,而每一行出现“?”的个数是不确定性的,因此需要记录当前已经处理过的“?”的个数。
当R遍历完文本的最后一行时,依据抓取规则变量文本一定也正好读取完最后一行,此时的替换已全部完成并输出中间结果文本S3。
SQL提取模块用于将变量代入中的SQL语句提取出来,清洗掉已经替换过的变量说明部分及其他部分,并将SQL语句以每行一条的形式表现出来,用于后续的执行及性能的分析处理。此模块用于将S3中的SQL语句提取出来,清洗掉已经替换过的变量说明部分及其他部分,并将SQL语句以每行一条的形式表现出来,用于后续的执行及性能的分析处理。本实施过程采用文本单次遍历的方法,不包含循环和多次遍历,使处理效率达到最大化。本实施过程使用临时文本A用来记录所提取的当前一条SQL语句,最终结果输出为S4。具体实施方法如下:
首先,单次遍历具有无法回溯性,因此本实施过程使用标志位FLAG用于记录当前对于SQL语句的处理状态,当FALG为1时,表示一条SQL语句的开始;当FLAG为0时,表示当前SQL语句的读取结果。
然后,观察S3的特征,发现每条SQL语句皆是以提示语“Current SQL statement:”为开始部分,结束部分则分为两种情况:当原语句含有绑定变量时,SQL语句后面会跟着绑定变量的说明,此时可提取“Host variables:”为结束标示;当原语句中为原始执行SQL(不含有绑定变量时),则SQL语句后面没有任何内容,此时可以下一条SQL语句的开始提示语“Current SQL statement:”作为当前SQL语句的结束标示。
之后,将标志位FLAG初始值设置为0,开始文本遍历,依次从S3中读取一条文本R进行分析,处理情况分为以下几种情况:R中含有关键字“Current SQL statement:”并且FLAG为0,此时标志着一条SQL语句的开始,将FLAG置为1,继续读取下一行;R中含有关键字“Current SQL statement:”并且FLAG为1,此时对应步骤2中的第二种情况,当前SQL已结束,使用paste方法对临时文本A做单行处理后写入输出文件S4中,清空A,继续读取下一行。由于此行文本不仅为当前SQL语句的结束标示,且同时为下一SQL语句的开始标示,因此这里不将FLAG置为0;R中含有关键字"Host variables:"并且FLAG为1,此时为SQL结束标示的另一种情况,即对应步骤2中的a)情况,同样使用paste方法对临时文本A做单行处理后写入输出文件S4中,清空A,继续读取下一行,并将FLAG置为0;除以上情况之外的语句,且当FLAG为1时,标示着当前文本正处于一条SQL语句之中,输出当前文本到A,当S3按行遍历完成后,即可得到SQL语句的结果集S4,且S4中的每一条SQL皆以单行表示。
SQL并发统计模块用于通过对SQL提取的语句进行去重统计,统计出相同结构的SQL的并发数。本模块首先过滤掉S4中的系统表查询等与用户无关的SQL得到SQL文件S4,AWK根据文件某列去重并且统计该列频次。具体处理方法如下:
首先,从S4中读取一条SQL的前10项index作为数组a的键值,此时a[index]=1。然后,从S4中读取第二条SQL的前10项index,若index与之前的index相同,则a[index]=1+1=2;否则a[index]=1;如第二条所示依次循环进行键值的比对直到遍历完整个S4文件,此时即可得到数组a,a中的键值为SQL的前10项(标记一条SQL样本),对应数组项的值即是SQL的并发数。之后,使用a中的键值去匹配S4’文件,获取到原SQL语句,即可将原SQL语句和其并发数对应起来。
同理,计算每条SQL的运行时间采用与上述并发计算的相同逻辑,当循环到相同SQL时就把时间累加,通过不断的把每条SQL的时间累加,最后可以得到同一条SQL多次运行的总共时间。把每条SQL的总共时间除以对应的SQL并发数,即可得到单条SQL的平均执行时间。
通过上述各模块的运行即可以得到SQL的并发时间、并发数、库、SQL语句等信息的汇总文件S5。
SQL执行计划模块用于通过与数据库连接,对去重统计的SQL做执行计划。使用S5中的库名,用户等信息连接到对应数据库,从而获取到各条SQL执行计划,通过过滤执行计划中的“Estimated Cost:”“Sequential Scan”,“Index Scan”可得到每条SQL的COST,将COST与S5汇总,即可得到最终的结果,也可以按照不同指标进行排序得到最后结果。
实施例四:
本发明实施例提供的一种电子设备,如图5所示,电子设备4包括存储器41、处理器42,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例一或实施例二提供的方法的步骤。
参见图5,电子设备还包括:总线43和通信接口44,处理器42、通信接口44和存储器41通过总线43连接;处理器42用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口44(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线43可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器42在接收到执行指令后,执行所述程序,前述本发明任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器42中,或者由处理器42实现。
处理器42可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器42中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器42可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器42读取存储器41中的信息,结合其硬件完成上述方法的步骤。
实施例五:
本发明实施例提供的一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述实施例一或实施例二提供的方法。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本发明实施例提供的具有处理器可执行的非易失的程序代码的计算机可读介质,与上述实施例提供的SQL数据处理方法、系统以及电子设备具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
本发明实施例所提供的进行SQL数据处理方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (7)
1.一种SQL数据处理方法,其特征在于,包括:
代理模块从数据库的内存中读取SQL消息,并对所述SQL消息进行初次筛选,得到SQL初选数据;
分析模块接收所述SQL初选数据,并基于分析模块空闲的时间通过延迟处理的方式对所述SQL初选数据进行分析,得到分析结果,其中,所述分析模块对所述SQL初选数据进行分析的内容包括:对所述SQL初选数据进行二次筛选;
所述基于分析模块空闲的时间通过延迟处理的方式对所述SQL初选数据进行分析,得到分析结果,包括:
在分析模块空闲的时间通过延迟处理的方式,对接收到的所述SQL初选数据进行筛选与分析,得到分析结果;
所述对接收到的所述SQL初选数据进行筛选与分析,得到分析结果,包括:
对接收到的所述SQL初选数据进行划分,得到多份SQL数据;
分别通过不同的线程并行筛选与分析每份所述SQL数据,得到数据处理结果;
基于SQL类型对所有的所述数据处理结果进行分类统计,得到统计结果;
根据所述统计结果通过与所述数据库进行交互,生成SQL执行计划,并将所述执行计划作为分析结果;
所述方法还包括:
依次录入各监控指标的参数值,包含监控持续时间、监控场景名称、监控时间步长(step)以及时间阈值,并将上述参数传递给SQL抓取-执行模块运行;
通过INFORMIX的ONSTAT命令输出所有会话当前运行信息,并按步长循环依次过滤,捕捉转存大于时间阈值的SQL会话,将超过时间阈值的所述SQL会话输出到文件中,直到循环执行完毕;
将原始抓取文件中不关注的内容清洗掉,保留SQL语句及SQL性能需要统计的信息。
2.根据权利要求1所述的SQL数据处理方法,其特征在于,所述代理模块从数据库的内存中读取SQL消息,并对所述SQL消息进行初次筛选,得到SQL初选数据,包括:
代理模块通过ONSTAT命令从数据库的内存中读取SQL消息,并基于转存时间长度大于预设时间阈值的SQL消息对所述SQL消息进行初次筛选,得到SQL初选数据;
代理模块将所述SQL初选数据与所述SQL初选数据的内存信息转存至目标文件中。
3.根据权利要求1或2所述的SQL数据处理方法,其特征在于,所述代理模块设置于所述数据库中。
4.根据权利要求1或2所述的SQL数据处理方法,其特征在于,还包括:
代理模块将所述SQL初选数据传输至分析模块。
5.根据权利要求1所述的SQL数据处理方法,其特征在于,所述分析模块为分析服务器。
6.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5任一项所述的方法的步骤。
7.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至5任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811448519.0A CN109299132B (zh) | 2018-11-29 | 2018-11-29 | Sql数据处理方法、系统以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811448519.0A CN109299132B (zh) | 2018-11-29 | 2018-11-29 | Sql数据处理方法、系统以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109299132A CN109299132A (zh) | 2019-02-01 |
CN109299132B true CN109299132B (zh) | 2021-08-06 |
Family
ID=65141815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811448519.0A Active CN109299132B (zh) | 2018-11-29 | 2018-11-29 | Sql数据处理方法、系统以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299132B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457152B (zh) * | 2019-07-11 | 2022-12-30 | 贵阳语玩科技有限公司 | 一种用代理模式解决内存泄露的系统和方法 |
CN115470229B (zh) * | 2022-08-30 | 2023-04-14 | 昆仑数智科技有限责任公司 | 数据表处理方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000606A (zh) * | 2006-01-10 | 2007-07-18 | 英业达股份有限公司 | 数据处理系统及方法 |
CN102682117A (zh) * | 2012-05-15 | 2012-09-19 | 浪潮电子信息产业股份有限公司 | 一种数据库集群数据快速复制的方法 |
CN105808441A (zh) * | 2016-03-31 | 2016-07-27 | 浪潮通用软件有限公司 | 一种多维度性能诊断分析方法 |
CN106021071A (zh) * | 2016-05-04 | 2016-10-12 | 北京思特奇信息技术股份有限公司 | 一种监控sql运行过程的方法和系统 |
CN106126403A (zh) * | 2016-06-16 | 2016-11-16 | 北京中亦安图科技股份有限公司 | Oracle数据库故障分析方法和装置 |
CN106156115A (zh) * | 2015-04-07 | 2016-11-23 | 中国移动通信集团云南有限公司 | 一种资源调度方法及装置 |
CN107247811A (zh) * | 2017-07-21 | 2017-10-13 | 中国联合网络通信集团有限公司 | 基于Oracle数据库的SQL语句性能优化方法及装置 |
CN107391730A (zh) * | 2017-08-02 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种sql语句处理方法及装置 |
CN107480296A (zh) * | 2017-08-30 | 2017-12-15 | 杭州绿湾网络科技有限公司 | 基于sql的数据库性能分析方法和装置 |
CN107609028A (zh) * | 2017-08-09 | 2018-01-19 | 山东中创软件商用中间件股份有限公司 | 一种低效率sql语句的确定方法及装置 |
CN107688589A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库系统优化的方法及装置 |
CN108874642A (zh) * | 2018-05-25 | 2018-11-23 | 平安科技(深圳)有限公司 | Sql性能监控方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9313223B2 (en) * | 2013-03-15 | 2016-04-12 | Prevoty, Inc. | Systems and methods for tokenizing user-generated content to enable the prevention of attacks |
-
2018
- 2018-11-29 CN CN201811448519.0A patent/CN109299132B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000606A (zh) * | 2006-01-10 | 2007-07-18 | 英业达股份有限公司 | 数据处理系统及方法 |
CN102682117A (zh) * | 2012-05-15 | 2012-09-19 | 浪潮电子信息产业股份有限公司 | 一种数据库集群数据快速复制的方法 |
CN106156115A (zh) * | 2015-04-07 | 2016-11-23 | 中国移动通信集团云南有限公司 | 一种资源调度方法及装置 |
CN105808441A (zh) * | 2016-03-31 | 2016-07-27 | 浪潮通用软件有限公司 | 一种多维度性能诊断分析方法 |
CN106021071A (zh) * | 2016-05-04 | 2016-10-12 | 北京思特奇信息技术股份有限公司 | 一种监控sql运行过程的方法和系统 |
CN106126403A (zh) * | 2016-06-16 | 2016-11-16 | 北京中亦安图科技股份有限公司 | Oracle数据库故障分析方法和装置 |
CN107688589A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库系统优化的方法及装置 |
CN107247811A (zh) * | 2017-07-21 | 2017-10-13 | 中国联合网络通信集团有限公司 | 基于Oracle数据库的SQL语句性能优化方法及装置 |
CN107391730A (zh) * | 2017-08-02 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种sql语句处理方法及装置 |
CN107609028A (zh) * | 2017-08-09 | 2018-01-19 | 山东中创软件商用中间件股份有限公司 | 一种低效率sql语句的确定方法及装置 |
CN107480296A (zh) * | 2017-08-30 | 2017-12-15 | 杭州绿湾网络科技有限公司 | 基于sql的数据库性能分析方法和装置 |
CN108874642A (zh) * | 2018-05-25 | 2018-11-23 | 平安科技(深圳)有限公司 | Sql性能监控方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
"Back in Black: Towards Formal, Black Box Analysis of Sanitizers and Filters";George Argyros et al.;《IEEE Symposium on Security and Privacy》;20160818;第91-109页 * |
"银行核心业务系统数据库SQL优化方法";许威;《中国金融电脑》;20110731;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109299132A (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090776B (zh) | 一种视频审核的方法、装置、审核服务器和存储介质 | |
CN105630682A (zh) | 移动终端自动收集及分析崩溃的系统和方法 | |
CN106021079A (zh) | 一种基于用户频繁访问序列模型的Web应用性能测试方法 | |
CN108664635B (zh) | 数据库统计信息的获取方法、装置、设备和存储介质 | |
CN112632960B (zh) | 基于动态字段模板的日志解析方法及系统 | |
CN110471945B (zh) | 活跃数据的处理方法、系统、计算机设备和存储介质 | |
CN109684290B (zh) | 日志存储方法、装置、设备及计算机可读存储介质 | |
CN109299132B (zh) | Sql数据处理方法、系统以及电子设备 | |
EP3251298A1 (en) | Data extraction | |
CN113254255A (zh) | 一种云平台日志的分析方法、系统、设备及介质 | |
CN108153587A (zh) | 一种针对大数据平台的慢任务原因检测方法 | |
CN110795614A (zh) | 一种索引自动优化方法及装置 | |
CN112084180A (zh) | 一种监控车载应用质量的方法、装置、设备及介质 | |
CN106649344B (zh) | 一种网络日志压缩方法和装置 | |
CN111639470A (zh) | 一种处理器协同芯片的仿真测试方法、系统及相关组件 | |
CN110827049A (zh) | 一种数据推送方法及装置 | |
CN108924002B (zh) | 一种性能数据文件的解析方法、装置、设备及存储介质 | |
CN106469086B (zh) | 事件处理方法和装置 | |
CN114302227A (zh) | 基于容器采集的网络视频采集与解析的方法和系统 | |
CN109992475A (zh) | 一种日志的处理方法、服务器及存储介质 | |
JPH0887417A (ja) | コンパイラ装置 | |
KR100503148B1 (ko) | 스타일 및 컨텐트 정보 기반의 웹문서 처리 시스템 및 그방법 | |
CN118295995B (zh) | 一种多源地质数据标准化处理方法及系统 | |
CN100461687C (zh) | 解释内存数据块的数据结构的方法 | |
CN113051278B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |