掌桥专利:专业的专利平台
掌桥专利
首页

一种数据库SQL运行可视化分析的方法和装置

文献发布时间:2023-06-19 18:37:28


一种数据库SQL运行可视化分析的方法和装置

技术领域

本发明涉及数据库领域,特别是涉及一种数据库SQL运行可视化分析的方法和装置。

背景技术

数据库系统中的结构化查询语言(Structured Query Language,简写为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运行日志中根据SEL关键字定位每一个SQL记录对应的文本串的位置,提取出文本串内容,直至识别出EXECTIME关键字,结束文本串的提取操作;根据SQL语句的关键字对文本串进行解析,获取SQL语句执行时的记录信息。

优选的,根据SQL语句的关键字对文本串进行解析,具体包括:解析文本串中每个关键字对应的字段内容,并读取相应参数值,将字段内容和参数值作为记录信息,其中,关键字包括:执行时间关键字EXECTIME、等待时间关键字WAIT、SQL参数关键字PARAMS和执行行数关键字ROWCOUNT。

优选的,根据运行记录表中的记录信息获取SQL运行的统计数据,具体包括:基于SQL执行时间、SQL类别及时间范围,查询出各类别SQL运行散点图数据;和/或,基于SQL执行次数、SQL类别及时间范围,查询出各类别SQL运行QPS图数据;和/或,基于SQL执行时间、SQL类别及SQL执行次数,查询出各类别SQL运行统计图数据。

优选的查询出各类别SQL运行散点图数据,具体包括:根据EXECTIME关键字获取SQL执行时间,根据OPTYPE关键字获取SQL类别,查询时间范围之内且操作类型为SEL的查询语句的执行时间、启动时间、执行用户和执行文本内容。

优选的,查询出各类别SQL运行QPS图数据,具体包括:在数据库的子查询中根据运行SQL语句的起始时间进行分组,查询出SQL语句的运行起始时间和操作类型,统计每个分组内的各类别SQL语句的执行次数。

优选的,查询出各类别SQL运行统计图数据,具体包括:根据最小执行时间以及操作类别查询出SQL语句的执行用户、执行文本、执行时间,并根据执行文本进行分组;统计每个分组中执行文本的执行次数、执行用户和执行时间。

优选的,读取数据库系统保存的SQL运行日志文件之前,还包括:启用服务器SQL日志记录功能,将服务器运行的SQL记录信息保存至SQL运行日志文件中。

另一方面,本发明提供了一种数据库SQL运行可视化分析的装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的数据库SQL运行可视化分析的方法。

与现有技术相比,本发明实施例的有益效果在于:由SQL运行日志文件中提取SQL语句的记录信息,并由缓存库和相应的运行记录表进行保存,再根据运行记录表中的信息获得可视化的统计数据。该方法能够对SQL运行日志文件进行自动解析,并自动完成统计结果的可视化呈现。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种数据库SQL运行可视化分析的方法流程图;

图2为本发明实施例提供的另一种数据库SQL运行可视化分析的方法流程图;

图3为本发明实施例提供的另一种数据库SQL运行可视化分析的方法的可视化分析结果的散点图形式;

图4为本发明实施例提供的另一种数据库SQL运行可视化分析的方法的可视化分析结果的QPS折线图形式;

图5为本发明实施例提供的另一种数据库SQL运行可视化分析的方法的可视化分析结果的统计分析图形式;

图6为本发明实施例提供的一种数据库SQL运行可视化分析的装置结构示意图;

其中,附图标记如下:

11:处理器;12:存储器。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。

此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。

实施例1:

为了解决数据库当前SQL运行日志不具备统计分析及可视化监控的问题,本实施例提出一种数据库SQL运行可视化分析方法及系统,解析数据库的SQL日志,提取出运行SQL信息将其插入缓存库,然后从SQL运行散点图、每秒查询率(Queries-per-second,简写为QPS)折线图、SQL耗时统计图等维度,对数据库SQL运行情况进行可视化展示。

如图1所示,本发明实施例提供的数据库SQL运行可视化分析的方法具体步骤如下:

步骤101:建立用于可视化分析的缓存库,在缓存库中建立用于保存记录信息的运行记录表。

本实施例中,需要对SQL运行日志进行分析,根据日志中SQL语句运行的记录信息进行统计分析,以实现SQL的可视化分析。为了便于利用数据库的功能完成统计分析,可以使用数据库和相应的表结构对记录信息进行保存和整合,将记录信息存入缓存库的运行记录表中。在实际实施中,具体的运行记录表结构根据需要进行分析的记录信息进行设计。

具体实施中,可以独立创建一个新的数据库作为缓存库,初始化创建缓存库,在创建的缓存库中建立运行记录表。也可以配置现有数据库的地址信息,将已有的数据库配置为缓存库,并在配置为缓存库的数据库中建立运行记录表。进一步的,为了便于后续的统计分析,可以对运行记录表建立相应的索引,加快统计分析时数据的查询效率。

步骤102:读取数据库系统保存的SQL运行日志文件,在SQL运行日志文件中提取进行可视化分析需使用的记录信息,并将提取到的记录信息插入运行记录表中。

本实施例中,对SQL运行日志文件进行分析,以获取SQL运行的记录信息。在实际实施中,可以根据需要在文件变化时进行实时读取数据,也可以按照指定周期读取。

读取文件中的数据后,即可从SQL运行日志文件中提取的SQL运行时的记录信息。提取到的记录信息主要包括:运行SQL语句、SQL执行时间、等待时间、SQL参数、执行行数、DML类型等。提取到相应记录信息后,将其插入步骤101中创建的缓存库的运行记录表中,以供后续进行统计分析。

在实际实施中,为了生成SQL运行日志文件,还需要启用服务器SQL日志记录功能,将服务器运行的SQL记录信息保存至SQL运行日志文件中。例如,在达梦数据库中可以开启数据库SQL运行日志svr_log参数,通过参数启用日志记录功能。

步骤103:根据运行记录表中的记录信息获取SQL运行的统计数据,并使用可视化统计图展示统计数据对应的SQL运行可视化分析结果。

将SQL运行的记录信息存入缓存库的运行记录表中后,即可对运行记录表中的记录信息进行统计分析,获取SQL运行的统计数据。在实际实施中,可以从SQL运行散点图、QPS折线图、SQL耗时统计图等分析角度和呈现方式维护统计分析,并展示数据库系统SQL运行效果图。

进一步的,由于本实施例中的记录信息都使用统计表进行保存,因此,在进行统计分析时,可以使用数据库系统的分析函数、分组、排序、计算等功能进行统计分析,以提高统计分析的效率。

进一步的,在具体实施中,本实施例中的可视化分析结果是基于对SQL语句的记录信息进行分析统计获得,因此,在显示时,可视化图像可以直接与相应的SQL语句对应显示。同时,由于使用了统计表对记录数据进行缓存,因此,可以快速获取统计分析结果,从而能够支持显示方式、坐标范围等的动态调整。

经过本实施例中提供的步骤101-步骤103后,即可完成SQL运行日志文件的解析,并对解析出的记录数据进行统计分析,实现SQL运行的可视化呈现。

在具体实施中,如图2所示,步骤102中提取进行可视化分析需使用的SQL记录信息的过程,可以使用以下步骤实现。

步骤201:增量读取SQL运行日志文件,在SQL运行日志中根据SEL关键字定位每一个SQL记录对应的文本串的位置,提取出文本串内容,直至识别出EXECTIME关键字,结束文本串的提取操作。

为了提高读取和分析效率,本实施例采用增量读取的方式。读取SQL运行日志文件后,记录当前读取偏移以及文件大小,并在下次读取周期中从当前偏移开始进行读取,同时读取全部文件增量内容。增量读取后,向缓存库的运行记录表中写入的记录数据也相应为增量数据。

在日志文件中,运行动作的相关数据按行进行记录,因此解析时也按行进行解析。对于读取的文件增量内容,解析每一行的记录内容,查找SQL开始的标签,并提取每个SQL记录对应的日志文本串内容,直至结束标签。

步骤202:根据SQL语句的关键字对文本串进行解析,获取SQL语句执行时的记录信息。

提取到文本串后,还需要根据SQL语句的关键字对文本串进行解析,解析文本串中每个关键字对应的字段内容,并读取相应参数值,字段内容和参数值作为记录信息。需要解析的主要关键字包括:执行时间关键字EXECTIME、等待时间关键字WAIT、SQL参数关键字PARAMS和执行行数关键字ROWCOUNT。在实际实施中,可以使用正则匹配等方式进行文本串解析。

解析出记录信息后,还需要将获取到的记录信息通过数据库接口插入到缓存库的运行记录表中。在实际实施中,可以在获取到一定数量的数据后进行批量插入,以减少插入过程的资源消耗。

经过本实施例中提供的步骤201-步骤202后,即可完成SQL运行日志文件的解析,获取到需要的记录信息。

在实际实施中,可以根据不同的需要选择不同的统计分析方式,以获取步骤103的SQL运行的统计数据。以下提供一些常见的可视化统计分析方式作为实例,实际实施时不限于以下方式。

(1)SQL运行散点图数据

基于SQL执行时间、SQL类别及时间范围,查询出各类别SQL运行散点图数据。

具体的:根据EXECTIME关键字获取SQL执行时间,根据OPTYPE关键字获取SQL类别,查询时间范围之内且操作类型为SEL的查询语句的执行时间、启动时间、执行用户和执行文本内容。

(2)SQL运行QPS图数据

基于SQL执行次数、SQL类别及时间范围,查询出各类别SQL运行QPS图数据。

具体的:在数据库的子查询中根据运行SQL语句的起始时间进行分组,查询出SQL语句的运行起始时间和操作类型,统计每个分组内的各类别SQL语句的执行次数。

(3)SQL运行统计图数据

基于SQL执行时间、SQL类别及SQL执行次数,查询出各类别SQL运行统计图数据。

具体的:根据最小执行时间以及操作类别查询出SQL语句的执行用户、执行文本、执行时间,并根据执行文本进行分组。统计每个分组中执行文本的执行次数、执行用户和执行时间。

通过上述实例中提供的方式,可以根据运行记录表中的记录信息实现SQL运行相关数据的统计分析,为可视化呈现提供数据支持。进一步的,为了便于数据的存档记录或跨平台使用,也可以将统计数据以文件形式进行保存,例如使用excel等文件格式进行保存。

本实施例提供的数据库SQL运行可视化分析的方法,基于缓存库保存解析记录的结果,可以针对统计分析的特点,对运行记录表创建相应索引,加快查询速度,同时可充分利用数据库系统的分析函数、分组、排序、计算等功能,从多维度进行SQL运行统计分析,以便于用户便捷的了解系统运行整体情况和实时状态。

实施例2:

基于实施例1提供的数据库SQL运行可视化分析的方法,本实施例提供了一个具体实施场景中的实例,以说明实施例1中提供的方法的实际执行效果。

本实施例中以达梦数据库为实际执行场景,其它数据库平台可以参考以下方式,根据相应平台的实际情况和实际需求进行调整。

达梦数据库开启svr_log服务器日志功能后,数据库系统运行过程中执行的SQL语句将会记录在配置的文件目录下。

相应的运行日志文件具体示例内容参考如下:

在上述示例达梦数据库SQL运行日志中,“[SEL]”标签表示后面为相应的查询SQL语句;在[SEL]标签之前内容则记录该语句所属的事务ID、会话句柄、语句句柄、执行用户等信息;在SQL语句最后记录有“EXECTIME”和“ROWCOUNT”关键字,分别表示SQL语句的执行时间和执行行数。执行语句中的?号表示需要进行参数替换,其中参数值可根据标签PARAMS搜索查询。

根据步骤101:初始化一个缓存库,并创建SQL的运行记录表log_commit,运行记录表log_commit的结构及索引设计如下。

根据步骤102:解析运行日志文件,根据SQL语句标签如“[SEL]”定位SQL文本串的位置,提取出文本串内容,直至识别出“EXECTIME”关键字,结束SQL串的提取操作。继续读取EXECTIME和ROWCOUTN关键字的内容,获取SQL执行时间和命中行数。同时获取[SEL]标签内容的前述信息;对于其他类型的SQL语句,如[INS]、[UPD]、[DEL]、[DDL]、[CAL]等类别的提取方式类似,不再详述。

上述SQL文本串中的记录信息提取后缓存至内存中,待达到一定批量数据后,通过数据库接口批量插入运行记录表log_commit中。

根据步骤103,基于运行记录表log_commit表中的SQL记录信息,进行SQL统计分析展示统计图形。以下各种可视化统计数据可以根据需要独立使用,也可以根据需要汇总后同时使用。

(1)SQL运行散点图数据

基于SQL执行时间、SQL类别及时间范围,查询出各类别SQL运行散点图数据。本实例中,SQL可视化分析程序可配置参数,用于筛选出符合条件的SQL运行语句,如配置散点图中展示SQL语句的最大执行时间,使用MAX_EXETIME表示;最小执行时间,使用MIN_EXETIME表示;在如下实施例SQL分析查询语句中,根据exetime执行时间字段以及optype类型字段,查询出大于最小执行时间并且操作类型为“SEL”查询的语句的执行时间、启动时间、执行用户、执行SQL文本内容,用于散点图图形化展示;其他操作类型的查询分析类似,在此不再详述。对应的可视化分析结果如图3所示,本散点图反映了SQL语句执行时间的分布情况,图中横坐标为SQL语句的执行时间点,纵坐标为SQL语句执行的时长。

(2)SQL运行QPS图数据

基于SQL执行次数、SQL类别及时间范围,查询出各类别SQL运行QPS图数据。本实例中,首先在子查询中根据运行SQL的起始时间进行分组,查询出SQL的运行起始时间和操作类型;然后基于此分组,统计每个分组内的各类别SQL执行次数。对应的可视化分析结果如图4所示,用于展示QPS折线图,反映数据库系统的SQL执行类别分布情况,图中横坐标为SQL类别的执行时间点,纵坐标为执行次数,不同的折线代表不同类型的SQL语句类别。

(3)SQL运行统计图数据

基于SQL执行时间、SQL类别及SQL执行次数,查询出各类别SQL运行统计图数据。本实例中,首先根据最小执行时间以及操作类别查询出SQL语句的执行用户、SQL文本串、执行时间,并根据SQL文本进行分组;然后统计每个分组中SQL文本的执行次数、执行用户、90%执行时间等。其中MAX_EXETIME和MIN_EXETIME为配置的筛选参数。对应的可视化分析结果如所示,将图3中的执行时长和图4中的执行次数相结合,反映了执行次数在0-150次的SQL语句的执行平均耗时情况以及类别分布,图中横坐标为执行次数,纵坐标为执行时长。

通过上述实例可见,实施例1提供的方法能够通过运行记录表便捷的对记录信息进行统计查询,以快速获取用于显示的统计数据。其他操作类别的查询语句类似,在此不再详述。

使用上述方式生成统计数据后,即可通过图像化接口展示输出进行相应的可视化输出。

由本实施例中的实例可见,实施例1中提供的数据库SQL运行可视化分析的方法,能够实现SQL运行日志文件的解析,并基于缓存库和运行记录表便捷的完成记录信息的统计分析,

实施例3:

在上述实施例1至实施例2提供的数据库SQL运行可视化分析的方法的基础上,本发明还提供了一种可用于实现上述方法的数据库SQL运行可视化分析的装置,如图6所示,是本发明实施例的装置架构示意图。本实施例的数据库SQL运行可视化分析的装置包括一个或多个处理器11以及存储器12。

其中,图6中以一个处理器11为例。在实际实施中,为了提高系统集成度和可维护性,实施例1至实施例2中提供的方法可以在处理器11中以功能模块的形式执行。具体的,功能模块包括:

(1)SQL运行日志实时读取解析模块。用于根据步骤102实时读取解析SQL运行日志文件,提取出所需SQL文本串内容。进一步的,SQL运行日志实时读取解析模块包括SQL文本读取功能线程、SQL文本解析功能线程、SQL入库功能线程。SQL文本读取功能线程,通过设置读取间隔,定时读取SQL数据库系统生成的SQL运行日志文件的文本内容,获取增量文本内容,同时记录读取偏移和当前文件大小,在下一读取周期中定位偏移和获取增量内容。SQL文本解析功能线程,基于SQL运行日志文件的日志格式,通过SQL语句的开始和结束标签获取原始运行的SQL语句;通过执行时间、等待时间、执行行数、替换参数等关键字,提取出SQL语句的运行信息。SQL入库功能线程,基于数据库通用访问接口,将内存中缓存的SQL记录信息批量插入到缓存库的运行记录表中。

(2)结果缓存库模块,用于建立步骤101中的缓存库和运行记录表,存储根据步骤102提取出的SQL记录信息用于统计分析。进一步的,结果缓存库模块包括缓存库、运行记录表。根据需要统计分析的SQL记录信息,在缓存库中创建用于SQL运行分析的运行记录表,用于存储日志解析模块提取出的SQL记录信息,供统计分析使用。

(3)可视化图形生成模块,基于运行记录表中存储的SQL记录信息,根据步骤103,采用不同维度的统计分析查询语句生成可视化的SQL运行统计图形,包括散点图、折线图等。进一步的,可视化图形生成模块包括统计数据查询功能线程、可视化图形生成功能线程、统计数据文件保存功能线程。统计数据查询功能线程,主要基于不同的统计分析维度,使用SQL语句对缓存库中存储的SQL记录信息进行统计查询,得出统计数据。可视化图形生成功能线程,主要基于统计数据,利用图形生成库,生成散点图、折线图等图像,进行可视化展示。统计数据文件保存功能线程,用于将查询的统计数据生成文件进行保存,如使用excel进行保存,便于统计分析。

处理器11和存储器12可以通过总线或者其他方式连接,图6中以通过总线连接为例。

存储器12作为一种数据库SQL运行可视化分析方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例2中的数据库SQL运行可视化分析方法。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行数据库SQL运行可视化分析的装置的各种功能应用以及数据处理,即实现实施例1至实施例2的数据库SQL运行可视化分析的方法。

存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至处理器11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

程序指令/模块存储在存储器12中,当被一个或者多个处理器11执行时,执行上述实施例1至实施例2中的数据库SQL运行可视化分析的方法,例如,执行以上描述的图1和图2所示的各个步骤。

本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(Read Only Memory,简写为:ROM)、随机存取存储器(Random AccessMemory,简写为:RAM)、磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

技术分类

06120115638116