首页 > 数据库 >在 MySQL中,如何定位慢查询?(SQL调优,调优经验)

在 MySQL中,如何定位慢查询?(SQL调优,调优经验)

时间:2023-07-01 20:14:43浏览次数:52  
标签:MySQL 接口 查询 调优 SQL 日志

一、什么业务场景会出现慢查询的现象
  聚合查询
  多表查询
  表数据量过大查询
  深度分页查询

   表象:页面加载过慢、接口压测响应时间过长(超过1s)

二、如何定位慢查询?
  1、介绍以下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢,压测的结果大概5秒钟)
  2、我们系统中当时采用了运维工具(Skywalking),可以监测出哪个接口,最终因为是 sql 的问题
  3、在 mysql 中开启了慢日志查询,我们设置的值就是 2 秒,一旦sql执行超过 2 秒 就会记录到日志中(调试阶段)

三、实战场景
面试官:

  MySQL中,如何定位慢查询?

候选人:
  嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统 Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接口哪部分比较慢,这里可以看到 SQL 的具体的执行时间,所以可以定位是哪个 sql 出了问题。
  如果,项目中没有这种运维的监控系统,其实在 MySQL 中也提供了慢日志查询的功能,可以在 MySQL 的系统配置文件中开启这个慢日志的功能,并且也可以设置 SQL 执行超过多少时间来记录到一个日志文件中,我记得上一个项目配置的是 2 秒,只要 SQL 执行的时间超过了 2 秒 就会记录到日志文件中,我们就可以在日志文件找到执行比较慢的 SQL 了。

标签:MySQL,接口,查询,调优,SQL,日志
From: https://www.cnblogs.com/Rover20230226/p/17519831.html

相关文章

  • postgresql离线安装及双机热备
    前言:本文是做主库的热备份到从库,即主库中的数据即时备份到从库,第1-5步是要在主机和备机都要执行,第6步是主机的数据库初始化,第8步是备机的数据库初始化1.安装依赖(主机,备机)root用户在一台有网的电脑上先下载好所需的依赖yuminstall--downloadonly--downloaddir=/tmp/zlib-d......
  • 多端全栈项目实战:大型商业级代驾业务全流程落地SpringCloudAlibaba+Mysql+Redis+Docke
    多端全栈项目实战:大型商业级代驾业务全流程落地SpringCloudAlibaba+Mysql+Redis+Docker+Uniapp+Vue3随着移动互联网的快速发展和智能手机的普及,代驾服务成为了一个日益火热的行业。在这个行业中,如何构建一个具备商业级可靠性和扩展性的代驾业务系统成为了关键问题。本文将介绍一......
  • ThinkPHP6.0 链式SQL语句
    ThinkPHP6.0 链式SQL语句查询单个数据$user=Db::query('select*from`user`');$user=Db::table('user')->where('UserID',1001)->find();//查询结果为空返回null$user=Db::table('user')->where('UserID',1001)->findO......
  • 从mysql主从复制原理分析故障及延时场景!
    在很多的情况下生产环境所发生的问题,实际上都可以通过其工作原理来解决例如:mysql主从复制原理:  1.当用户在主库中写入数据时,将sql语句的执行写入binlog二进制文件中2.从库会生成一个i/o线程用来监听binlog日志文件的变化,若binlog文件发生变化,那么i/o线程将会提取binlog日志......
  • IDEA MyBatis Log 插件,打印SQL语句
    打开Settings->plugins搜索插件MyBatisLog点击安装,完成后重启IDEA即可。点击Tools,选择MyBatisLogPlugin,会在下方打开一个窗口,这个窗口会输出mapper执行的SQL语句。......
  • MySQL联合索引生效验证
    建表、添加数据,用于测试CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENT,`gid`varchar(20)NOTNULL,`cid`int(11)DEFAULTNULL,`uid`int(11)DEFAULTNULL,`name`varchar(255)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY......
  • jmeter接口测试 -- 连接数据库(MySQL)
    三个步骤一、下载MySQL的连接驱动1、先查看MySQL的版本1)服务器上查看:mysql--version 2)在连接工具上查看 2、下载连接驱动,下载地址:https://dev.mysql.com/downloads/connector/j/1)选择系统(windows系统才选择我下图中......
  • 启动mysql时报错Failed to start mysqld.service: Unit not found
    问题描述:启动mysql时报错Failedtostartmysqld.service:Unitnotfound,如下所示:数据库:mysql5.7.42系统:rhel7.31、问题重现--mysql安装过程[root@leo-mysql-master~]#yumlocalinstallhttps://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm[root@leo......
  • yum安装mysql时出现Public key for mysql-community-common-5.7.42-1.el7.x86_64.rpm
    问题描述:yum安装mysql时出现Publickeyformysql-community-common-5.7.42-1.el7.x86_64.rpmisnotinstalled告警,如下所示:数据库:mysql5.7.42系统:rhel7.31、问题重现[root@leo-mysql-master~]#yuminstall-ymysql-community-serverLoadedplugins:langpacks,product......
  • mysql 联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导
    mysql联合表查询从表即使有索引依然ALL的一个原因-索引ALL解决,字符编码方式不一致导致全表搜索那就是主表和从表的关联字段的编码方式不一样!!!产生的现象:解决之后,正确的使用了t2.order_noref索引,而不是ALL检查mysql主体编码方式,是否由于后来新建的表的关联字段和之前的主表的......