本公开涉及计算机,具体涉及一种慢sql语句的性能分析方法、装置、系统、设备及介质。
背景技术:
1、数据库作为业务系统开发过程中常用的一种保存数据的方式,业务操作常需要对数据库进行频繁的sql操作。
2、当sql操作时间过长时,反馈到业务方就是用户体验差,操作长时间无反应,针对这种sql操作时间过长的行为称为慢sql。当慢sql发生时,需要对其执行情况进行及时的记录,方便后续开发人员快速定位到慢sql发生原因。
3、现有技术中通常采用日志的方式进行查询,工作量大且查询繁琐。
技术实现思路
1、针对上述情况,本申请实施例提供了一种慢sql语句的性能分析方法、装置、系统、设备及介质,以克服或者部分克服现有技术的不足。
2、第一方面,本申请实施例提供了慢sql语句的性能分析方法,所述方法通过sql性能分析系统实现,所述sql性能分析系统包括依次连接的sql拦截器、消息中间件、性能分析服务器、以及数据库,其中,所述sql拦截器部署于业务系统中;
3、所述方法应用于所述性能分析服务器,所述方法包括:
4、从所述消息中间件获取所述慢sql语句以及对应执行信息,其中,所述慢sql语句以及对应的执行信息是所述sql拦截器拦截到达所述业务系统的sql语句,执行所述sql语句并记录所述sql语句的执行信息,根据所述执行信息确定出若干慢sql语句,以及将所述慢sql语句和对应的执行信息推送至所述消息中间件的;
5、根据所述执行信息对所述sql语句进行性能分析,并将分析结果保存于所述数据库中,以供查询。
6、第二方面,本申请实施例还提供了一种慢sql语句的性能分析装置,所述装置包括:
7、获取单元,用于从所述消息中间件获取所述慢sql语句以及对应执行信息,其中,所述慢sql语句以及对应的执行信息是所述sql拦截器拦截到达所述业务系统的sql语句,执行所述sql语句并记录所述sql语句的执行信息,根据所述执行信息确定出若干慢sql语句,以及将所述慢sql语句和对应的执行信息推送至所述消息中间件的;
8、分析单元,用于根据所述执行信息对所述sql语句进行性能分析,并将分析结果保存于所述数据库中,以供查询。
9、第三方面,本申请实施例还提供了一种sql性能分析系统,所述sql性能分析系统包括依次连接的sql拦截器、消息中间件、性能分析服务器、以及数据库,其中,所述sql拦截器部署于业务系统中,所述性能分析服务器部署有上述的慢sql语句的性能分析装置;
10、所述sql拦截器,用于拦截到达所述业务系统的sql语句,执行所述sql语句并记录所述sql语句的执行信息,根据所述执行信息确定出若干慢sql语句,以及将所述慢sql语句和对应的执行信息推送至所述消息中间件;
11、所述消息中间件,用于存储所述sql拦截器的慢sql语句和对应的执行信息,以及用于将所述慢sql语句和对应的执行信息推送至所述性能分析服务器;
12、所述数据库,用于存储所述性能分析服务器发送的分析结果。
13、第四方面,本申请实施例还提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,可执行指令在被执行时使处理器执行上述任一所述的慢sql语句的性能分析方法。
14、第五方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储一个或多个程序,一个或多个程序当被包括多个应用程序的电子设备执行时,使得电子设备执行上述任一所述的慢sql语句的性能分析方法。
15、本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
16、本申请设计了一种sql性能分析系统,其包括依次连接的sql拦截器、消息中间件、性能分析服务器、以及数据库,并且将sql拦截器增设在业务系统中,当有sql语句到达业务系统时,会被sql拦截器拦截下来,在sql语句执行完毕后,sql拦截器会记录sql语句的执行情况,并根据执行情况确定出sql语句中的慢sql语句,并且将慢sql语句和对应的执行情况信息发送至消息中间件中,性能分析服务器可以从消息中间件获取到慢sql语句以及对应的执行情况信息,并根据执行信息对sql语句进行性能分析,并将分析结果保存于数据库中,开发人员直接从db数据库中拉取慢sql信息,针对分析结果优化相关代码逻辑。本申请通过在业务系统中增设sql拦截器,对sql语句进行拦截和执行,获取sql语句的执行情况信息,从而确定出其中的慢sql语句,并将慢sql语句和对应的执行情况发送到消息中间件中,以供性能分析服务器对慢sql语句进行性能分析,本申请实现了慢sql语句的自动识别,能够实时获取到慢sql语句具体的执行情况;且通过消息中间件的设置,对于慢sql的收集和分析进行解耦,有效的避免了收集和分析动作对业务系统的影响;将性能分析结果存储于数据库中,可供开发人员随时调用,给予开发人员优化代码逻辑提供可靠的指导意义。
1.一种慢sql语句的性能分析方法,其特征在于,所述方法通过sql性能分析系统实现,所述sql性能分析系统包括依次连接的sql拦截器、消息中间件、性能分析服务器、以及数据库,其中,所述sql拦截器部署于业务系统中;
2.根据权利要求1所述的方法,其特征在于,所述执行信息至少包括所述sql语句的执行开始时间和执行结束时间;所述慢sql语句是根据所述执行信息根据下述方法确定的:
3.根据权利要求1所述的方法,其特征在于,所述执行信息包括:所述sql语句的执行开始时间、执行结束时间、执行耗时、所属应用、业务系统物理地址、以及影响数据量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述执行信息对所述sql语句进行性能分析,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述sql拦截器集成于jar包,将所述jar包嵌入所述业务系统中,以将所述sql部署于所述业务系统中。
6.根据权利要求1所述的方法,其特征在于,所述消息中间件为kafka、flume、twitter、以及zeromq中的任意一种。
7.一种慢sql语句的性能分析装置,其特征在于,所述装置包括:
8.一种sql性能分析系统,其特征在于,所述sql性能分析系统包括依次连接的sql拦截器、消息中间件、性能分析服务器、以及数据库,其中,所述sql拦截器部署于业务系统中,所述性能分析服务器部署有权利要求7所述的慢sql语句的性能分析装置;
9.一种电子设备,包括:
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述权利要求1~6任一所述的慢sql语句的性能分析方法。