一种DML处理方法及装置与流程

文档序号:11918871阅读:249来源:国知局
一种DML处理方法及装置与流程

本发明涉及分布式系统领域,特别涉及一种DML处理方法及装置。



背景技术:

分布式MySQL节点众多,需要管理效率的提升。MySQL服务器的性能,很容易被一条慢查询拖垮,进而影响到用户体验。MySQL的主要作用是承担起了数据状态变化持久化存储。MySQL的性能一旦有波动,将会对整个分布式系统造成严重的影响。而编写高效的MySQL的DML(Data Manipulation Language,数据操作语言),对技术人员的素质要求非常高。随着数据的增长,某个原来正常运行的DML,可能随着业务的发展变成效率非常差的查询,比如因为索引计划不准或者索引没加,慢慢演变成慢查询。又或者是SQL的写法不符合高性能的要求,导致查询慢慢变慢。

现在是移动互联网时代,业务迅速发展,某个节点的某个表数据量可能非常巨大,当某个表查询慢查询的时候,DBA(Database Administrator,数据库管理员)需要分析查询语句的条件,然后进行索引添加测试,确认效果。对于多条件的查询,想要进行索引优化,对DBA和开发人员都有极大的挑战。

目前已有的方案都是打开MySQL的普通日志(generl log),然后用日志收集功能来同步general log,再进行人工分析。这种方案的弊端在于难以应对分布式MySQL的规模化和自动化要求,同时general log的信息不足于满足精细度的分析,比如DML运行时的锁的情况,事务隔离级别的情况。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种DML处理方法及装置。用以提高DML性能优化的效率。

本发明提供一种DML处理方法,包括:

接收输入的数据操作语言DML;

预设程序检测和分析所述数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL;

采用至少一种预设优化方式对所述结构化查询语言SQL进行优化,记录每一种优化方式的优化结果;

根据所述优化结果确定目标优化方式,将所述符合预设条件的结构化查询语言SQL和所述目标优化方式发送给开发人员。

在一个实施例中,所述预设程序为数据库监控代理程序,所述方法还可包括:

在MySQL服务器部署数据库监控代理程序;

所述预设程序检测和分析所述数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL,包括:

所述数据库监控代理程序链接到MySQL实例,实时采集所述数据操作语言DML,并根据预设规则对所述数据操作语言进行分析,分析出其中符合预设条件的结构化查询语言SQL。

在一个实施例中,所述方法还可包括:

将所述符合预设条件的结构化查询语言SQL发送到中心数据库;

所述采用至少一种预设优化方式对所述结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,包括:

优化程序监听所述中心数据库,将所述符合预设条件的结构化查询语言SQL对应的表结构和数据同步到临时数据库;

根据至少一种优化方式对所述结构化查询语言SQL进行优化建模,运行所述结构化查询语言SQL并对每一种优化方式进行性能记录。

在一个实施例中,所述优化结果可包括每一种优化方式的执行时间,所述根据所述优化结果确定目标优化方式,包括:

将执行时间最短的优化方式确定为目标优化方式。

在一个实施例中,所述分析出其中符合预设条件的结构化查询语言SQL,可包括:

分析出执行时长超过预设时长的结构化查询语言SQL。

本发明提供一种DML处理装置,包括:

接收模块,用于接收输入的数据操作语言DML;

检测和分析模块,用于预设程序检测和分析所述数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL;

优化模块,用于采用至少一种预设优化方式对所述结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,根据所述优化结果确定目标优化方式;

第一发送模块,用于将所述符合预设条件的结构化查询语言SQL和所述目标优化方式发送给开发人员。

在一个实施例中,所述预设程序为数据库监控代理程序,所述装置还可包括:

部署模块,用于在MySQL服务器部署数据库监控代理程序;

所述检测和分析模块,包括:

检测和分析子模块,用于所述数据库监控代理程序链接到MySQL实例,实时采集所述数据操作语言DML,并根据预设规则对所述数据操作语言进行分析,分析出其中符合预设条件的结构化查询语言SQL。

在一个实施例中,所述装置还可包括:

第二发送模块,用于将所述符合预设条件的结构化查询语言SQL发送到中心数据库;

所述优化模块,包括:

第一优化子模块,用于优化程序监听所述中心数据库,将所述符合预设条件的结构化查询语言SQL对应的表结构和数据同步到临时数据库;

第二优化子模块,用于根据至少一种优化方式对所述结构化查询语言SQL进行优化建模,运行所述结构化查询语言SQL并对每一种优化方式进行性能记录。

在一个实施例中,所述优化结果包括每一种优化方式的执行时间,所述优化模块,可包括:

确定子模块,用于将执行时间最短的优化方式确定为目标优化方式。

在一个实施例中,所述检测和分析模块,可包括:

分析子模块,用于分析出执行时长超过预设时长的结构化查询语言SQL。

本发明的实施例提供的技术方案可以包括以下有益效果:

上述技术方案,通过接收输入的数据操作语言DML,预设程序检测和分析数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL,采用至少一种预设优化方式对结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,根据优化结果确定目标优化方式,将符合预设条件的结构化查询语言SQL和目标优化方式发送给开发人员。上述技术方案使分布式MySQL海量DML可以得到性能的实时分析和性能保证,由于可以自动分析SQL可以如何优化,并最终给出优化建议,开发人员可以根据建议进行程序优化,进而提高业务稳定性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中一种DML处理方法的流程图;

图2为本发明实施例中另一种DML处理方法的流程图;

图3为本发明实施例中另一种DML处理方法的流程图;

图4为本发明实施例中另一种DML处理方法的流程图;

图5为本发明实施例中一种DML处理装置的框图;

图6为本发明实施例中另一种DML处理装置的框图;

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1所示为本发明实施例中一种DML处理方法的流程图,如图1所示,该DML处理方法包括以下步骤S11-S14:

步骤S11,接收输入的数据操作语言DML。

步骤S12,预设程序检测和分析数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL。

步骤S13,采用至少一种预设优化方式对结构化查询语言SQL进行优化,记录每一种优化方式的优化结果。

步骤S14,根据优化结果确定目标优化方式,将符合预设条件的结构化查询语言SQL和目标优化方式发送给开发人员。

在分布式系统中,众多应用服务器会对某一个节点的MySQL发起DML(查询,写入,更新)。本发明实施例能够实时检测MySQL DML,进而自动分析SQL可以如何优化,最终给出优化建议,开发人员可以根据建议进行程序优化,进而提高业务稳定性。

本发明实施例主要包含了三个部分,第一部分实时检测和收集MySQL DML的监控代理程序(agent程序),第二部分是对DML进行优化分析,从源数据库同步表信息到一个临时库,进而进行添加组合索引测试。第三部分是通知模块,通知开发人员。

本发明实施例的上述方法,通过接收输入的数据操作语言DML,预设程序检测和分析数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL,采用至少一种预设优化方式对结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,根据优化结果确定目标优化方式,将符合预设条件的结构化查询语言SQL和目标优化方式发送给开发人员。上述技术方案使分布式MySQL海量DML可以得到性能的实时分析和性能保证,由于可以自动分析SQL可以如何优化,并最终给出优化建议,开发人员可以根据建议进行程序优化,进而提高业务稳定性。

在一个实施例中,如图2所示,预设程序为数据库监控代理程序,该DML处理方法还可包括以下步骤S15:

步骤S15,在MySQL服务器部署数据库监控代理程序。

步骤S12可以实施为以下步骤S121:

步骤S121,数据库监控代理程序链接到MySQL实例,实时采集数据操作语言DML,并根据预设规则对数据操作语言进行分析,分析出其中符合预设条件的结构化查询语言SQL。

提供一个支持MySQL多实例的数据库监控代理程序(dbagent程序)dbagent程序,在MySQL服务器部署dbagent,dbagent程序链接到MySQL实例,实时采集DML,根据设定好的规则分析出可以进行优化的SQL。

在一个实施例中,如图3所示,该DML处理方法还可包括以下步骤S16:

步骤S16,将符合预设条件的结构化查询语言SQL发送到中心数据库。

步骤S13可以实施为以下步骤S131-S132:

步骤S131,优化程序监听中心数据库,将符合预设条件的结构化查询语言SQL对应的表结构和数据同步到临时数据库;

步骤S132,根据至少一种优化方式对结构化查询语言SQL进行优化建模,运行结构化查询语言SQL并对每一种优化方式进行性能记录。

将可以进行优化的SQL写入中心数据库,优化程序监听中心数据库,把SQL所操作的表同步到临时数据库,在临时数据库里面,针对SQL进行优化建模,每次建立新的模型,运行SQL并进行性能记录,最后根据性能记录计算出最优的优化方式,把可以优化的SQL和优化方式自动发送给对应的开发人员。

在一个实施例中,优化结果可包括每一种优化方式的执行时间,根据优化结果确定目标优化方式可实施为如下步骤A:

步骤A,将执行时间最短的优化方式确定为目标优化方式。

优化程序记录各种优化方式的数据,最后选出执行时间最少的方案,确定为目标优化方式。

在一个实施例中,分析出其中符合预设条件的结构化查询语言SQL可实施为步骤B:

步骤B,分析出执行时长超过预设时长的结构化查询语言SQL。

执行时长例如为1秒,当结构化查询语言SQL的执行时长超过1S时,即认为该SQL需要优化。

基于同一发明构思,本发明实施例还提供了一种DML处理装置,由于该装置所解决问题的原理与前述DML处理方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。

图4所示为本发明实施例中一种DML处理装置的框图,如图4所示,该DML处理装置包括:

接收模块41,用于接收输入的数据操作语言DML;

检测和分析模块42,用于预设程序检测和分析数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL;

优化模块43,用于采用至少一种预设优化方式对结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,根据优化结果确定目标优化方式;

第一发送模块44,用于将符合预设条件的结构化查询语言SQL和目标优化方式发送给开发人员。

在一个实施例中,预设程序为数据库监控代理程序,如图5所示,该DML处理装置还可包括:

部署模块45,用于在MySQL服务器部署数据库监控代理程序;

检测和分析模块42,包括:

检测和分析子模块,用于数据库监控代理程序链接到MySQL实例,实时采集数据操作语言DML,并根据预设规则对数据操作语言进行分析,分析出其中符合预设条件的结构化查询语言SQL。

在一个实施例中,如图6所示,该DML处理装置还可包括:

第二发送模块46,用于将符合预设条件的结构化查询语言SQL发送到中心数据库;

优化模块43,包括:

第一优化子模块431,用于优化程序监听中心数据库,将符合预设条件的结构化查询语言SQL对应的表结构和数据同步到临时数据库;

第二优化子模块432,用于根据至少一种优化方式对结构化查询语言SQL进行优化建模,运行结构化查询语言SQL并对每一种优化方式进行性能记录。

在一个实施例中,优化结果包括每一种优化方式的执行时间,优化模块43,可包括:

确定子模块,用于将执行时间最短的优化方式确定为目标优化方式。

在一个实施例中,检测和分析模块42,可包括:

分析子模块,用于分析出执行时长超过预设时长的结构化查询语言SQL。

本发明实施例的上述装置,通过接收输入的数据操作语言DML,预设程序检测和分析数据操作语言DML,分析出其中符合预设条件的结构化查询语言SQL,采用至少一种预设优化方式对结构化查询语言SQL进行优化,记录每一种优化方式的优化结果,根据优化结果确定目标优化方式,将符合预设条件的结构化查询语言SQL和目标优化方式发送给开发人员。上述技术方案使分布式MySQL海量DML可以得到性能的实时分析和性能保证,由于可以自动分析SQL可以如何优化,并最终给出优化建议,开发人员可以根据建议进行程序优化,进而提高业务稳定性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1