MySQL面经——如何定位慢SQL?

慢SQL出现的情况汇总

一般出现慢SQL,也就是以下的几种情况
1、聚合查询
2、多表查询
3、表数据量过大
4、深度分页查询
对于我们使用方来说,表象就是页面数据加载过慢,接口压测时间过长(超过1s)

定位慢SQL工具

方案一

通过开源工具
1、调试工具
Arthas
Arthas 是阿里巴巴开源的 Java 诊断工具,主要用于定位和复现生产环境中的问题。它可以在线排查问题,动态追踪 Java 代码,实时监控 JVM 状态等。通过 Arthas,开发人员可以轻松地获取指定类的加载路径和异常信息,查看类的代码信息,以及动态替换代码进行调试。此外,Arthas 还可以解决一些难以在线上 debug 的问题,如分支错误、类加载问题等。
Arthas 支持 JDK 6+,可以在 Linux、Mac 和 Windows 等操作系统上运行,采用命令行交互模式,提供丰富的 Tab 自动补全功能,方便进行问题的定位和诊断。使用 Arthas,开发人员可以更加高效地排查和解决问题,提高开发效率。

2、运维工具
Prometheus、Skywalking
Prometheus介绍:
Prometheus是一个开源的系统监控报警框架,旨在提供灵活、可扩展的数据模型和高效的查询语言,并且具备自动服务发现功能。它的主要特点是:
数据模型灵活:Prometheus采用多维数据模型,通过时间序列中的度量名和键值对来区分不同的数据维度。所有的度量都可以设置任意的多维标签,使得数据模型更加灵活,并支持聚合、切割和切片操作。
高效存储:Prometheus采用高效的数据存储方式,能够直接将数据存储在本地,并且支持快速拉取查询。它还支持通过中间网关进行推送时间,以实现数据采集的实时性。
自动服务发现:Prometheus能够通过服务发现机制动态管理监控目标,自动发现和监控集群中的所有可被监控的对象。
客户端本地存储:Prometheus的客户端本地也会存储监控数据,服务端定时来拉取想要的数据。
可扩展性:Prometheus具有解耦的特点,如告警模块、代理模块等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。此外,Prometheus支持通过多种语言的SDK和不同用途的Exporter进行配置和使用,如通过HTTP通信来对服务端提供信息上报(server去pull信息)。
界面简洁:Prometheus的界面简洁,易于使用和配置。为了获得良好的监控体验,通常需要搭配Grafana使用。

Skywalking介绍:

Skywalking是一个分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
Skywalking的核心部分包括Agent(探针)和OAP Service。Agent运行在各个服务实例中,负责采集服务实例的Trace、Metrics等数据,然后通过gRPC方式上报给SkyWalking后端。OAP Service则负责处理监控数据,例如接受Skywalking Agent的监控数据,并存储在数据库中(本案例使用Elasticsearch),同时接受Skywalking Webapp的前端请求,从数据库查询数据,并返回数据给前端。
Skywalking是一个为微服务架构、云原生架构和基于容器架构设计的分布式系统应用程序性能监视工具,具有强大的性能和可视化能力。

方案二

使用MySQL自带慢日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志
如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息 

/var/lib/mysql/localhost-slow.log

需要注意的是,慢日志收集的功能一般在生产环境中是不会开启的,因为开其他也会损耗一部分MySQL的性能!

至此,关于MySQL的如何定位慢SQL介绍完毕,关于MySQL的面经还是很重要而且面试必问的问题,后续还会持续更新相关面经,敬请期待!

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值