当前位置: 首页 > news >正文

定位慢查询

1、进入mysql命令行

mysql  -u  用户名  -p
退出mysql命令行 exit;

2、在mysql命令行中输入一下配置

show variables like '%slow%';
set global slow_query_log='ON'; (开启慢查询日志功能)
slow_query_log_file  (这个参数中存放的是慢查询日志文件的位置)show  variables like '%long%';
set global long_query_time=0.1;  (这个值是个数字,单位是秒,是一个标准时间,认为单条sql语句执行所花费的时间超过这个数字就算比较慢,就要把这个sql记录到慢查询日志文件中,实际操作过程中根据实际情况设定即可)show variables like '%log_queries%';
set  global  log_queries_not_using_indexes='ON'; (把未使用索引的sql也记录到慢查询日志文件中)

3、慢查询日志文件的位置slow_query_log_file这个参数值就是

show variables like '%log_file%';
/var/lib/mysql/localhost-slow.log如果有符合条件的sql语句,会被记录到这个文件中,后续分析这个文件即可

4、进一步缩小慢查询范围;使用工具mysqldumpslow

mysql自带了一个查看慢日志的工具mysqldumpslow
执行mysqldumpslow –h可以查看帮助信息。主要介绍两个参数-s和-t
-s 这个是排序参数,可选的有:al: 平均锁定时间ar: 平均返回记录数at: 平均查询时间c: 计数l: 锁定时间r: 返回记录t: 查询时间
-t n 显示头n条记录。
-g, 后边可以写一个正则匹配模式,大小写不敏感的
实例:
# 按照执行次数对查询进行排序,并展示执行最频繁的前 20 条 SQL 语句
mysqldumpslow -s c -t 20 host-slow.log
# 从慢查询日志中筛选并展示 按 “扫描行数” 排序的前 20 条最耗时查询
# 扫描行数:查询执行过程中,MySQL 为了找到符合条件的数据,实际扫描(读取)的行数(包括索引扫描或全表扫描的行数)
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句# 找到有问题的SQL
eg:
SELECT `id`, `name`
FROM `bf_product`
WHERE is_dropped = "S"
ORDER BY `display_order` DESC

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

慢查询开启方式:

image-20250716185257862

5、在Navicat中先将SQL语句跑通

6、然后使用explain分析SQL

explain
SELECT `id`, `name`
FROM `bf_product`
WHERE is_dropped = "S"
ORDER BY `display_order` DESC

执行后查看type的值

Explain的使用:

链接:https://blog.csdn.net/why15732625998/article/details/80388236?spm=1001.2014.3001.5506

image-20250716185314401

http://www.dtcms.com/a/282857.html

相关文章:

  • PHP面向对象进阶:魔术方法与对象交互技术
  • 【论文阅读 | CVPR 2023 |CDDFuse:基于相关性驱动的双分支特征分解的多模态图像融合】
  • DAP-seq技术服务常见问题解答:从样本准备到数据分析
  • 卷积神经网路--训练可视化
  • 开源一体化协作平台Colanode
  • 深度剖析C++生态系统:一门老牌语言如何在开源浪潮中焕发新生?
  • LeetCode 3201.找出有效子序列的最大长度 I:分类统计+贪心(一次遍历)
  • 开源基金/股票量化平台调研报告
  • 建筑项目如何管理多方协作风险
  • 数据库——转录组数据库大全
  • LangChain-6-消息持久化
  • Spring Boot 项目中数据同步之binlog和MQ
  • 消息队列的秘密 第二章:拜师学艺
  • ES组合使用must与should时的注意事项
  • 【Springer出版 EI检索】第十三届信息系统与计算技术国际会议诚邀请您参与 8.15-17日 上海举办
  • Spring之核心容器(IoC,DI,基本操作)详解
  • iOS 性能监控工具全解析 选择合适的调试方案提升 App 性能
  • Towards Low Light Enhancement with RAW Images 论文阅读
  • 玩转Docker | 使用Docker部署bender个人导航页工具
  • 力扣-146.LRU缓存机制
  • 主机安全---开源wazuh使用
  • 在 Ubuntu 上安装 GBase 8s 的完整实战指南
  • 立创EDA操作记录
  • Linux网卡与软件仓库快捷配置脚本
  • 基于Hadoop与LightFM的美妆推荐系统设计与实现
  • Leetcode Easy刷题:合并两个连续系列
  • 【Java入门到精通】(五)初识MySql数据库
  • Linux Ubuntu apt包管理器安装K8s1.30.1+Ingress-Nginx
  • 神经网络之权重初始化
  • 【深度学习】神经网络-part3